Optimize order execution

In order to use optimization while executing orders use order/optimize:

svc=order/optimize&params={"itemId":<long>,
			   "orders":[<uint>,{JSOn},...],
			   "warehouses":[<uint>],
			   "units":[<uint>],
                           "unitCount":[<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 настройки карт
provider maps source: 0 - none, 1 - gurtam maps(default)
addPoints return track in response: 1 - yes, 0 - no
speed speed for optimization, km/h(60 on default)
units units array
unitCountnumber of units , optional parameter, used insteed parameter units
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 и 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
0x400 route splited to several, indepented from each other
0x2000 assing the nearest unit
0x4000 order distribution dut to the nearest object

Route splited:use unitCount:1 and flags 0x400 to get routes without bound units and independent on time

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.

Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2024 Gurtam