Нераспределенные заказы
При недостатке автомобилей или курьеров некоторые заказы могут быть исключены из всех маршрутов. Если для вашего бизнеса допустим и приемлем отказ от некоторых заказов, вы можете использовать следующие опции:
- настроить долю нераспределенных заказов;
- оптимизировать маршруты для распределенных заказов.
Допустимая доля нераспределенных заказов
Настройка доли нераспределенных заказов пригодится в ситуации, когда в планирование могут попасть удаленные друг от друга заказы. Везти дальние заказы рентабельно, только если их набирается несколько. Одиночный дальний заказ нужно перенести на другую смену, пока не скопится несколько заказов в этом направлении. Задача настройки — автоматически перемещать такие невыгодные заказы в нераспределенные, но только если их немного.
При использовании ограничения по допустимой доле нераспределенных заказов алгоритм будет автоматически оставлять допустимое количество дальних заказов нераспределенным, но планировать, если их становится больше.
В ситуациях, когда по результатам планирования некоторые заказы могут попасть в нераспределенные, используйте сценарий Планирование заказов, которые можно перенести / Планирование части заказов.
Как это работает
Определите в задаче допустимую долю нераспределенных заказов при помощи параметра max_drop_penalty_percentage
. Он добавляется в options
и показывает максимальное отношение суммарного штрафа за нераспределенные заказы в решении к максимально возможному штрафу за них.
Максимально возможный штраф за нераспределенные заказы не задается отдельным параметром — это сумма всех locations.penalty.drop
в задаче.
Диапазон значений max_drop_penalty_percentage
— от 0 до 10. По умолчанию max_drop_penalty_percentage
= 100. Для работы с этой опцией нужно настроить еще несколько параметров:
-
Добавьте в
options
параметрpenalty
. -
Задайте в параметре
options.penalty
штрафdrop_penalty_percentage
за нарушение и укажите:-
penalty.drop_penalty_percentage.fixed
— фиксированный штраф за нарушениеmax_drop_penalty_percentage
; -
penalty.drop_penalty_percentage.per_percent
— штраф за каждый лишний процент отношения суммарного штрафа за нераспределенные заказы к максимально возможному, если при расчетахmax_drop_penalty_percentage
получился больше установленного в задаче планирования.
-
-
Уменьшите штраф за недоставленный заказ
locations.penalty.drop
(со значения по умолчанию, равного 1 000 000, до меньшего).
Пример описания в запросе
{
"options": {
"date": "2018-09-01",
"time_zone": 3,
"quality": "normal",
"max_drop_penalty_percentage": 0.4,
"penalty": {
"drop_penalty_percentage": {
"fixed": 1000,
"per_percent": 50
}
}
}
}
Пример 1
В примере 37 заказов, из них 35 нужно доставить по Москве, по одному — в Калугу и в Тверскую область.
Все заказы должны быть распределены по маршрутам, поэтому max_drop_penalty_percentage
= 0.
Для штрафа за нераспределенные заказы используется значение по умолчанию.
В решении все заказы оказываются распределенными, в том числе два дальних.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Пример 2
То же, что в примере 1, но max_drop_penalty_percentage
= 100. Заданы штрафы:
-
penalty.drop_penalty_percentage.fixed
= 100000. -
penalty.drop_penalty_percentage.per_percent
= 100.
Штраф за нераспределенные заказы locations.penalty.drop
= 1000.
В результате работы алгоритма два дальних заказа остаются нераспределенными.
Пример Excel ⋅ Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Перезапуск задачи для оптимизации маршрутов
По умолчанию алгоритм распределяет заказы и планирует маршруты в ходе одной задачи планирования. Если большое число заказов остаются нераспределенными, построенные маршруты могут оказаться недостаточно оптимальными. В этом случае можно настроить повторный запуск задачи планирования, в ходе которого будут оптимизированы маршруты только для распределенных заказов.
За повторный запуск задачи планирования отвечает опция options.restart_on_drop
(по умолчанию false
). При restart_on_drop
= true
время выполнения задачи планирования может увеличиться, но получившиеся маршруты для распределенных заказов будут оптимальными.
Примечание
Рекомендуем использовать опцию, только если в решении допустимо большое количество нераспределенных заказов.