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

О2_Routing_МенеджерОграничений.ГруппаАльтернативныхУзлов

Регистрирует группу альтернативных узлов — набор узлов, из которых маршрут может посетить только часть с уплатой штрафа за каждый пропущенный узел. Метод вызывается на менеджере: Модель.Ограничения().ГруппаАльтернативныхУзлов(Узлы, Штраф, НормаПосещений).

Синтаксис

Модель.Ограничения().ГруппаАльтернативныхУзлов(Узлы, Штраф, НормаПосещений)

Параметры

  • УзлыМассив — узлы группы. Элементы массива — объекты узлов, их индексы (0-based) или имена.
  • ШтрафЧисло — штраф за каждый непосещённый узел группы, добавляемый к целевой функции.
  • НормаПосещенийЧисло, Неопределено — максимальное число посещаемых узлов из набора. Если не указано, ограничение не накладывается (можно посетить все или ни одного).

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

  • ФиксированнаяСтруктура — объект группы альтернативных узлов.

Описание

Группы альтернативных узлов применяются в двух типичных сценариях:

  • Пропуск необязательных узлов: каждый узел оборачивается в группу из одного элемента с заданным штрафом — посещение узла перестаёт быть жёстким требованием, и решатель самостоятельно решает, выгоднее ли посетить узел или заплатить штраф.
  • Выбор одной из альтернатив: группа из нескольких узлов с НормаПосещений = 1 — например, выбор одной из доступных точек выгрузки.

Пример

// Необязательный клиент со штрафом 1000 за пропуск
Модель.Ограничения().ГруппаАльтернативныхУзлов(О2.Утилиты().Массив("a"), 1000);

// Из трёх альтернативных точек посещаем строго одну
Модель.Ограничения().ГруппаАльтернативныхУзлов(
О2.Утилиты().Массив("точка1", "точка2", "точка3"),
0, // штраф (за пропуск двух из трёх — ноль, выбор любой допустим)
1 // <-- норма посещений — посещается ровно одна
);

См. также