Алгоритм планирования

Алгоритм планирования позволяет строить маршруты с соблюдением баланса между скоростью и оптимальным уровнем загрузки курьеров. С его помощью можно оптимизировать сразу несколько метрик эффективности доставки:

  • Уменьшить количество и суммарное время опозданий.

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

  • Снизить неэффективный пробег и повысить загрузку курьеров.

    Маршрут строится так, чтобы курьер мог доставить максимальное количество заказов за минимальный пробег. За счет этого повышается показатель средней загрузки курьера в час (Delivered-per-Courier-per-Hour) и растет операционная эффективность.

  • Увеличить скорость доставки.

    При планировании алгоритм стремится снизить значение показателя Click-to-Eat (CTE) — времени от момента оформления заказа до вручения его клиенту. Чем ниже CTE, тем больше заказов в час получится доставить и тем эффективнее работа курьера в целом.

Но при планировании решения могут возникать противоречия. Например:

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

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

Для достижения необходимого баланса метрик вы можете настраивать параметры экспресс-доставки в зависимости от потребностей бизнеса.

Логика распределения заказов

Экспресс-доставка поддерживается для заказов, которые уже готовы к доставке.

При планировании заказы распределяются по маршрутам с учетом следующих критериев:

Критерий

Описание

Эффективность

Маршрут считается готовым к выполнению, если не ожидаются события, которые могут привести к его улучшению.

Снижение риска опозданий

Маршрут отправляется в работу оперативно при риске опоздания на заказ.

Приоритет заказа

Заказы с высоким приоритетом order_priority = express планируются в первую очередь.

Приоритет опаздывающим

Заказы с высоким риском опоздания планируются раньше, чем заказы с низким риском.

Некоторые заказы остаются нераспределенными, так как могут:

  • подождать — их временное окно order_list.delivery_policy.time_interval или дедлайн order_list.delivery_policy.deadline выходят за рамки текущего планирования;
  • отмениться из-за низких штрафов за недоставку.

Уменьшение времени ожидания

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

Принципы управления курьерами

Важно

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

Чтобы алгоритм работал корректно, информация о составе и занятости курьеров должна оставаться актуальной при планировании каждого нового маршрута.

Заказы могут назначаться только тем курьерам, которые:

  • Доступны:

    • вернулись на склад;
    • завершили все предыдущие маршруты;
    • свободны для новой доставки.
  • Должны появиться в ближайшем будущем (например, вернуться после перерыва или выйти в вечерние часы).

    Убедитесь, что в запросе API у таких курьеров правильно указаны временные окна смен — courier_list.shift.shift_info.planned_time_interval.

  • Возвращаются после доставки последнего заказа.

    Передать алгоритму планирования информацию по таким курьерам в API-запросе можно с помощью одного из сценариев:

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

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

История планирований

Запросы на составление маршрутов с помощью алгоритма экспресс-доставки выполняются независимо друг от друга. Исходные данные и результаты планирования хранятся 1 год.

Обратиться к уже спланированному маршруту можно по его идентификатору — task_id.

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

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