О2_Routing_МенеджерЦелевойФункции.УстановитьШтрафНедобора
Устанавливает штраф за недобор мягкой нижней границы значения ресурса в указанной точке маршрута. В целевую функцию добавляется: Коэффициент × max(0, Граница − ЗначениеРесурса). Основной способ вызова: Модель.ЦелеваяФункция().УстановитьШтрафНедобора(Ресурс, ТочкаМаршрута, Граница, Коэффициент).
Синтаксис
Модель.ЦелеваяФункция().УстановитьШтрафНедобора(
Ресурс,
ТочкаМаршрута,
Граница,
Коэффициент
)
Параметры
- Ресурс — ФиксированнаяСтруктура, Строка, Число — ресурс модели: объект, имя или индекс (с нуля).
- ТочкаМаршрута — ФиксированнаяСтруктура, Число — точка маршрута, в которой задаётся мягкая граница:
- ФиксированнаяСтруктура — объект точки маршрута;
- Число — индекс точки (с нуля).
- Граница — Число — мягкая нижняя граница значения ресурса.
- Коэффициент — Число — штраф за единицу недобора.
Возвращаемое значение
- ОбработкаОбъект.О2_Routing_МенеджерЦелевойФункции — текущий менеджер; позволяет строить цепочки вызовов.
Описание
Метод Модель.ЦелеваяФункция().УстановитьШтрафНедобора(...) реализует «мягкое» нижнее ограничение: вместо жёсткого запрета на недобор порога решатель учитывает штраф пропорционально нарушению. Это позволяет, например, моделировать желательное, но не строго обязательное время прибытия.
В отличие от жёстких ограничений РесурсВТочкеМаршрутаНеМенее, данный штраф не делает решение недопустимым — он лишь увеличивает значение целевой функции.
Получить точку маршрута для передачи в метод можно через Модель.ТочкиМаршрута().
Пример
Клиент1 = Модель.Узлы().Получить("Клиент1");
ТочкаКлиента1 = Модель.ТочкиМаршрута().ПолучитьПоУзлу(Клиент1);
// Мягкое ограничение: желательно прибыть в Клиент1 не позже 09:00 (540 мин)
// Каждая минута недобора (опоздание) стоит 50 единиц
Модель.ЦелеваяФункция().УстановитьШтрафНедобора("Время", ТочкаКлиента1, 540, 50);