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

Программный интерфейс модели маршрутизации

Модель маршрутизации предназначена для задач поиска оптимальных маршрутов на графе узлов: классической задачи коммивояжёра (TSP), задачи о маршрутах транспортных средств (VRP), а также их расширений — мульти-депо, грузоподъёмности, временных окон, погрузки-доставки, дизъюнкций. Концептуальное введение в модель — глоссарий, состав, mental-модель и развёрнутые примеры — собрано в разделе Создание модели → Модель маршрутизации. Текущий раздел — справочник методов API.

Программный интерфейс модели декомпозирован на менеджеры объектов: узлы, точки маршрута, транспортные средства, транзиты, ресурсы, ограничения, целевая функция, выражения, интервалы, переменные. Каждый менеджер доступен как метод-аксессор объекта модели. Такая декомпозиция обеспечивает структурирование прикладного кода при работе со сложными задачами VRP.

Начало работы

Жизненный цикл модели — три этапа: Построитель параметров → Модель → Решение. Топология (узлы и ТС) собирается через построитель до создания модели; остальное добавляется через менеджеры готового объекта модели.

// 1. Построитель — узлы и ТС
Построитель = О2
.Модели()
.МодельМаршрутизации()
.СоздатьПостроительПараметровМодели();

Депо = Построитель.ДобавитьУзел("Депо");
Клиент1 = Построитель.ДобавитьУзел("Клиент1");
Клиент2 = Построитель.ДобавитьУзел("Клиент2");

Построитель.ДобавитьТранспортноеСредство(Депо, Депо, "ТС1");

// 2. Модель — транзиты, ресурсы, ограничения, целевая функция
Модель = Построитель.СоздатьМодель();

Модель.Транзиты().ДобавитьМатрицу(
О2.Утилиты().Массив(
О2.Утилиты().Массив( 0, 10, 15),
О2.Утилиты().Массив(10, 0, 20),
О2.Утилиты().Массив(15, 20, 0)
),
"расстояния"
);

Модель.ЦелеваяФункция().УстановитьКоэффициентТранзита("расстояния");

// 3. Решение
Решение = Модель.Решить();

Если Решение.РешениеНайдено() Тогда
Сообщить("Стоимость маршрута: " + Решение.ЗначениеЦелевойФункции());
КонецЕсли;

Состав раздела

См. также