Objetivos

Las propiedades del objetivo incluyen "objetivos" en "ShipmentModel" y "tipo" y "peso" en "objetivos".

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:
  • DEFAULT: Usa un conjunto predeterminado de costos para garantizar una solución de referencia, lo que significa que evita que la solución use valores extremos para lograr un objetivo. DEFAULT se agrega automáticamente a las solicitudes que contienen un objetivo, y se agrega con un weight de 1.0. Si incluyes este objetivo de forma activa en tu solicitud, la solución usará el weight que especifiques.
  • MIN_DISTANCE: Minimiza la distancia total recorrida.
  • MIN_WORKING_TIME: Minimiza el tiempo total de trabajo, sumado para todos los vehículos.
  • MIN_TRAVEL_TIME: Minimiza el tiempo total de viaje, sumado para todos los vehículos.
  • MIN_NUM_VEHICLES: Minimiza la cantidad de vehículos utilizados.
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"
  }
}