Чтобы воспользоваться оптимизацией выполнения заявок, используйте order/optimize:
svc=order/optimize¶ms={"itemId":<long>, "orders":[<uint>,{JSON},...], "warehouses":[<uint>], "units":[<uint>], "flags":<uint>, "gis":{ "provider":<uint>, "addPoints":<uint>, "speed":<uint> }, "priority":{<uint>:{<uint>:<uint>},...}, "criterions":{<text>:<uint>,...}, "preference":{<uint>:<uint>,...}}
| Название | Описание |
|---|---|
| itemId | id ресурса |
| orders | массив оптимизируемых заявок (индексы/JSON заявок через запятую) |
| warehouses | массив складов |
| units | массив объектов, которые будут выполнять заявки |
| flags | флаги оптимизации |
| gis | настройки карт |
| provider | источник данных для оптимизации: 0 - нет, 1 - gurtam maps(по умолчанию) |
| addPoints | вернуть в ответе трек: 1 - да, 0 - нет |
| speed | скорость для оптимизации, км/ч (60 по умолчанию) |
| priority | приоритет заявок: {индекс объекта:{индекс заявки:приоритет заявки}} |
| criterions | критерии завершения маршрута: max_mileage - максимальный пробег, м; max_duration - максимальная длительность, сек; max_order_count - максимальное количество заявок; max_idling - максимальное время простоя между заявками, сек; split_intervals - если 1, то делить по интервалам (если время выполнения заявки с разгрузкой и переездом, не попадает в коридор следующей) |
| preference | приоритет заявки в маршруте, если не задать, то берётся из JSON заявки {«индекс заявки»:«приоритет»,…} |
Формат JSON заявки как в запросе Создание/изменение заявки.
| Флаг | Описание |
|---|---|
| 0x1 | оптимизировать по расписанию заявки (используются параметры tf и tt) |
| 0x2 | оптимизировать по времени выполнения всех заявки |
| 0x20 | учитывать грузоподъемность объекта |
| 0x40 | учитывать вместимость объекта по объёму |
| 0x80 | учитывать текущее время |
| В случае, если превышены лимиты (criterions): | |
| 0x100 | маршрут завершается |
| 0x200 | посещается склад перезагрузки |
| 0x300 | маршрут разделяется на несколько |
{ "1":{ /* оптимизация для первого объекта */ "orders":[ { "ml":<uint>, /* пробег */ "tm":<uint>, /* время посещения области заявки */ "id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */ }, { "ml":<uint>, /* пробег */ "tm":<uint>, /* время посещения области заявки */ "id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */ } ] }, "2":{ /* оптимизация для второго объекта (если заданное число объектов больше одного) */ "orders":[ { "ml":<uint>, /* пробег */ "tm":<uint>, /* время посещения области заявки */ "id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */ }, { "ml":<uint>, /* пробег */ "tm":<uint>, /* время посещения области заявки */ "id":<uint> /* индекс заявки в переданном в запросе массиве (нумерация от 0) */ } ] }, ..., /* оптимизация для других объектов (если задано большее число объектов) */ "success":<bool> /* статус оптимизации: 1 - успех (есть решение для всех заданных требований), 0 - неудача */ }
Если на объект назначены только заявки склада(флаг 0x4), то он не будет фигурировать в ответе.
Если маршрут разделился на несколько, то в ответе будет массив маршрутов.
|