L'API Route Optimization restituisce i percorsi per i veicoli nella richiesta corrispondente. Le spedizioni vengono assegnate ai veicoli o possono essere saltate a seconda del proprietà della richiesta.
Un messaggio OptimizeToursResponse
(REST, gRPC) ha due
proprietà:
routes[]
sono i percorsi di ogni veicolo con le spedizioni assegnate. CiascunaRoute
contiene metriche che riflettono le proprietà della singola route.metrics
sono metriche aggregate per l'intera risposta, per tutti i veicoli e i piani di itinerario. Le metriche di primo livello contengono le stesse proprietà delle metriche per itinerario, con valori aggregati per tutti gli itinerari.
Alcune proprietà potrebbero non essere sempre compilate a seconda dei risultati dell'ottimizzazione:
skippedShipments[]
elenca le spedizioni non effettuate da nessun veicolo. Una spedizione può essere saltata se non può essere eseguita entro i vincoli specificati o se il costo per l'esecuzione della spedizione supera il costo della penale. Ad esempio, se il ritiro o la consegna di una spedizione prevede una duratatimeWindow
per un veicolo potrebbe non essere possibile o meno effettuare la visita durante l'intervallo di tempo richiesto.validationErrors[]
specifica errori che rendono la richiesta non valida o impossibile risolvere se il valoresolvingMode
della richiesta è impostato suVALIDATE_ONLY
Nella normale modalitàDEFAULT_SOLVE
, gli errori di convalida verranno visualizzati in un messaggio di errore anziché nel corpo della risposta. Tieni presente che La modalità di risoluzione diVALIDATE_ONLY
può segnalare più errori contemporaneamente, ovvero utile per eseguire rapidamente il debug delle richieste.
Proprietà percorso
Ogni voce routes[]
è un messaggio ShipmentRoute
(REST, gRPC). Ciascuna
ShipmentRoute
rappresenta l'assegnazione del percorso per un determinato veicolo da
la richiesta. Proprietà ShipmentRoute
importanti correlate al corrispondente
Vehicle
includono:
vehicleIndex
è l'indice in base zero diVehicle
nel corrispondente di richiesta di accesso. Le risposte REST omettono questa proprietà quando il valore è zero.vehicleStartTime
è l'ora in cui il veicolo deve iniziare il percorso.vehicleEndTime
è l'ora in cui è previsto che il veicolo finisca percorso.
In risposta, routes
avrà il seguente aspetto:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
Ogni ShipmentRoute
include un elenco ordinato di visits
che il veicolo
completato. Ogni Visit
(REST, gRPC) rappresenta un VisitRequest
(REST, gRPC) dalla richiesta corrispondente. Visit
importante
le proprietà includono:
shipmentIndex
è l'indice in base zero della spedizione a cui appartiene questa visita nella richiesta corrispondente.isPickup
è true quando una visita è destinata a essere presa e false quando una visita è una la distribuzione dei contenuti. Le risposte REST omettono questa proprietà quando il valore è false.visitRequestIndex
è l'indice in base zero diVisitRequest
daShipment.pickups
oShipment.deliveries
nella richiesta corrispondente cheVisit
rappresenta. Le risposte REST omettono questa proprietà quando è zero.startTime
è l'ora prevista di inizio della visita.loadDemands
tipo di caricamento delle mappe per caricare la quantità richiesta per completare laVisit
. Gli importi di caricamento sono negativi per le visite di consegna e rappresentano il carico che viene rimosso dal veicolo.
Un esempio di Visit
ha il seguente aspetto:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
Ogni ShipmentRoute
include un elenco ordinato di transitions
che rappresentano
viaggia tra visits
per un determinato veicolo. Messaggio Transition
importante
Le proprietà (REST, gRPC) includono:
startTime
è l'ora in cui il veicolo inizierà a eseguire la transizione.travelDuration
è il periodo di tempo entro il quale il veicolo deve viaggiare per completare la transizione.travelDistanceMeters
è la distanza in metri che il veicolo deve per completare la transizione.trafficInfoUnavailable
indica se sono disponibili dati sul traffico per il una transizione.waitDuration
rappresenta il tempo di inattività che il veicolo trascorre prima di poter inizierà il prossimoVisit
. Ciò potrebbe essere dovuto all'importo distart_time
dei persone che seguiVisit
.totalDuration
è la durata totale della transizione, inclusi i viaggi, tempi di attesa, pausa e ritardo.vehicleLoads
mappa il tipo di caricamento in base alla quantità trasportata dal veicolo durante questa transizione.
Un esempio di Transition
ha il seguente aspetto:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
La relazione tra vists
e transitions
è descritta in
Ottimizzazione degli ordini di ritiro e consegna a domicilio, nonché nella
documentazione di riferimento di ShipmentRoute
(REST, gRPC).
Proprietà delle metriche
Il messaggio Metrics
(REST, gRPC) riassume l'intera soluzione.
Alcune proprietà Metrics
importanti includono:
totalCost
è il costo totale sostenuto per completare i percorsi. Scopri di più sui costi in Parametri del modello di costo.usedVehicleCount
è il numero totale di veicoli utilizzati nella soluzione. I veicoli potrebbero avere percorsi vuoti quando l'ottimizzatore ne determina l'utilizzo non è necessaria.skippedMandatoryShipmentCount
è il numero di spedizioni saltate che sono "obbligatorio". Una spedizione obbligatoria non specifica unpenaltyCost
che sia se la spedizione viene saltata. Le spedizioni obbligatorie possono comunque saltati se le loro prestazioni non sono attuabili secondo i vincoli specificati. Per ulteriori informazioni sui costi, consulta Parametri del modello di costo.
Le metriche aggiuntive vengono segnalate come messaggi AggregatedMetrics
(REST,
gRPC). Il tipo di messaggio AggregatedMetrics
viene utilizzato per
Metrics.aggregatedRouteMetrics
e per ShipmentRoute.metrics
la proprietà Metrics.aggregatedRouteMetrics
contiene metriche aggregate
ShipmentRoute
in OptimizeToursResponse
. Ogni proprietà ShipmentRoute.metrics
contiene le metriche per quel determinato ShipmentRoute
.
Le proprietà importanti di AggregatedMetrics
includono:
performedShipmentCount
è il numero di spedizioni effettuate dai veicoli lungo i loro percorsi.travelDuration
è il tempo totale che i veicoli trascorrono in transito durante completano i loro percorsi.waitDuration
è il tempo totale di attesa dei veicoli durante il completamento i loro percorsi.delayDuration
è il tempo totale di ritardo per i veicoli. Di solito è zero, a meno che nella richiesta non vengano utilizzatiTransitionAttributes
.breakDuration
è il tempo totale che i veicoli trascorrono nelle pause durante le pause completano i loro percorsi.visitDuration
è il tempo totale impiegato dai veicoli per eseguire visite durante completano i loro percorsi. Si tratta della somma di tutti Valori diVisitRequest.duration
perVisitRequest
corrispondenti aVisit
assegnate al veicolo pertinente.totalDuration
è la durata totale necessaria per completare i percorsi dei veicoli.travelDistanceMeters
è la distanza totale percorsa dai veicoli mentre completano i loro percorsi.maxLoads
mappa i tipi di carico alla quantità massima di carico trasmessa dalla veicoli in qualsiasi punto del loro percorso.
Un esempio di messaggio Metrics
ha il seguente aspetto:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
Esempio completo
Viene visualizzata una risposta di esempio completa per la richiesta da Costruisci una richiesta come:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}