Шаблон Excel для Яндекс Маршрутизации заполняется на трёх обязательных листах: Orders (заказы), Vehicles (машины или курьеры) и Depot (склад). Всё остальное необязательно. Для первого запуска хватает номера заказа, адреса или координат, окна времени и веса у заказа, одной смены у машины и названия, координат и часов работы склада. Остальные столбцы лучше оставить пустыми и подключать позже, по мере накопления опыта. Допустимые форматы файла: xls, xlsx и xlsm.

Три листа, без которых расчёт не пойдёт

Лист Orders устроен непривычно: одна строка означает пункт (location), и заказов в привычном смысле здесь нет. Доставка из точки A в точку B занимает две строки, pickup и delivery. Отдельная строка нужна и для старта или финиша, если они не на складе. В строке задают идентификатор (id или ref, рекомендуется id), адрес или координаты point.lat и point.lon, окно time_window, вес shipment_size.weight_kg или число мест shipment_size.units и время обслуживания.

На листе Vehicles можно описывать абстрактные ресурсы и назначать конкретных водителей позже. Укажите всех, кто доступен на момент планирования, а для нанимаемого транспорта максимальное число машин каждого типа. Достаточно заполнить хотя бы одно поле, но смена нужна обязательно: shifts.0.time_window с временем работы. Вместимость capacity.weight_kg, capacity.units и capacity.volume_cbm нужна для корректного распределения.

Лист Depot содержит одну строку, а если складов несколько, используется лист Depots. Оба листа сразу в файле держать нельзя. Если машины не стартуют и не возвращаются на склад, укажите координаты любой точки, например офиса. Окно работы можно задать широким, от 00:00 до 23:59.

Окна времени и сервисное время

В поле time_window записывают относительное окно вроде 10:00 до 18:00: оно сдвигается относительно даты планирования. Если окон несколько, вместо него заполняют time_windows.N.time_window, но вместе эти поля использовать нельзя. Жёсткость задаёт hard_window: TRUE означает жёсткое окно, пустое значение означает мягкое. Для мягких окон действуют штрафы, по умолчанию 1000 за факт нарушения и 17 за минуту.

Сервисное время бывает двух видов: shared_service_duration_s относится к адресу, service_duration_s к самому заказу. Время смены включает выезд со склада и возвращение: алгоритм считает начало и конец маршрута частью работы машины.

Типичные ошибки заполнения

  • Изменены заголовки. Строки с названием поля и техническим именем атрибута трогать нельзя. Порядок столбцов произвольный, но пустых столбцов между данными быть не должно.
  • Лист назван по-своему. Листы с другими названиями при загрузке игнорируются, и данные из них не попадут в расчёт.
  • Заполнены взаимоисключающие поля: time_window вместе с time_windows, hard_window вместе с hard_time_window, Depot вместе с Depots.
  • У машины нет смены (хотя бы одна обязательна) или в окне смены не учтено время выезда и возврата. В таком случае часть заказов может уйти в нераспределённые.
  • Идентификатор склада совпал с идентификатором заказа. Склад должен иметь свой уникальный id.
  • Нулевая стоимость. Поля cost.km и cost.hour не должны быть равны нулю.
  • Числовые типы через запятую без пробела. На листе Incompatible_order_types значения 1, 2 нужно писать с пробелом, иначе Excel прочитает 1,2 как дробное число и правило не сработает. Значения load_types на листе Orders чувствительны к регистру.
  • Адреса с опечатками и без координат. При загрузке они дают ошибки, а проблемные адреса можно найти на вкладке «Карта» или удалить заказы, которые не удалось найти.
  • Суммарный вес и число мест заказов больше вместимости всех машин. Часть заказов нераспределена по определению.
  • Все окна сделаны жёсткими. Чем жёстче условия, тем выше шанс, что часть заказов не вместится в маршруты.

Пример на 20 заказах

Условный пример: адреса заменены на обозначения, цифры придуманы для иллюстрации и не отражают расчёт сервиса. Допустим, на день есть две машины вместимостью по 800 кг и 40 мест, смена с 08:30 до 19:00, склад работает с 08:00 до 20:00.

idaddresstime_windowshipment_size.weight_kgshipment_size.unitsservice_duration_shard_window
ORD-01Точка 01, район А09:00-13:00453300
ORD-02Точка 02, район А09:00-13:001206600TRUE
ORD-03Точка 03, район А10:00-12:00302300TRUE
ORD-04Точка 04, район Б13:00-18:00804300
ORD-05Точка 05, район Б09:00-18:00151180
ORD-06Точка 06, район Б14:00-16:0020010900TRUE
ORD-07Точка 07, район В09:00-18:00553300
ORD-08Точка 08, район В09:00-13:00705300
ORD-09Точка 09, район В13:00-18:00252180
ORD-10Точка 10, район Г10:00-15:00954300
ORD-11Точка 11, район Г09:00-18:00402300
ORD-12Точка 12, район Г15:00-18:00603300TRUE
ORD-13Точка 13, район А09:00-18:00352180
ORD-14Точка 14, район А11:00-14:001508600
ORD-15Точка 15, район Б09:00-13:00201180
ORD-16Точка 16, район В12:00-17:00854300
ORD-17Точка 17, район Г09:00-18:00503300
ORD-18Точка 18, район Г13:00-16:001105600
ORD-19Точка 19, район Б09:00-18:00653300
ORD-20Точка 20, район В10:00-13:00754300

Сначала проверьте арифметику. Вес всех двадцати заказов 1425 кг, мест 75, суммарное время обслуживания 7020 секунд, то есть 117 минут. Две машины вмещают 1600 кг и 80 мест, запас небольшой, поэтому часть жёстких окон может не сойтись. Если вместо двух машин поставить одну, до расчёта видно, что 1425 кг в 800 кг не поместятся. Четыре заказа с жёсткими окнами (ORD-02, ORD-03, ORD-06, ORD-12) стоит смотреть в результате в первую очередь.

Проверка файла перед запуском

  1. Откройте вкладки Orders, Vehicles и Depot и убедитесь, что названия листов и строки заголовков не менялись.
  2. Сверьте id: у заказов они уникальны, склад с ними не совпадает.
  3. Посчитайте суммы по весу, местам и объёму и сравните с вместимостью машин.
  4. Проверьте, что у каждой машины есть смена и что её окно покрывает выезд и возврат.
  5. Загрузите файл кнопкой «Загрузить файл» или перетаскиванием в раздел «Планирование». Ошибки нужно исправить до расчёта, предупреждения расчёту не мешают.
  6. На вкладке «Настройки» задайте дату маршрута, часовой пояс, способ перемещения и качество решения «Оптимально», затем нажмите «Планировать».

Если расчёт идёт дольше 15 минут, его можно остановить кнопкой «Остановить» и запустить позже. Для старта в документации есть три шаблона: простой, расширенный и полный. Цвет заголовков показывает важность: красные нужны почти всегда, чёрные уточняют модель доставки, серые для опытных пользователей.

Частые вопросы

Где взять шаблон Excel для планирования? В документации есть шаблон и тестовый пример, которые можно заполнить своими данными.

Нужен ли API, чтобы загрузить заказы? Нет, заказы можно загрузить файлом Excel в веб-интерфейсе. API нужен для интеграции с вашей системой.

Читайте также

Раздел: Автоматизация логистики, оптимизация доставки и работы курьерской службы

Похожие записи