Fai una richiesta con i costi di carico per consentire all'ottimizzatore di prendere in considerazione il
carico trasportato dai tuoi veicoli tra una visita e l'altra. Il costo sostenuto dipende sia dalla
quantità di ShipmentRoute.VehicleLoad trasportata sia dalla distanza o dalla durata
della transizione (utilizzando rispettivamente cost_per_kilometer o cost_per_traveled_hour).
Una richiesta di esempio minima con i costi di caricamento
Ecco un esempio parziale di una richiesta con un costo di caricamento. In questo esempio, il
singolo veicolo non può trasportare più di 1000 kg di carico weightKg totale, che
comporta 1 unità di costo per chilometro quando il carico weightKg trasportato supera i 500
kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
Il calcolo del costo di caricamento per questo esempio è il seguente:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Quindi, se il veicolo trasporta un carico di weightKg di 600 su 10 chilometri, il
calcolo sarà:
(600 - 500) * 10 * 1 = 1000 cost units
I costi di carico possono essere utilizzati per modellare una serie di concetti, come l'aumento dell'utilizzo di energia del veicolo durante il trasporto di carichi pesanti o l'usura del veicolo causata da un carico eccessivo.
Altro esempio di richiesta con costi di caricamento
Ecco un altro esempio di costi di carico che impongono un costo per il tempo di percorrenza sia al di sopra che al di sotto di una soglia:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
Il calcolo del costo di caricamento per questo esempio è il seguente:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
  + min(carried load, load threshold) * time * cost per unit below threshold
Quindi, se il veicolo trasporta un carico di weightLbs di 950 per 5 ore, il calcolo sarà:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
In questo esempio, il valore load_threshold per il costo di caricamento weightLbs è vicino
a max_load. Il cost_per_unit_above_threshold applica un costo elevato per
ora di viaggio quando il veicolo viaggia con un carico particolarmente pesante,
penalizzando i percorsi che potrebbero aumentare l'usura del veicolo o consumare carburante in eccesso.
Il cost_per_unit_below_threshold aggiunge un costo per unità di peso trasportata dal veicolo fino alla soglia, che rappresenta un aumento del consumo di carburante man mano che il veicolo trasporta più carico.
Domande frequenti
Ecco alcune domande frequenti sui costi di caricamento:
| Domanda | Risposta | 
|---|---|
| Dove posso specificare i costi di carico? | Specifica i costi di caricamento in Vehicle.LoadLimit. | 
| Come vengono abbinati i costi di carico alle spedizioni? | Un costo di carico si applica alle spedizioni la cui tipologia di richiesta di carico corrisponde al tipo di limite di carico per il veicolo, ad esempio peso o volume. I tipi di carico sono stringhe arbitrarie, come descritto in richieste e limiti di carico. | 
| Come vengono espressi i costi di caricamento? | I costi di caricamento sono espressi in termini di distanza o
      durata della transizione. Utilizza cost_per_kilometerper specificare i costi in termini di distanza ecost_per_traveled_hourper specificare i costi in termini di durata. | 
| Quando vengono applicati i costi di caricamento? | Il carico del veicolo viene confrontato con il load_thresholddel costo
      del carico. Se viene specificatocost_per_unit_above_threshold, il costo viene
      aggiunto in proporzione al carico del veicolo superiore aload_thresholdutilizzando la formulamax(0, load - load_threshold). Se
      è specificatocost_per_unit_below_threshold, il costo viene aggiunto
      in proporzione al carico del veicolo sotto
      ilload_threshold, utilizzando la formulamin(load, load_threshold). | 
| Quali sono i valori predefiniti per i parametri del costo di caricamento? | load_threshold,cost_per_unit_above_thresholdecost_per_unit_below_thresholdsono tutti pari a zero per impostazione predefinita. | 
| In quali unità sono espressi i costi di carico? | I costi di caricamento sono espressi nelle stesse unità adimensionali di tutti gli altri
      parametri di costo, ad esempio global_duration_cost_per_houroShipment.penalty_cost. | 
| Dove trovo i costi di caricamento nella risposta? | I costi di caricamento sostenuti vengono visualizzati nelle proprietà metricseroute_metricsdei messaggi di risposta. Ad esempio, un
      costocost_per_kilometerverrà
      visualizzato comemodel.vehicles.load_limits.cost_per_kilometer. | 
Per una spiegazione dettagliata dei costi di caricamento, consulta la documentazione di riferimento (REST, gRPC).
Esempio: effettuare una richiesta OptimizeTours
Le richieste OptimizeTours possono essere effettuate anche utilizzando REST o gRPC.
Prima di effettuare una richiesta, sostituisci i seguenti parametri con valori appropriati per il tuo ambiente:
- Assicurati di aver configurato le credenziali predefinite dell'applicazione come descritto in Utilizzare OAuth.
- Imposta PROJECT_NUMBER_OR_ID sul numero o sull'ID del tuo progetto Cloud. - Il seguente comando invia una richiesta - OptimizeToursall'API Route Optimization e riceve una risposta in modo sincrono.- 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 
Al termine della richiesta, riceverai un messaggio di risposta.