Шаблон 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.
| id | address | time_window | shipment_size.weight_kg | shipment_size.units | service_duration_s | hard_window |
|---|---|---|---|---|---|---|
| ORD-01 | Точка 01, район А | 09:00-13:00 | 45 | 3 | 300 | |
| ORD-02 | Точка 02, район А | 09:00-13:00 | 120 | 6 | 600 | TRUE |
| ORD-03 | Точка 03, район А | 10:00-12:00 | 30 | 2 | 300 | TRUE |
| ORD-04 | Точка 04, район Б | 13:00-18:00 | 80 | 4 | 300 | |
| ORD-05 | Точка 05, район Б | 09:00-18:00 | 15 | 1 | 180 | |
| ORD-06 | Точка 06, район Б | 14:00-16:00 | 200 | 10 | 900 | TRUE |
| ORD-07 | Точка 07, район В | 09:00-18:00 | 55 | 3 | 300 | |
| ORD-08 | Точка 08, район В | 09:00-13:00 | 70 | 5 | 300 | |
| ORD-09 | Точка 09, район В | 13:00-18:00 | 25 | 2 | 180 | |
| ORD-10 | Точка 10, район Г | 10:00-15:00 | 95 | 4 | 300 | |
| ORD-11 | Точка 11, район Г | 09:00-18:00 | 40 | 2 | 300 | |
| ORD-12 | Точка 12, район Г | 15:00-18:00 | 60 | 3 | 300 | TRUE |
| ORD-13 | Точка 13, район А | 09:00-18:00 | 35 | 2 | 180 | |
| ORD-14 | Точка 14, район А | 11:00-14:00 | 150 | 8 | 600 | |
| ORD-15 | Точка 15, район Б | 09:00-13:00 | 20 | 1 | 180 | |
| ORD-16 | Точка 16, район В | 12:00-17:00 | 85 | 4 | 300 | |
| ORD-17 | Точка 17, район Г | 09:00-18:00 | 50 | 3 | 300 | |
| ORD-18 | Точка 18, район Г | 13:00-16:00 | 110 | 5 | 600 | |
| ORD-19 | Точка 19, район Б | 09:00-18:00 | 65 | 3 | 300 | |
| ORD-20 | Точка 20, район В | 10:00-13:00 | 75 | 4 | 300 |
Сначала проверьте арифметику. Вес всех двадцати заказов 1425 кг, мест 75, суммарное время обслуживания 7020 секунд, то есть 117 минут. Две машины вмещают 1600 кг и 80 мест, запас небольшой, поэтому часть жёстких окон может не сойтись. Если вместо двух машин поставить одну, до расчёта видно, что 1425 кг в 800 кг не поместятся. Четыре заказа с жёсткими окнами (ORD-02, ORD-03, ORD-06, ORD-12) стоит смотреть в результате в первую очередь.
Проверка файла перед запуском
- Откройте вкладки Orders, Vehicles и Depot и убедитесь, что названия листов и строки заголовков не менялись.
- Сверьте id: у заказов они уникальны, склад с ними не совпадает.
- Посчитайте суммы по весу, местам и объёму и сравните с вместимостью машин.
- Проверьте, что у каждой машины есть смена и что её окно покрывает выезд и возврат.
- Загрузите файл кнопкой «Загрузить файл» или перетаскиванием в раздел «Планирование». Ошибки нужно исправить до расчёта, предупреждения расчёту не мешают.
- На вкладке «Настройки» задайте дату маршрута, часовой пояс, способ перемещения и качество решения «Оптимально», затем нажмите «Планировать».
Если расчёт идёт дольше 15 минут, его можно остановить кнопкой «Остановить» и запустить позже. Для старта в документации есть три шаблона: простой, расширенный и полный. Цвет заголовков показывает важность: красные нужны почти всегда, чёрные уточняют модель доставки, серые для опытных пользователей.
Частые вопросы
Где взять шаблон Excel для планирования? В документации есть шаблон и тестовый пример, которые можно заполнить своими данными.
Нужен ли API, чтобы загрузить заказы? Нет, заказы можно загрузить файлом Excel в веб-интерфейсе. API нужен для интеграции с вашей системой.
Читайте также
- Яндекс Маршрутизация: как работает сервис, инструкция
- Как включить Яндекс Маршрутизацию: регистрация и тест
- Планирование маршрутов курьеров: зоны, окна, очередность
- Яндекс Маршрутизация: как работает, тарифы и эффект
- Подключение 1С к Яндекс Маршрутизации: модули и внедрение
- Почему заказы не распределились и что исправить
Раздел: Автоматизация логистики, оптимизация доставки и работы курьерской службы
