In order to use optimization while executing orders use order/optimize:
svc=order/optimize¶ms={"itemId":<long>, "orders":[<uint>,{JSOn},...], "warehouses":[<uint>], "units":[<uint>], "flags":<uint>, "gis":{ "provider":<uint>, "addPoints":<uint>, "speed":<uint> }, "addPoints":<bool>, "priority":{<uint>:{<uint>:<uint>},...}, "criterions":{<text>:<uint>,...}, "preference":{<uint>:<uint>,...}}
Parameters
Param | Description |
---|---|
itemId | resource id |
orders | optimized orders array (orders indexes/orders JSON delimited with comma) |
warehouses | warehouses array |
flags | optimization flags |
gis | card settings |
provider | maps source: 0 – none, 1 – Google Maps(default) |
addPoints | return track in response: 1 – yes, 0 – no |
speed | speed for optimization, km/h(60 on default) |
units | units array |
priority | orders priority: {unit index:{order index:orders priority}} |
criterions | route completion criterions: max_mileage – maximum mileage, m; max_duration – maximum duration, sec; max_order_count – maximum orders count; max_idling – maximum idle time between orders, sec; split_intervals – if 1, then split based on intervals (if the execution time of the order with unloading and moving, misses the next order time interval) |
preference | order priority in route |
JSON format is the same as in Create/update request.
Flags
Flag | Description |
---|---|
0x1 | optimize by order schedule (order tf and tt params are used) |
0x2 | optimize by all orders completion duration |
0x20 | optimization by carrying capacity(weight) |
0x40 | optimization by effective capacity(volume) |
0x80 | optimize only orders with tt > current time; if tf < current time, then tf = current time |
If criterions are exceed: | |
0x100 | order is terminated |
0x200 | added visit reload warehouse |
0x300 | route splited to several |
Response
{ "1":{ /* 1st units optimization */ "orders":[ { "ml":<uint>, /* mileage */ "tm":<uint>, /* time to visit order area */ "id":<uint> /* order index in array send in request (starts from 0) */ }, { "ml":<uint>, /* mileage */ "tm":<uint>, /* time to visit order area */ "id":<uint> /* order index in array send in request (starts from 0) */ } ] }, "2":{ /* 2nd unit optimization (if stated unit number is greater than one) */ "orders":[ { "ml":<uint>, /* mileage */ "tm":<uint>, /* time to visit order area */ "id":<uint> /* order index in array send in request (starts from 0) */ }, { "ml":<uint>, /* mileage */ "tm":<uint>, /* time to visit order area */ "id":<uint> /* order index in array send in request (starts from 0) */ } ] }, ..., /* other unit number optimization (if more than two units optimization stated) */ "success":<bool> /* optimization status: 1 - success (there is solution to meet all requirements), 0 - failed */ }
If only warehouse orders were assigned to unit(0x4 flag) – it will not appear in the response.
If route splited to several, it will be routes array in the response.