Faça uma solicitação com custos de carga para que o otimizador considere a carga que seus veículos transportam entre as visitas. O custo incorrido depende da quantidade de ShipmentRoute.VehicleLoad
transportada e da distância ou duração da transição (usando cost_per_kilometer
ou cost_per_traveled_hour
, respectivamente).
Um exemplo mínimo de solicitação com custos de carga
Confira um exemplo parcial de uma solicitação com um custo de carga. Neste exemplo, o veículo único não pode transportar mais de 1.000 kg de carga total de weightKg
, o que gera uma unidade de custo por quilômetro quando a carga transportada de weightKg
excede 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
O cálculo do custo de carga para este exemplo é o seguinte:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Então, se o veículo transportar uma carga de weightKg
de 600 por 10 quilômetros, o cálculo será:
(600 - 500) * 10 * 1 = 1000 cost units
Os custos de carga podem ser usados para modelar vários conceitos, como aumento do uso de energia do veículo ao transportar cargas pesadas ou desgaste do veículo causado por carga excessiva.
Outro exemplo de solicitação com custos de carga
Confira outro exemplo de custos de carga que impõem um custo por tempo percorrido acima e abaixo de um limite:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
O cálculo do custo de carga para este exemplo é o seguinte:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
Portanto, se o veículo transportar uma carga de weightLbs
de 950 por 5 horas, o cálculo será:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
Neste exemplo, o load_threshold
do custo de carga de weightLbs
é próximo de max_load
. O cost_per_unit_above_threshold
aplica um custo alto por hora de viagem quando o veículo viaja com uma carga muito pesada, penalizando rotas que podem aumentar o desgaste do veículo ou consumir combustível em excesso.
O cost_per_unit_below_threshold
adiciona um custo por unidade de peso transportada pelo veículo até o limite, representando o aumento do consumo de combustível à medida que o veículo transporta mais carga.
Perguntas frequentes
Confira algumas perguntas frequentes sobre custos de carga:
Pergunta | Resposta |
---|---|
Onde especifico os custos de carga? | Especifique os custos de carga em Vehicle.LoadLimit . |
Como os custos de carga são associados aos fretes? | Um custo de carga se aplica a envios cuja demanda de carga type corresponde ao tipo de limite de carga do veículo, como peso ou volume. Os tipos de carga são strings arbitrárias, conforme descrito em demandas e limites de carga. |
Como os custos de carga são expressos? | Os custos de carga são expressos em termos de distância ou duração da transição. Use cost_per_kilometer para especificar custos em termos de distância e cost_per_traveled_hour para especificar custos em termos de duração.
|
Quando os custos de carga são aplicados? | A carga do veículo é comparada com o load_threshold do custo de carga. Se cost_per_unit_above_threshold for especificado, o custo será adicionado proporcionalmente à carga do veículo acima do load_threshold usando a fórmula max(0, load - load_threshold) . Se cost_per_unit_below_threshold for especificado, o custo será adicionado proporcionalmente à carga do veículo abaixo do load_threshold , usando a fórmula min(load, load_threshold) .
|
Quais são os valores padrão dos parâmetros de custo de carga? | load_threshold , cost_per_unit_above_threshold e cost_per_unit_below_threshold são todos zero por padrão.
|
Em quais unidades os custos de carga são expressos? | Os custos de carga são expressos nas mesmas unidades sem dimensão que todos os outros parâmetros de custo, como global_duration_cost_per_hour ou Shipment.penalty_cost .
|
Onde encontro os custos de carga na resposta? | Os custos de carga incorridos aparecem nas propriedades metrics e route_metrics das mensagens de resposta. Por exemplo, um
custo cost_per_kilometer vai
aparecer como model.vehicles.load_limits.cost_per_kilometer .
|
Para uma explicação detalhada dos custos de carga, consulte a documentação de referência (REST, gRPC).
Exemplo: fazer uma solicitação OptimizeTours
As solicitações OptimizeTours
também podem ser feitas usando REST ou gRPC.
Antes de fazer uma solicitação, substitua os seguintes parâmetros por valores adequados para seu ambiente:
- Verifique se você configurou as Application Default Credentials conforme descrito em Usar o OAuth.
Defina PROJECT_NUMBER_OR_ID como o número ou ID do projeto do Cloud.
O comando a seguir envia uma solicitação
OptimizeTours
para a API Route Optimization e recebe uma resposta 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
Quando a solicitação for concluída, você vai receber uma mensagem de resposta.