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).
Exemplo de solicitação mínima com custos de carga
Confira um exemplo parcial de uma solicitação com um custo de carga. Neste exemplo, o
veículo único pode transportar no máximo 1.000 kg de carga total de weightKg
, o que
custa 1 unidade de custo por quilômetro quando a carga de weightKg
transportada 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
Portanto, se o veículo transportar uma carga de weightKg
de 600 em 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 o aumento do consumo de energia do veículo ao transportar cargas pesadas ou o 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õe um custo por tempo de viagem 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 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 especialmente 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 carregamento:
Pergunta | Resposta |
---|---|
Onde especificar os custos de carga? | Especifique os custos de carga em Vehicle.LoadLimit . |
Como os custos de carga são combinados com os envios? | Um custo de carga se aplica a remessas cujo tipo de demanda de carga 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 cargas e limites. |
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 da 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 iguais a zero por padrão.
|
Em quais unidades os custos de carga são expressos? | Os custos de carregamento 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 carregamento incorridos aparecem nas propriedades metrics e
route_metrics das mensagens de resposta. Por exemplo, um
cost_per_kilometer incorrido 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 pelos 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.