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

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

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

Синтаксис

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

Параметры

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

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

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

Описание

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

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

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

Пример

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

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

См. также