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

О2_CP_SAT_МенеджерДуг.Добавить

Создаёт дугу ориентированного графа, соединяющую два узла. Если дуга задействована в решении, булево выражение Используется принимает значение Истина. Дуга может быть петлёй (оба узла совпадают). Вызывается через Модель.Дуги().Добавить(...).

Синтаксис

Модель.Дуги().Добавить(Узел1, Узел2, Используется)

Параметры

  • Узел1Число — номер (индекс) первого узла. Должен быть целым числом.
  • Узел2Число — номер (индекс) второго узла. Должен быть целым числом. Если Узел2 = Узел1, дуга является петлёй.
  • ИспользуетсяФиксированнаяСтруктура — булево выражение, принимающее значение Истина, если данная дуга используется в решении.

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

  • ФиксированнаяСтруктура — данные созданной дуги графа.

Описание

Создаваемые дуги используются как «строительные блоки» для ограничений вида «обход графа» — ЦиклГрафа (требует, чтобы активные дуги образовали один Гамильтонов цикл) и МножественныеЦиклыГрафа (требует, чтобы активные дуги образовали несколько циклов с общим узлом 0). Сами эти ограничения остаются в менеджере Ограничения().

Пример

Активна01 = Модель.Переменные().ДобавитьБулеву("a_01");
Активна12 = Модель.Переменные().ДобавитьБулеву("a_12");
Активна20 = Модель.Переменные().ДобавитьБулеву("a_20");

Дуги = Новый Массив;
Дуги.Добавить(Модель.Дуги().Добавить(0, 1, Активна01));
Дуги.Добавить(Модель.Дуги().Добавить(1, 2, Активна12));
Дуги.Добавить(Модель.Дуги().Добавить(2, 0, Активна20));

Модель.Ограничения().ЦиклГрафа(Дуги);

См. также