optimize
Чтобы при планировании маршрута и распределении заявок применялась оптимизация, используйте команду order/optimize.
svc=order/optimize¶ms={"itemId":<long>,
"orders":[<uint>,{JSOn},...],
"warehouses":[<uint>],
"units":[<uint>],
"flags":<uint>,
"gis":{
"provider":<uint>,
"addPoints":<uint>,
"speed":<uint>,
"mode":"<text>",
"avoid":"<text>",
"departure_time":<uint>,
"traffic_model":"<text>",
"transit_mode":"<text>",
"transit_routing_preference":"<text>"
},
"busyRoutes":{
"<uint>":[
{
"tf":<uint>,
"tt":<uint>,
"pf":{<uint> || {JSON}},
"pt":{<uint> || {JSON}
},
...
]
},
"addPoints":<bool>,
"priority":{<uint>:{<uint>:<uint>},...},
"criterions":{"<text>":<uint>,...},
"preference":{<uint>:<uint>,...}
}
Параметры
Обязательные параметры отмечены звездочкой (*).
Параметр | Описание |
---|---|
itemId* | ID ресурса. |
orders* | Массив оптимизируемых заявок (индексы/JSON заявок через запятую). |
warehouses | Массив складов. |
flags* | Флаги оптимизации. |
gis | Настройки GIS. |
busyRoutes | Период занятости. |
tf | Время начала периода занятости. |
tt | Время конца периода занятости. |
pf | Точка начала периода занятости: ID или JSON заявки. |
pt | Точка конца периода занятости: ID или JSON заявки. |
provider | Источник данных для оптимизации:
|
mode | Способ передвижения (только для Google):
|
avoid | Ограничения (только для Google):
|
departure_time | Запланированное время отправления (только для Google). |
traffic_model | Модель движения (только для Google):
|
transit_mode | Предпочитаемые виды транспорта (только для Google):
|
transit_routing_preference | Приоритет маршрутов на общественном транспорте (только для Google). |
addPoints | Вернуть трек в ответе: 1 — да, 0 — нет. |
speed | Скорость, которая должна использоваться для оптимизации, км/ч (по умолчанию 60). |
units | Массив объектов. |
priority | Порядок заявок: {индекс объекта:{индекс заявки: ожидаемое положение заявки в маршруте}} Заявка с положением равным -1 всегда считается последней в маршруте. |
criterions | Критерии завершения маршрута:
|
preference | Приоритет заявки в маршруте. |
Формат JSON заявки такой же, как в запросе update.
Подробнее о настройках Google смотрите здесь.
Флаги
Флаг | Описание |
---|---|
0x1 | Оптимизировать по расписанию заявки. Используются параметры tf и tt. |
0x2 | Оптимизировать по времени выполнения всех заявок. |
0x20 | Оптимизировать по грузоподъемности объекта. |
0x40 | Оптимизировать по полезному объему объекта. |
0x80 | Оптимизировать только заявки, у которых tt больше текущего времени. Если tf меньше текущего времени, значит tf = текущее время. |
Если лимиты превышены:
0x100 | Маршрут завершается. |
0x200 | Посещается промежуточный склад. |
0x300 | Маршрут разделяется на несколько. |
Возвращаемый результат
{
"1":{ /* оптимизация для первого объекта */
"orders":[
{
"ml":<uint>, /* пробег */
"tm":<uint>, /* время посещения области заявки */
"id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */
},
{
"ml":<uint>, /* пробег */
"tm":<uint>, /* время посещения области заявки */
"id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */
}
]
},
"2":{ /* optimization for the second unit (if the number of units is greater than one) */
"orders":[
{
"ml":<uint>, /* пробег */
"tm":<uint>, /* время посещения области заявки */
"id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */
},
{
"ml":<uint>, /* пробег */
"tm":<uint>, /* время посещения области заявки */
"id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */
}
]
},
..., /* оптимизация для других объектов (если количество объектов больше 1) */
"success":<bool> /* статус оптимизации:
1 — выполнена успешно (есть решение, которое соответстует всем требованиям),
0 — не удалось выполнить */
}
Если на объект назначены только заявки склада (флаг 0x4), то склад не будет показываться в ответе.
Если маршрут разделился на несколько, то в ответе будет массив маршрутов.
Коды ошибок
Код ошибки | Описание |
---|---|
7 | Невалидный параметр itemId. |
6 | Внутренняя ошибка. |
4 | Логическая ошибка. Причина указана в ответе. |