Los objetivos son parámetros que puedes usar para especificar metas de optimización de alto nivel en lugar de proporcionar parámetros de costos específicos del modelo de costos.
Puedes usar varios objetivos en una sola solicitud y asignar a cada uno un peso relativo para controlar su influencia en la optimización general. Los objetivos afectan toda tu solicitud, ya que influyen en todos tus vehículos y envíos. Por último, también puedes usar objetivos para comenzar el desarrollo de tu propio modelo de costos, como se describe en Genera un modelo de costos.
Puedes usar objetivos para controlar los siguientes impactos en tu planificación de rutas:
- El tiempo o la distancia total de viaje de tus rutas
- Es el tiempo total de trabajo en todos los vehículos.
- Cantidad total de vehículos utilizados.
Propiedades
La propiedad objectives es un array de tipos de mensajes Objective dentro de ShipmentModel. Cada Objective define un objetivo de optimización específico y contiene los campos que se indican en la siguiente tabla:
| Campo | Tipo | Descripción |
|---|---|---|
type |
Enum |
Especifica el objetivo de optimización predefinido. Los valores aceptados son los siguientes:
|
weight |
Doble |
Define la importancia relativa de este objetivo. Cuando se usan varios objetivos, el valor de weight controla la intensidad con la que este objetivo específico influye en la optimización general de la ruta en comparación con los demás. Puede ser cualquier número no negativo y no es necesario que sume 1. El valor predeterminado es 1.0.
|
Ejemplos
En esta sección, se abarcan dos tipos de ejemplos:
- Es una muestra de código que ilustra la estructura del array
objectives. - Ejemplo de una solicitud que incluye el array
objectives.
Muestras de código
En el siguiente ejemplo, se muestra la estructura de objectives:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
Ejemplo de solicitud
En el siguiente ejemplo, se muestra la estructura de una solicitud básica de optimizeTours que incorpora varios objetivos, en la que MIN_TRAVEL_TIME es 3 veces más importante que MIN_WORKING_TIME.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
Genera un modelo de costos
Los objetivos son una forma rápida de establecer metas de optimización, pero, en algunos casos, es posible que no sean lo suficientemente específicos por sí solos. Para alcanzar tus objetivos de rutas exactas, es posible que necesites el control detallado que solo está disponible a través de los parámetros del modelo de costos.
Para comenzar a desarrollar tu propio modelo de costos, agrega objetivos a tu solicitud y, luego, convierte los objetivos de tu solicitud en parámetros del modelo de costos con el modo de resolución TRANSFORM_AND_RETURN_REQUEST.
Cuando envías una solicitud con este modo de resolución, sucede lo siguiente:
- La API convierte tus objetivos en parámetros del modelo de costos y los devuelve en un objeto
processedRequest. Luego, puedes ajustar los parámetros del modelo de costos según sea necesario para definir mejor tu plan de ruta. - Cuando se usan varios objetivos, la API combina los costos de todos tus objetivos y los ajusta según sus respectivos pesos.
- No se te facturará por esta solicitud, ya que la API no te proporciona una ruta optimizada, sino que solo convierte los objetivos en parámetros del modelo de costos.
Ejemplo de solicitud
En el siguiente ejemplo, se muestra una solicitud que usa el objetivo MIN_TRAVEL_TIME y el modo de solución TRANSFORM_AND_RETURN_REQUEST:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
Ejemplo de respuesta
A continuación, se muestra la respuesta correspondiente a la solicitud anterior. Esta respuesta incluye los parámetros del modelo de costos generados y el objetivo original como referencia.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }