Возможные причины нераспределенных заказов
Координаты
Ошибки в координатах заказов или склада
Возможные ошибки:
Не хватит времени для доставки заказа без значительного нарушения временного окна. Сумма штрафа за нарушение временного окна превысит штраф за недоставку заказа.
Некорректные геокоординаты: lat = 0, lon = 0.
Типовые ошибки в данных:
-
Широта и долгота перепутаны местами.
-
Из-за некорректных данных по результатам геокодирования может получиться, что некоторые координаты сильно отличаются от остальных — заказ оказался в другом городе или стране.
Как исправить
Проверить корректность координат склада и заказов.
Пример
Для курьера запланировано 11 заказов. У заказа 11 указаны неправильные координаты — он не будет выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Исправлены координаты заказа 11. В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Габариты
Заказ не помещается ни в один автомобиль
Возможные ошибки:
Не хватает грузоподъемности.
Не хватает вместимости по объему.
Не хватает вместимости по количеству шт. (units).
Как исправить
Убедиться, что заказ можно поместить хотя бы в одно из транспортных средств.
Проверять вместимость по всем параметрам:
-
weight_kg
— вместимость по весу; -
volume
— вместимость по объему; -
units
— вместимость по грузовым единицам.
При необходимости поправить вместимость транспортных средств.
Следует учитывать дополнительные нюансы:
-
У транспортного средства могут быть определены значения
capacity.limit
— ограничение по загрузке в процентах от указанной вместимости. -
Вместимость транспортного средства может быть задана в пользовательских единицах измерения.
Пример
Для курьера запланировано 11 заказов. Вес заказа 11 — 950 кг, вместимость автомобиля — 700 кг, поэтому этот заказ не будет выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
В решение добавлен второй автомобиль с вместимостью 1110 кг. В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Заказы суммарно не помещаются в имеющиеся автомобили
Количества автомобилей недостаточно для такого объема заказов.
Возможные ошибки:
Автомобиль перегружен.
Заказ не был распределен, так как пеший курьер перегружен.
Пеший курьер перегружен.
Как исправить
Убедиться, что суммарной вместимости транспортных средств хватит, чтобы перевезти все заказы. При необходимости поправить вместимость или добавить дополнительные транспортные средства.
Выяснить, могут ли автомобили делать несколько рейсов. Суммарная вместимость автомобилей может быть меньше объема заказов, при этом параметр max_runs
должен быть больше 1 как минимум для некоторых автомобилей, либо для автомобилей должно быть указано несколько смен.
Пример
Для курьера запланировано 14 заказов. Общий вес заказов (2200 кг) превышает грузоподъемность автомобиля (700 кг). В результате 4 заказа не будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
В решение добавлен автомобиль с грузоподъемностью 1800 кг. В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Жесткие временные окна
Жесткое окно заказа
Заказ нельзя выполнить без нарушения окна, а окно заказа жесткое.
Возможные ошибки:
Нарушение жесткого временного окна заказа: ожидаемое опоздание {lateness} (в секундах).
Заказ не может быть выполнен без нарушения жесткого временного окна
hard_time_window
.
Типовые ошибки в данных:
-
Окно заказа заканчивается слишком рано — в него нельзя успеть без опоздания с учетом указанных времени начала смены курьера и времени начала работы склада.
-
Заказ с жестким окном находится слишком далеко — чтобы успеть на него, нужно выезжать намного раньше. Необходимо указать соответствующее время начала смены курьера и время начала работы склада.
Как исправить
Сделать все окна на заказах мягкими, расширить окна заказов или использовать оба варианта.
Пример
Для курьера запланировано 10 заказов. Семь заказов нужно выполнить до 11:00 (time_window
= 7:00-11:00), и для них заданы жесткие временные окна. В результате курьер не успеет доставить все заказы, и заказ 4 не будет выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Расширено временное окно для заказа 4 — до 13:00 (time_window
= 7:00-13:00). В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Жесткое окно смены курьера
Какой-то из заказов нельзя выполнить без нарушения окна смены курьера, а окно смены жесткое.
Возможные ошибки:
Не хватает времени для выполнения заказа без значительного нарушения временного окна. Сумма штрафа за нарушение временного окна превысит штраф за недоставку заказа.
Как исправить
Сделать все окна на сменах мягкими, добавить дополнительные смены для машин, расширить границы смен машин или использовать несколько подходящих вариантов.
Пример
Маршрут состоит из 11 заказов. Для смены курьера задано жесткое временное окно. Длительность смены с 7:00 - 16:00 (time_window
= 07:00-16:00). Курьер не успеет доставить все заказы за смену, поэтому заказ 11 не будет выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Расширено временное окно смены курьера до 16:30 (time_window
= 07:00-16:30). В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Жесткое окно склада
Автомобиль не успевает выполнить заказы и вернуться на склад до завершения окна склада, а окно склада жесткое. Возникает, только если задан параметр return_to_depot = true
.
Возможные ошибки:
Не хватает времени для выполнения заказа без значительного нарушения временного окна. Сумма штрафа за нарушение временного окна превысит штраф за недоставку заказа.
Как исправить
Расширить окно склада или сделать временное окно склада мягким.
Пример
Время работы склада с 7:00 до 16:00 (time_window
= 07:00-16:00), окно склада жесткое. После доставки заказов курьер должен вернуться на склад return_to_depot
= true
. Автомобиль не успеет вернуться на склад после доставки заказов, поэтому заказ 11 не будет выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Расширено временное окно склада до 17:00 (time_window
= 07:00-17:00). В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Несовместимость заказов
Суммарной вместимости автомобилей недостаточно
Суммарной вместимости автомобилей недостаточно с учетом несовместимости заказов.
Возможные ошибки:
В запланированных маршрутах присутствуют типы заказов несовместимых с этим заказом (
incompatible_load_types
).
Тип заказа
load_types
несовместим с другими заказами группы {group}, в которой есть заказы с типами: {types}.
Как исправить
Убрать лишние значения несовместимых заказов incompatible_load_types
или убрать лишние значения load_types
с заказов.
Пример
Для курьера запланировано 10 заказов с типами:
- 8 заказов —
fish
; - 2 заказа —
milk
.
При этом fish
и milk
несовместимы для доставки в одном автомобиле. В результате 2 заказа с типом milk
не будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Для двух заказов с типом milk
изменен тип на fish
. В результате все заказы будут выполнены на одном автомобиле.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Теги
У автомобиля нет требуемых свойств
Возможные ошибки:
Для автомобилей заданы несовместимые с заказом теги: {tags}.
Теги, указанные для автомобилей, несовместимы с тегами заказов.
Как исправить:
Проверьте правильность написания тегов или добавьте значения в поле vehicle.tags
у автомобиля.
Нет подходящего автомобиля для заказа
На заказе указан тег, которого нет ни на одном из автомобилей.
Возможные ошибки:
Заказ несовместим с автомобилями, так как для них не указаны необходимые теги: {tags}.
Не указаны необходимые теги.
Типовые ошибки в данных:
-
В написании тегов допущена опечатка (фактически на заказах и на машинах тег разный).
-
В написании тегов используется разный регистр (теги чувствительны к регистру).
Как исправить
Проверить правильность написания тегов или убрать лишние значения required_tags
на заказах.
Пример
В написании тегов у заказа и курьера допущена ошибка: у заказа 7 задан тег required_tags
= холодильник
, у курьера — tags
= Холодильник
.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Исправлено название тега заказа 7 (required_tags
= Холодильник
). В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Суммарной вместимости автомобиля недостаточно
На заказах и автомобилях указаны теги, но по определенному тегу суммарная вместимость автомобилей слишком мала по сравнению с объемом заказов.
Возможные ошибки:
Автомобиль перегружен.
Не хватает грузоподъемности.
Как исправить
Убрать лишние значения required_tags
на заказах, проставить нужный тeг на большем количестве автомобилей или использовать оба варианта.
Пример
2 курьера должны выполнить 14 заказов. Заказ 10 и заказ 11 с тегом required_tags
= tag_1
и общим весом 460 кг. Тег задан для курьера 1, грузоподъемности его автомобиля не хватит для выполнения заказов с этим тегом. В результате заказ 11 не выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Удален тег tag_1
у заказа 11. В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Геозоны
Заказ относится к неподходящей геозоне
Указанной геозоны нет ни у одного автомобиля в allowed_zones
(и нет автомобиля без allowed_zones
) или есть у всех автомобилей в forbidden_zones
.
Возможные ошибки:
Заказ находится в запрещенной геозоне.
Заказ находится за пределами разрешенных для посещения геозон.
Заказ несовместим с автомобилями, так как он относится к запрещенным для них геозонам: {zones}.
Заказ несовместим с автомобилями, так как не входит ни в одну из разрешенных для них геозон: {zones}.
Как исправить
Изменить геозоны для автомобиля так, чтобы все заказы можно было доставить.
Пример 1
Для курьера задана публичная геозона vehicles.allowed_zones
= public_inside_ttk
, территория внутри ТТК. Ни один заказов не расположен в геозоне курьера, поэтому они не будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Изменено поле vehicles.allowed_zones
у курьера — удалена привязка к конкретной геозоне. В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Пример 2
Курьер занимается доставкой продуктов. Он посещает дарксторы, дожидается готовности заказов, и развозит их клиентам. Дарксторы (заказы pickup
) расположены в геозоне курьера, а адреса клиентов (заказы delivery
) находятся за ее пределами. В результате курьер не может доставить заказы клиентам.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Изменено значение allowed_zones
у курьера — удалена привязка к конкретной зоне. В результате заказы клиентам будут доставлены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Пример 3
Курьер работает в компании по переработке электроники. Он посещает адреса клиентов, чтобы забрать у них ненужные электронные устройства и доставить их в центр обработки. Адреса клиентов (заказы pickup
) расположены в геозоне курьера, а центр обработки (заказ delivery
) находится за ее пределами. В результате курьер не может доставить товары от клиентов в центр обработки.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Изменено значение allowed_zones
у курьера — удалена привязка к конкретной зоне. В результате товары будут доставлены в центр обработки.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Связанные заказы
Невозможно выполнить все связанные заказы
Заказы связаны между собой, например типами pickup
и delivery
. Если один из заказов не распределен, то не будет распределен и связанный с ним заказ.
Возможные ошибки:
Заказ относится к связанной группе заказов, которая не может быть доставлена в рамках одного рейса.
Заказы из одной группы (
location_groups
или связанныеpickup
-delivery
заказы) не могут быть привязаны к разным курьерам черезplanned_route
илиvisited_locations
.
Как исправить
Удалить связь между заказами или исправить ошибки.
Пример
Для курьера назначено 14 заказов. Для заказа 7 (заказ delivery
) задан тег required_tags
= Холодильник
. У автомобиля такого тега нет, поэтому заказ 7 не выполнен. Также не выполнен заказ 14 (заказ pickup
), так как он связан с заказом 7.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
У заказа 7 удален тег, которого нет у курьера — теперь заказ 14 и заказ 7 могут быть доставлены. В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Штрафы
Слишком низкие значения штрафов за невыполнение заказа
Установлено низкое значение опции penalty.drop
.
Возможные ошибки:
Не хватит времени для доставки заказа без значительного нарушения временного окна. Сумма штрафа за нарушение временного окна превысит штраф за недоставку заказа.
Стоимость доставки заказа выше, чем штраф за его недоставку
penalty.drop
.
Как исправить
Изменить значения penalty.drop
. Они должны быть на 2-3 порядка больше, чем остальные стоимости, и не должны быть равны 0. По умолчанию это значение равно 1 000 000.
Пример
Для курьера запланировано 10 заказов. У заказа 3 слишком низкое значение penalty.drop
(penalty.drop
= 10), поэтому заказ не будет выполнен.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Изменено значение penalty.drop
у заказа 3 (penalty.drop
= 1000000). В результате все заказы будут выполнены.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Автоматическое планирование не может распределить большой заказ
Возможные ошибки:
Автомобиль перегружен.
Типовые ошибки в данных:
-
В списке заказов есть один или несколько больших грузов и много маленьких.
-
В списке доступных к использованию много разнотоннажных автомобилей.
-
Большие грузы помещаются по условиям вместимости только в некоторые автомобили из списка доступных.
-
Загрузка транспортных средств высокая.
См. раздел Пропорциональный штраф за невыполнение заказа.
Как исправить
Включить опцию options.weighted_drop_penalty
= true
.
Пример
Для двух курьеров запланировано 29 заказов, один из них весом 400 кг. Общий вес заказов — 1800 кг. Один автомобиль вмещает 700 кг, второй — 1000 кг. Параметр weighted_drop_penalty
в значении false
.
Грузоподъемности двух автомобилей не хватит для выполнения всех заказов. Поскольку алгоритм вероятностный, в результате большой заказ остался нераспределенным.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Параметр weighted_drop_penalty
установлен в значении true
. В результате большой заказ будет выполнен, но два маленьких заказа останутся нераспределенными.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте