1. Выплаты водителю в интерфейсе

Теперь формулы для расчета выплат водителям можно задавать в Excel файлах и соответственно в таблице параметров планирования в интерфейсе.

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

  1. Радиус мультизаказа и штраф за посещение соседних локаций несколько раз

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

Радиус указывается в опции multiorder_radius_m, значение по умолчанию 1 м.

Пример настройки:
"options": {
"date": "2018-09-01",
"time_zone": 3.0,
"multiorder_radius_m": 5
}

Добавлен ещё один уровень группировки заказов — группы близких локаций close_location_groups. Опция нужна для задач, где нужно ограничить количество посещений локаций, находящихся близко друг к другу, например, соседние подъезды, не подряд или в разных заездах/машинах.

Настраивается группировка следующим образом:
options.close_location_groups_radius_m — предел расстояния, при котором локации считаются близкими
options.penalty.per_extra_point — штраф за каждую локацию в которую машины/курьеры приезжают больше одного раза
options.penalty.per_extra_vehicle — штраф за каждую за каждую лишнюю машину/курьера, которые приезжают в группу близких локаций.
options.penalty.per_extra_visit — штраф за каждое лишнее посещение группы близких локаций.

Пример настройки:
"options": {
"date": "2018-09-01",
"time_zone": 3.0,
"penalty": {
"close_location_groups": {
"per_extra_point": 1000,
"per_extra_vehicle": 10000,
"per_extra_visit": 2000,
}
},
"close_location_groups_radius_m": 50
}

  1. Разбиение заказа на части

Добавилась возможность разделять заказы на части и, в частности, развозить эти части разными машинами. Для этого добавляются следующие параметры у локаций:
can_be_split — заказ может быть разделен на части (допускается указывать только для деливери и пикапов). По умолчанию false.
max_split_parts — максимальное количество частей, на которые может быть разделен заказ. На данный момент существует ограничение этого параметра сверху — запрещено разделять заказ на более чем 10 частей. Ограничение вызвано тем как хранятся локации в солвере, в будущих версиях планируем от него избавится.
quant — минимальный размер отделенной от заказа части. Может задаваться в двух форматах:
"quant": 0.25 — квант соответсвует доле заказа, то есть в данном случае минимальная часть составляет четверть заказа
"quant": { "weight_kg": 2.5 } — квант задает размер минимальной части в каких-то единицах измерения (weight_kg, units или volume_cbm).

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

Пример:
"options": {
"max_split_orders_percentage": 70,
"penalty": {
"split_orders_percentage": {
"fixed": 1000,
"per_percent": 50
}
}
}

В выходные метрики добавлены поля split_orders_percentage и max_split_orders_percentage_penalty — доля разделенных заказов и штраф за нарушение ограничения на максимальную долю заказов.

  1. Пропускная способность в точке для разделенных заказов

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

"locations": [
{
"id": 1,
"point": {
"lat": 55.781803,
"lon": 37.708392
},
"shipment_size": {
"weight_kg": 1
},
"time_window": "08:00-22:30",
"can_be_split": true,
"max_split_parts": 4,
"quant": 0.25,
"throughput": {
"kg_per_hour": [
{
"value": 0.25,
"time_window": "08:00-22:30"
}
]
},
"penalty": {
"throughput": {
"fixed": 0,
"kg": 100000
}
},
"service_duration_s": 3600
}
]

На этом сегодня все, по всем вопросам пишите на routing-support@yandex-team.ru

Wed Dec 14 2022 11:09:53 GMT+0300 (Moscow Standard Time)