Modelo de costo

Las propiedades de costo se definen en ShipmentModel.shipments.Shipment y ShipmentModel.vehicles.Vehicle

El objetivo principal de la API de Route Optimization es encontrar rutas con el costo más bajo. Por lo tanto, el modelo de costos es el principal impulsor de la optimización de rutas.

El modelo de costos es un conjunto de propiedades que especifican los costos globales, de vehículos y de envíos.

Las propiedades del modelo de costos admiten los siguientes tipos de objetivos de optimización:

  • Asignaciones y rutas de vehículos eficientes
  • Tiempos de retiro y entrega rentables
  • Priorización de envíos críticos

Estructura

Como se muestra en el diagrama, las propiedades del modelo de costos se estructuran de la siguiente manera:

En este documento, solo se destacan los parámetros esenciales del modelo de costos. Consulta la documentación de referencia para ver el conjunto completo de parámetros de costo.

Lista de tareas de Essentials

En la siguiente lista de tareas, se describen los conocimientos esenciales que evitan posibles errores relacionados con los costos. Esta lista puede ayudarte a validar tu solicitud y solucionar problemas con la respuesta.

Propiedades

En la siguiente tabla, se enumeran y describen las propiedades del modelo de costos.

Padres Nombre de la propiedad Tipo de propiedad Costo por Descripción de la propiedad
Shipment penaltyCost número Envío omitido Es el costo en el que se incurre por omitir el envío.
La API omite un envío cuando el costo para completarlo supera su costo de penalización.
  • Si configuras penaltyCost, se priorizará la entrega de los envíos con un costo más alto.
  • Si no estableces un penaltyCost para un envío, este se vuelve obligatorio.
  • Si se establece de forma explícita un valor de penaltyCost de envío en cero, la API siempre omitirá el envío, a menos que lo requieran otras restricciones.
Vehicle fixedCost número Envío Es el costo fijo que se aplica si este vehículo se usa para administrar un envío.
costPerHour número Hora Es el costo de operar un vehículo por hora, incluidos los tiempos de tránsito, espera, visita y descanso.
A medida que este costo aumenta, el optimizador intenta encontrar rutas más rápidas que podrían no ser las más cortas.
Esta propiedad puede ser un costo por vehículo independiente eficaz debido a su simplicidad y exhaustividad.
costPerKilometer número Kilómetros Es el costo por kilómetro recorrido por el vehículo, que puede representar los costos de combustible o los costos amortizados de mantenimiento del vehículo.
costPerTraveledHour número Hora Es el costo de operar un vehículo por hora solo mientras está en tránsito, sin incluir los tiempos de espera, visita y descanso. Esto prioriza las rutas de viaje más rápidas por sobre las más cortas.

Ejemplos

En esta sección, se abordan tres tipos de ejemplos:

Muestras de código

En la siguiente muestra de código, se indica la estructura de las propiedades del modelo de costos en Shipment:

{
  "model": {
    "shipments": [ ...
      {
        "penaltyCost": PENALTY_COST
      }
    ],
    "vehicles": [ ...
    ]
  }
}

En la siguiente muestra de código, se indica la estructura de las propiedades del modelo de costos en Vehicle:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "fixedCost": FIXED_COST,
        "costPerKilometer": KILOMETER_COST,
        "costPerHour": HOUR_COST,
        "costPerTraveledHour": TRAVELED_HOUR_COST
      }
    ]
  }
}

Situación de ejemplo

En esta sección, se describe una situación en la que tienes un negocio de guardería para perros. Estás optimizando una ruta para el camión que usas para recoger a los perros de sus casas. En esta situación, quieres que el optimizador tenga en cuenta los costos relacionados con la recogida de los perros y las operaciones de los vehículos cuando proporcione una ruta.

En este ejemplo, una unidad de costo representa 1 dólar. Esto significa que los valores de la propiedad del modelo de costos en tu solicitud son los siguientes:

Propiedad Valor Situación
penaltyCost 10 Representa la penalización que ofreces a tus clientes por no recoger a su perro en un día programado. Cada vez que no recojas al perro en un día programado, el cliente obtendrá un descuento de 40 dólares del total del servicio.
fixedCost 30 Representa el costo diario de los pagos del préstamo de tu vehículo, que es de USD 30 por día.
costPerKilometer 0.08 Representa la cantidad de gasolina que consume tu vehículo por kilómetro. Tu vehículo necesita 0.04 galones por kilómetro para moverse, y el costo por galón en tu región es de 2 dólares.
costPerHour 27 Representa cuánto le pagas a un conductor por conducir tu vehículo. Le pagas al conductor 27 dólares por hora.
costPerTraveledHour 2.5 Representa cuánto tienes que pagar por hora por el aire acondicionado del vehículo para los perros mientras están en la ruta. Cuando el vehículo no esté en movimiento, el conductor puede abrir las puertas traseras y apagar la climatización.

Según los parámetros de costos, el optimizador podría realizar compensaciones que no son obvias para el usuario, pero que se pueden encontrar a través de la optimización.

En el siguiente diagrama, se ilustra un ejemplo en el que el optimizador podría elegir una ruta más larga, pero más rápida, a través de la línea discontinua verde para evitar el tráfico en la línea punteada roja.

El vehículo tiene dos rutas posibles: una representada por una línea verde discontinua, que es más larga, pero no tiene incidentes, y otra representada por una línea roja punteada, que es más corta, pero tiene un accidente automovilístico en el medio.

En esta situación, el balance de costos de las dos rutas es el siguiente:

Además de proporcionar rutas rentables, el optimizador también proporciona una suma de los costos totales de las rutas de entrega en las propiedades de respuesta.

Ejemplo de solicitud

En el siguiente ejemplo, se muestra la estructura de una solicitud optimizeTours básica que incorpora los valores establecidos en la situación de ejemplo:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
        "penaltyCost": 40
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "fixedCost": 30,
        "costPerKilometer": 0.08,
        "costPerHour": 27,
        "costPerTraveledHour": 2.5
      }
    ]
  }
}

Propiedades de la respuesta

El mensaje OptimizeToursResponse tiene propiedades de costo que describen los costos en los que se incurre en el proceso de completar una ruta:

  • metrics.costs: Es el costo total de todas las rutas desglosado por campos de solicitud relacionados con el costo.
  • metrics.totalCost: Es el costo total de todas las rutas sumadas.