О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));
Модель.Ограничения().ЦиклГрафа(Дуги);