Штраф за недогруженные рейсы {#empty-run-before-full}
Чтобы курьеры выполняли сначала рейсы с максимальной загрузкой, используйте штраф options.penalty.empty_run_before_full.scaled
. Он начисляется за каждый рейс с меньшей загрузкой, который был выполнен раньше чем рейс с большей загрузкой, если рейсы выполнил один курьер.
Штраф рассчитывается следующим образом: для каждого рейса считается максимальная утилизация (число от 0 до 1) и максимальная утилизация последующих рейсов. Разница этих утилизаций умножается на размер штрафа.
Например, в маршруте 3 рейса. В первом рейсе курьер доставил 10 единиц груза, во втором — 15, в третьем — 20. Вместимость автомобиля — 25 единиц. Максимальная утилизация достигается в третьем рейсе — 20 единиц. По первому и второму рейсам начислен штраф:
[(20-10)/25 + (20-15)/25] * options.penalty.empty_run_before_full.scaled
Если тот же курьер доставляет в первом рейсе 20 единиц груза, во втором — 10, в третьем — 15, будет начислен штраф только по второму рейсу:
(15-10)/25 * options.penalty.empty_run_before_full.scaled
Пример 1
Курьер делает 3 рейса, в первом доставляет заказы с временными окнами до 12 часов, во втором и третьем рейсах — с временными окнами после 13 часов. Стоимость курьера зависит от времени ожидания на маршруте, поэтому после доставки ранних заказов курьер возвращается на склад.
Вместимость автомобиля — 25 единиц. В первом рейсе курьер доставляет 12 единиц груза, во втором — 16, в третьем — 20.
Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте
Пример 2
То же, что в примере 1, но определен штраф options.penalty.empty_run_before_full.scaled
= 10 000. В первом рейсе курьер по-прежнему доставляет ранние заказы — 12 единиц груза. Но во втором и третем рейсе курьер теперь доставляет по 18 единиц груза. Штраф empty_run_before_full_penalty
рассчитан только для первого рейса:
(18-12) / 25 * 10000 = 2400
Запрос API (JSON) ⋅ Ответ API ⋅ Открыть на карте