Нераспределенные заказы

При недостатке автомобилей или курьеров некоторые заказы могут быть исключены из всех маршрутов. Если для вашего бизнеса допустим и приемлем отказ от некоторых заказов, вы можете использовать следующие опции:

Допустимая доля нераспределенных заказов

Настройка доли нераспределенных заказов пригодится в ситуации, когда в планирование могут попасть удаленные друг от друга заказы. Везти дальние заказы рентабельно, только если их набирается несколько. Одиночный дальний заказ нужно перенести на другую смену, пока не скопится несколько заказов в этом направлении. Задача настройки — автоматически перемещать такие невыгодные заказы в нераспределенные, но только если их немного.

При использовании ограничения по допустимой доле нераспределенных заказов алгоритм будет автоматически оставлять допустимое количество дальних заказов нераспределенным, но планировать, если их становится больше.

В ситуациях, когда по результатам планирования некоторые заказы могут попасть в нераспределенные, используйте сценарий Планирование заказов, которые можно перенести / Планирование части заказов.

Как это работает

Определите в задаче допустимую долю нераспределенных заказов при помощи параметра max_drop_penalty_percentage. Он добавляется в options и показывает максимальное отношение суммарного штрафа за нераспределенные заказы в решении к максимально возможному штрафу за них.

Максимально возможный штраф за нераспределенные заказы не задается отдельным параметром — это сумма всех locations.penalty.drop в задаче.

Диапазон значений max_drop_penalty_percentage — от 0 до 10. По умолчанию max_drop_penalty_percentage = 100. Для работы с этой опцией нужно настроить еще несколько параметров:

  1. Добавьте в options параметр penalty.

  2. Задайте в параметре options.penalty штраф drop_penalty_percentage за нарушение и укажите:

    • penalty.drop_penalty_percentage.fixed — фиксированный штраф за нарушение max_drop_penalty_percentage;

    • penalty.drop_penalty_percentage.per_percent — штраф за каждый лишний процент отношения суммарного штрафа за нераспределенные заказы к максимально возможному, если при расчетах max_drop_penalty_percentage получился больше установленного в задаче планирования.

  3. Уменьшите штраф за недоставленный заказ 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 время выполнения задачи планирования может увеличиться, но получившиеся маршруты для распределенных заказов будут оптимальными.

Примечание

Рекомендуем использовать опцию, только если в решении допустимо большое количество нераспределенных заказов.

Написать в службу поддержки