Перейти к основному содержимому

О2_Routing_МенеджерЦелевойФункции.УстановитьШтрафНедобора

Устанавливает штраф за недобор мягкой нижней границы значения ресурса в указанной точке маршрута. В целевую функцию добавляется: Коэффициент × max(0, Граница − ЗначениеРесурса). Основной способ вызова: Модель.ЦелеваяФункция().УстановитьШтрафНедобора(Ресурс, ТочкаМаршрута, Граница, Коэффициент).

Синтаксис

Модель.ЦелеваяФункция().УстановитьШтрафНедобора(
Ресурс,
ТочкаМаршрута,
Граница,
Коэффициент
)

Параметры

  • РесурсФиксированнаяСтруктура, Строка, Число — ресурс модели: объект, имя или индекс (с нуля).
  • ТочкаМаршрутаФиксированнаяСтруктура, Число — точка маршрута, в которой задаётся мягкая граница:
    • ФиксированнаяСтруктура — объект точки маршрута;
    • Число — индекс точки (с нуля).
  • ГраницаЧисло — мягкая нижняя граница значения ресурса.
  • КоэффициентЧисло — штраф за единицу недобора.

Возвращаемое значение

  • ОбработкаОбъект.О2_Routing_МенеджерЦелевойФункции — текущий менеджер; позволяет строить цепочки вызовов.

Описание

Метод Модель.ЦелеваяФункция().УстановитьШтрафНедобора(...) реализует «мягкое» нижнее ограничение: вместо жёсткого запрета на недобор порога решатель учитывает штраф пропорционально нарушению. Это позволяет, например, моделировать желательное, но не строго обязательное время прибытия.

В отличие от жёстких ограничений РесурсВТочкеМаршрутаНеМенее, данный штраф не делает решение недопустимым — он лишь увеличивает значение целевой функции.

Получить точку маршрута для передачи в метод можно через Модель.ТочкиМаршрута().

Пример

Клиент1 = Модель.Узлы().Получить("Клиент1");
ТочкаКлиента1 = Модель.ТочкиМаршрута().ПолучитьПоУзлу(Клиент1);

// Мягкое ограничение: желательно прибыть в Клиент1 не позже 09:00 (540 мин)
// Каждая минута недобора (опоздание) стоит 50 единиц
Модель.ЦелеваяФункция().УстановитьШтрафНедобора("Время", ТочкаКлиента1, 540, 50);

См. также