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