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.
Un 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 load_threshold
per il costo di caricamento di 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 caricamento sono stringhe arbitrarie, come descritto in richieste e limiti di caricamento. |
Come vengono espressi i costi di caricamento? | I costi di caricamento sono espressi in termini di distanza o
durata della transizione. Utilizza cost_per_kilometer per specificare i costi in termini di distanza e cost_per_traveled_hour per specificare i costi in termini di durata.
|
Quando vengono applicati i costi di caricamento? | Il carico del veicolo viene confrontato con il load_threshold del costo
del carico. Se è specificato cost_per_unit_above_threshold , il costo viene
aggiunto in proporzione al carico del veicolo superiore a
load_threshold utilizzando la formula
max(0, load - load_threshold) . Se
è specificato cost_per_unit_below_threshold , il costo viene aggiunto
in proporzione al carico del veicolo sotto
il load_threshold , utilizzando la formula
min(load, load_threshold) .
|
Quali sono i valori predefiniti per i parametri del costo di caricamento? | load_threshold , cost_per_unit_above_threshold e
cost_per_unit_below_threshold sono 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_hour o
Shipment.penalty_cost .
|
Dove trovo i costi di caricamento nella risposta? | I costi di caricamento sostenuti vengono visualizzati nelle proprietà metrics e
route_metrics dei messaggi di risposta. Ad esempio, un
costo cost_per_kilometer verrà
visualizzato come model.vehicles.load_limits.cost_per_kilometer .
|
Per una spiegazione dettagliata dei costi di caricamento, consulta la documentazione di riferimento (REST, gRPC).
Esempio: invia 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
OptimizeTours
all'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.