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 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_kilometerpara especificar custos em termos de distância ecost_per_traveled_hourpara especificar custos em termos de duração. | 
| Quando os custos de carga são aplicados? | A carga do veículo é comparada com o load_thresholddo custo de carga. Secost_per_unit_above_thresholdfor especificado, o custo será adicionado proporcionalmente à carga do veículo acima doload_thresholdusando a fórmulamax(0, load - load_threshold). Secost_per_unit_below_thresholdfor especificado, o custo será adicionado proporcionalmente à carga do veículo abaixo doload_threshold, usando a fórmulamin(load, load_threshold). | 
| Quais são os valores padrão dos parâmetros de custo de carga? | load_threshold,cost_per_unit_above_thresholdecost_per_unit_below_thresholdsã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_hourouShipment.penalty_cost. | 
| Onde encontro os custos de carga na resposta? | Os custos de carga incorridos aparecem nas propriedades metricseroute_metricsdas mensagens de resposta. Por exemplo, um
      custocost_per_kilometervai
      aparecer comomodel.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 - OptimizeTourspara 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.