Точки маршрута
Группа методов менеджера О2_Routing_МенеджерТочекМаршрута, обеспечивающих создание объектов-адресаторов ТочкаМаршрута — единицы обращения к конкретной позиции в маршруте. Менеджер доступен через О2.Модели().МодельМаршрутизации().СоздатьМодель().ТочкиМаршрута().
Зачем нужна ТочкаМаршрута
В модели маршрутизации узел (О2_Routing_Узел) — это элемент графа, а точка маршрута — это позиция в конкретном маршруте транспортного средства. Разница принципиальна в сценарии shared depot: один физический узел-депо является стартовой и конечной точкой сразу для нескольких транспортных средств. Внутренний решатель хранит отдельный Start и End для каждого ТС, поэтому обратиться к «старту ТС1 из общего депо» через один лишь узел невозможно — нужна пара (узел, ТС).
ТочкаМаршрута — иммутабельная ФиксированнаяСтруктура одного из трёх типов:
| Тип | Значение Тип | Описание |
|---|---|---|
| Позиция старта ТС | "ТочкаМаршрутаСтарт" | Начало маршрута конкретного ТС |
| Позиция финиша ТС | "ТочкаМаршрутаФиниш" | Конец маршрута конкретного ТС |
| Регулярный узел | "ТочкаМаршрута" | Клиентский (не-депо) узел графа |
Поля структуры:
- Тип — строка-маркер (см. таблицу выше).
- Дискриминатор — битовый набор (служебное, для проверки принадлежности к группе типов).
- Индекс — 0-based индекс точки в реестре модели.
- Узел —
ФиксированнаяСтруктураузла, на базе которого создана точка (для всех трёх типов). - ТранспортноеСредство —
ФиксированнаяСтруктураТС (только для типовСтартиФиниш).
Методы
| Метод | Описание |
|---|---|
| ПолучитьСтарт | Позиция старта конкретного транспортного средства |
| ПолучитьФиниш | Позиция финиша конкретного транспортного средства |
| ПолучитьПоУзлу | Позиция клиентского узла (не-депо) |
| Получить | Получить точку маршрута по 0-based индексу |
| Количество | Общее число точек маршрута в модели |
Пример
Построитель = О2
.Модели()
.МодельМаршрутизации()
.СоздатьПостроительПараметровМодели();
Депо = Построитель.ДобавитьУзел("Депо");
Клиент1 = Построитель.ДобавитьУзел("Клиент1");
Построитель.ДобавитьТранспортноеСредство(Депо, Депо, "ТС1");
Модель = Построитель.СоздатьМодель();
ТС1 = Модель.ТранспортныеСредства().Получить("ТС1");
Клиент1 = Модель.Узлы().Получить("Клиент1");
// Получаем точки маршрута
СтартТС1 = Модель.ТочкиМаршрута().ПолучитьСтарт(ТС1);
ФинишТС1 = Модель.ТочкиМаршрута().ПолучитьФиниш(ТС1);
ТочкаКлиента = Модель.ТочкиМаршрута().ПолучитьПоУзлу(Клиент1);