Оптимизировать выполнение заявок

Чтобы воспользоваться оптимизацией выполнения заявок, используйте order/optimize:

svc=order/optimize&params={"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), то он не будет фигурировать в ответе.
:!: Если маршрут разделился на несколько, то в ответе будет массив маршрутов.

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