OptimizeToursResponse

Risposta dopo aver risolto un problema di ottimizzazione del tour contenente i percorsi seguiti da ciascun veicolo, le spedizioni che sono state saltate e il costo complessivo della soluzione.

Rappresentazione JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
Campi
routes[]

object (ShipmentRoute)

Percorsi calcolati per ogni veicolo; il percorso i-esimo corrisponde al veicolo i-esimo nel modello.

requestLabel

string

Copia di OptimizeToursRequest.label, se è stata specificata un'etichetta nella richiesta.

skippedShipments[]

object (SkippedShipment)

L'elenco di tutte le spedizioni ignorate.

validationErrors[]

object (OptimizeToursValidationError)

Elenco di tutti gli errori di convalida che siamo riusciti a rilevare in modo indipendente. Leggi la spiegazione "MULTIPLI ERRORI" per il messaggio OptimizeToursValidationError. Invece di errori, verranno inclusi avvisi nel caso in cui solvingMode sia DEFAULT_SOLVE.

metrics

object (Metrics)

Metriche di durata, distanza e utilizzo per questa soluzione.

OptimizeToursValidationError

Descrive un errore o un avviso riscontrato durante la convalida di OptimizeToursRequest.

Rappresentazione JSON
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
Campi
code

integer

Un errore di convalida viene definito dalla coppia (code, displayName), che sono sempre presenti.

I campi che seguono questa sezione forniscono ulteriori informazioni sull'errore.

DIVERSI ERRORI: quando sono presenti più errori, il processo di convalida prova a generarne diversi. Si tratta di un processo imperfetto, proprio come per un compilatore. Alcuni errori di convalida sono "fatali", il che significa che interrompono l'intera procedura di convalida. Questo è il caso, tra gli altri, di displayName="UNSPECIFIED" errori. Alcuni errori possono causare l'esclusione di altri dalla procedura di convalida.

STABILITÀ: code e displayName devono essere molto stabili. Tuttavia, nel tempo potrebbero comparire nuovi codici e nomi visualizzati, il che potrebbe causare la generazione di una coppia (code, displayName) diversa per una determinata richiesta (non valida) perché il nuovo errore ha nascosto quello precedente. Ad esempio, consulta "MULTIPLI ERRORI".

displayName

string

Il nome visualizzato dell'errore.

fields[]

object (FieldReference)

Un contesto di errore può coinvolgere 0, 1 (nella maggior parte dei casi) o più campi. Ad esempio, puoi fare riferimento al veicolo n. 4 e al primo ritiro della spedizione n. 2 nel seguente modo:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

Tieni presente, tuttavia, che la cardinalità di fields non deve cambiare per un determinato codice di errore.

errorMessage

string

Stringa leggibile che descrive l'errore. Esiste una mappatura 1:1 tra code e errorMessage (con il codice != "UNSPECIFIED").

STABILITÀ: non stabile: il messaggio di errore associato a un determinato code potrebbe cambiare (si spera di essere chiarito) nel tempo. Utilizza invece displayName e code.

offendingValues

string

Può contenere i valori dei campi. Questa opzione non è sempre disponibile. Non devi assolutamente fare affidamento su questo valore e devi utilizzarlo solo per il debug manuale del modello.

FieldReference

Specifica un contesto per l'errore di convalida. Un FieldReference fa sempre riferimento a un determinato campo di questo file e segue la stessa struttura gerarchica. Ad esempio, potremmo specificare l'elemento 2 di startTimeWindows del veicolo 5 utilizzando:

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

Tuttavia, omettiamo le entità di primo livello come OptimizeToursRequest o ShipmentModel per evitare di affollare il messaggio.

Rappresentazione JSON
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
Campi
name

string

Nome del campo, ad esempio "veicoli".

subField

object (FieldReference)

Se necessario, sottocampo nidificato in modo ricorsivo.

Campo unione index_or_key.

index_or_key può essere solo uno dei seguenti:

index

integer

Indice del campo se ripetuto.

key

string

Chiave se il campo è una mappa.

Metriche

Metriche complessive, aggregate per tutti i percorsi.

Rappresentazione JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
Campi
aggregatedRouteMetrics

object (AggregatedMetrics)

Dati aggregati sulle route. Ogni metrica indica la somma (o il valore massimo per i caricamenti) di tutti i campi ShipmentRoute.metrics con lo stesso nome.

skippedMandatoryShipmentCount

integer

Numero di importazioni obbligatorie saltate.

usedVehicleCount

integer

Numero di veicoli utilizzati. Nota: se il percorso di un veicolo è vuoto e il valore Vehicle.used_if_route_is_empty è true, il veicolo viene considerato usato.

earliestVehicleStartTime

string (Timestamp format)

La prima ora di inizio per un veicolo usato, calcolata come minima tra tutti i veicoli usati di ShipmentRoute.vehicle_start_time.

Un timestamp in formato "Zulu" UTC RFC3339, con risoluzione a livello di nanosecondo e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

L'ora di fine più recente per un veicolo usato, calcolata come valore massimo di ShipmentRoute.vehicle_end_time per tutti i veicoli usati.

Un timestamp nel formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: "2014-10-02T15:01:23Z" e "2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

Costo della soluzione, suddiviso in base ai campi delle richieste relativi al costo. Le chiavi sono percorsi proto, relativi all'input OptimizeToursRequest, ad esempio "model.shipments.pickups.cost", e i valori sono il costo totale generato dal campo del costo corrispondente, aggregato nell'intera soluzione. In altre parole, costs["model.shipments.pickups.cost"] è la somma di tutti i costi di ritiro della soluzione. Tutti i costi definiti nel modello sono riportati in dettaglio qui, ad eccezione dei costi relativi a TransitionAttributes, che vengono riportati solo in modo aggregato a partire da gennaio 2022.

totalCost

number

Costo totale della soluzione. La somma di tutti i valori nella mappa dei costi.