Realiza una solicitud con costos de carga para que el optimizador tenga en cuenta la carga que transportan tus vehículos entre visitas. El costo incurrido depende de la cantidad de ShipmentRoute.VehicleLoad
transportada y de la distancia o duración de la transición (con cost_per_kilometer
o cost_per_traveled_hour
, respectivamente).
Ejemplo de solicitud mínima con costos de carga
Este es un ejemplo parcial de una solicitud con un costo de carga. En este ejemplo, el vehículo único no puede transportar más de 1,000 kg de carga total de weightKg
, lo que genera 1 unidad de costo por kilómetro cuando la carga de weightKg
transportada supera los 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
El cálculo del costo de carga para este ejemplo es el siguiente:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Por lo tanto, si el vehículo transporta una carga de weightKg
de 600 sobre 10 kilómetros, el cálculo sería el siguiente:
(600 - 500) * 10 * 1 = 1000 cost units
Los costos de carga se pueden usar para modelar una variedad de conceptos, como el aumento del uso de energía del vehículo cuando se transportan cargas pesadas o el desgaste del vehículo debido a una carga excesiva.
Otra solicitud de ejemplo con costos de carga
Este es otro ejemplo de costos de carga que imponen un costo por tiempo de viaje por encima y por debajo de un umbral:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
El cálculo del costo de carga para este ejemplo es el siguiente:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
Por lo tanto, si el vehículo transporta una carga de weightLbs
de 950 durante 5 horas, el cálculo sería el siguiente:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
En este ejemplo, el load_threshold
para el costo de carga weightLbs
está cerca de max_load
. cost_per_unit_above_threshold
aplica un costo alto por hora recorrida cuando el vehículo viaja con una carga especialmente pesada, lo que penaliza las rutas que pueden aumentar el desgaste del vehículo o consumir combustible en exceso.
El cost_per_unit_below_threshold
agrega un costo por unidad de peso que transporta el vehículo hasta el umbral, lo que representa un mayor consumo de combustible a medida que el vehículo transporta más carga.
Preguntas frecuentes
Estas son algunas preguntas frecuentes sobre los costos de carga:
Pregunta | Respuesta |
---|---|
¿Dónde especifico los costos de carga? | Especifica los costos de carga en Vehicle.LoadLimit . |
¿Cómo se relacionan los costos de carga con los envíos? | Se aplica un costo de carga a los envíos cuyo tipo de demanda de carga coincide con el tipo de límite de carga del vehículo, como el peso o el volumen. Los tipos de carga son cadenas arbitrarias, como se describe en demandas y límites de carga. |
¿Cómo se expresan los costos de carga? | Los costos de carga se expresan en términos de distancia o duración de transición. Usa cost_per_kilometer para especificar los costos en términos de distancia y cost_per_traveled_hour para especificar los costos en términos de duración.
|
¿Cuándo se aplican los costos de carga? | La carga del vehículo se compara con el load_threshold del costo de carga. Si se especifica cost_per_unit_above_threshold , el costo se agrega de manera proporcional a la carga del vehículo por encima de load_threshold con la fórmula max(0, load - load_threshold) . Si se especifica cost_per_unit_below_threshold , el costo se agrega de forma proporcional a la carga del vehículo por debajo de load_threshold , con la fórmula min(load, load_threshold) .
|
¿Cuáles son los valores predeterminados de los parámetros de costo de carga? | load_threshold , cost_per_unit_above_threshold y cost_per_unit_below_threshold son cero de forma predeterminada.
|
¿En qué unidades se expresan los costos de carga? | Los costos de carga se expresan en las mismas unidades sin dimensiones que todos los demás parámetros de costo, como global_duration_cost_per_hour o Shipment.penalty_cost .
|
¿Dónde puedo encontrar los costos de carga en la respuesta? | Los costos de carga incurridos aparecen en las propiedades metrics y route_metrics de los mensajes de respuesta. Por ejemplo, un cost_per_kilometer incurrido aparecerá como model.vehicles.load_limits.cost_per_kilometer .
|
Para obtener una explicación detallada de los costos de carga, consulta la documentación de referencia (REST, gRPC).
Ejemplo: Realiza una solicitud OptimizeTours
Las solicitudes de OptimizeTours
también se pueden realizar con REST o gRPC.
Antes de realizar una solicitud, reemplaza los siguientes parámetros por valores adecuados para tu entorno:
- Asegúrate de tener configuradas las Credenciales predeterminadas de la aplicación como se describe en Cómo usar OAuth.
Establece PROJECT_NUMBER_OR_ID en el número o el ID de tu proyecto de Cloud.
El siguiente comando envía una solicitud
OptimizeTours
a la API de Route Optimization y recibe una respuesta de forma síncrona.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- << EOM { "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM
Una vez que se complete la solicitud, recibirás un mensaje de respuesta.