optimize
Para usar la optimización al planificar la ruta y distribuir los pedidos, 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>,
"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>,...}
}
Parámetros
Los parámetros obligatorios están marcados con un asterisco (*).
| Parámetro | Descripción |
|---|---|
| itemId* | ID del recurso. |
| orders* | Array de pedidos que se optimizan (índices o JSON de los pedidos separados por comas). |
| warehouses | Array de almacenes. |
| flags* | Flags de optimización. |
| gis | Configuración de GIS. |
| busyRoutes | Periodo de ocupación. |
| tf | Hora de inicio del periodo de ocupación. |
| tt | Hora de finalización del periodo de ocupación. |
| pf | Ubicación de inicio del periodo de ocupación: ID o JSON del pedido. |
| pt | Ubicación de finalización del periodo de ocupación: ID o JSON del pedido. |
| provider | Fuente de mapas: 0 - ninguna, 1 - Gurtam Maps (por defecto), 2 - Google. |
| mode | Medio de transporte: driving, walking, bicycling o transit (solo para Google). |
| avoid | Restricciones de la ruta: tolls, highways, ferries y/o indoor (solo para Google). |
| departure_time | Hora de salida planificada (solo para Google). |
| traffic_model | Supuestos de tráfico: best guess, pessimistic u optimistic (solo para Google). |
| transit_mode | Medios de transporte público preferidos: bus, subway, train, tram y/o rail (solo para Google). |
| transit_routing_preference | Preferencias para las solicitudes de rutas en transporte público (solo para Google). |
| addPoints | Devolver un track en la respuesta: 1 - sí, 0 - no. |
| speed | Velocidad que se debe usar para la optimización, km/h (60 por defecto). |
| units | Array de unidades. |
| priority | Secuencia de pedidos: {índice de la unidad:{índice del pedido:índice esperado del pedido en la ruta}} Si el índice es igual a -1, el pedido pasa a ser el último de la ruta. |
| criterions | Criterios de finalización de la ruta:
|
| preference | Prioridad del pedido en la ruta. |
El formato JSON es el mismo que en la solicitud update.
Puede encontrar más información sobre la configuración de Google aquí.
Flags
| Flag | Descripción |
|---|---|
| 0x1 | Optimizar según el horario de los pedidos. Se usan los parámetros tf y tt del pedido. |
| 0x2 | Optimizar según la duración de la ejecución de todos los pedidos. |
| 0x20 | Optimizar según la capacidad de carga (peso). |
| 0x40 | Optimizar según la capacidad efectiva (volumen). |
| 0x80 | Optimizar solo los pedidos con tt > hora actual. Si tf < hora actual, entonces tf = hora actual. |
Si se superan los criterios:
| 0x100 | La ruta se finaliza. |
| 0x200 | Se visita un almacén intermedio. |
| 0x300 | La ruta se divide en varias rutas. |
Respuesta
{
"1":{ /* optimización para la primera unidad */
"orders":[
{
"ml":<uint>, /* kilometraje */
"tm":<uint>, /* hora de visita del área del pedido */
"id":<uint> /* índice del pedido en el array enviado en la solicitud (empieza en 0) */
},
{
"ml":<uint>, /* kilometraje */
"tm":<uint>, /* hora de visita del área del pedido */
"id":<uint> /* índice del pedido en el array enviado en la solicitud (empieza en 0) */
}
]
},
"2":{ /* optimización para la segunda unidad (si la cantidad de unidades es mayor que uno) */
"orders":[
{
"ml":<uint>, /* kilometraje */
"tm":<uint>, /* hora de visita del área del pedido */
"id":<uint> /* índice del pedido en el array enviado en la solicitud (empieza en 0) */
},
{
"ml":<uint>, /* kilometraje */
"tm":<uint>, /* hora de visita del área del pedido */
"id":<uint> /* índice del pedido en el array enviado en la solicitud (empieza en 0) */
}
]
},
..., /* optimización para las demás unidades (si la cantidad de unidades es mayor que dos) */
"success":<bool> /* estado de la optimización:
1 - correcta (existe una solución que cumple todos los requisitos),
0 - fallida */
}
Si a la unidad solo se le han asignado pedidos de almacén (el flag 0x4), esta no aparece en la respuesta.
Si la ruta se divide en varias rutas, la respuesta contiene un array de rutas.
Códigos de error
| Código de error | Descripción |
|---|---|
| 7 | itemId no válido. |
| 6 | Error interno. |
| 4 | Error lógico. Para obtener más información, consulte el motivo en la respuesta. |