Программный интерфейс модели маршрутизации
Модель маршрутизации предназначена для задач поиска оптимальных маршрутов на графе узлов: классической задачи коммивояжёра (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. Решение
Решение = Модель.Решить();
Если Решение.РешениеНайдено() Тогда
Сообщить("Стоимость маршрута: " + Решение.ЗначениеЦелевойФункции());
КонецЕсли;
Состав раздела
См. также
- Создание модели — обзор классов моделей
- СоздатьМодель (точка входа)
- Типы моделей