OptimizeToursResponse

Risposta dopo la risoluzione di un problema di ottimizzazione del percorso contenente gli itinerari 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)
    }
  ],
  "processedRequest": {
    object (OptimizeToursRequest)
  },
  "metrics": {
    object (Metrics)
  }
}
Campi
routes[]

object (ShipmentRoute)

Percorsi calcolati per ogni veicolo; l'i-esimo percorso corrisponde all'i-esimo veicolo 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. Consulta la spiegazione di "ERRORI MULTIPLI" per il messaggio OptimizeToursValidationError. Anziché errori, includerà avvisi nel caso in cui solvingMode sia DEFAULT_SOLVE.

processedRequest

object (OptimizeToursRequest)

In alcuni casi, modifichiamo la richiesta in entrata prima di risolverla, ad esempio aggiungendo costi. Se solvingMode == TRANSFORM_AND_RETURN_REQUEST, la richiesta modificata viene restituita qui.

Sperimentale: per ulteriori dettagli, consulta la pagina https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.

metrics

object (Metrics)

Metriche di durata, distanza e utilizzo per questa soluzione.

OptimizeToursValidationError

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

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

integer

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

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

PIÙ ERRORI: quando sono presenti più errori, la procedura di convalida tenta di restituirne diversi. Proprio come un compilatore, questo è un processo imperfetto. Alcuni errori di convalida sono "irreversibili", il che significa che interrompono l'intera procedura di convalida. Questo è il caso, tra gli altri, degli errori displayName="UNSPECIFIED". Alcuni errori potrebbero causare l'ignoramento di altri errori durante la procedura di convalida.

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

displayName

string

Il nome visualizzato dell'errore.

fields[]

object (FieldReference)

Un contesto di errore può coinvolgere 0, 1 (la maggior parte delle volte) o più campi. Ad esempio, il primo ritiro del veicolo n. 4 e della spedizione n. 2 può essere indicato 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 (quando code != "UNSPECIFIED").

STABILITÀ: non stabile: il messaggio di errore associato a un determinato code potrebbe cambiare (si spera per chiarirlo) nel tempo. Fai invece riferimento a displayName e code.

offendingValues

string

Può contenere il valore o i valori del campo o dei campi. Questa opzione non è sempre disponibile. Non dovresti assolutamente fare affidamento su questa funzionalità e utilizzarla 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 n. 2 di startTimeWindows del veicolo n. 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)
  },

  // The following is a list of mutually exclusive fields. At most one of the
  // fields will be set in a response:
  "index": integer,
  "key": string
  // End of mutually exclusive fields.
}
Campi
name

string

Nome del campo, ad esempio "vehicles".

subField

object (FieldReference)

Campo secondario nidificato in modo ricorsivo, se necessario.

Di seguito è riportato un elenco di campi che si escludono a vicenda. In una risposta verrà impostato al massimo uno dei campi:
index

integer

Indice del campo se ripetuto.

key

string

Chiave se il campo è una mappa.

Fine dei campi che si escludono a vicenda.

Metriche

Metriche complessive, aggregate su 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)

Aggregati sui percorsi. Ogni metrica è la somma (o il valore massimo, per i caricamenti) di tutti i campi ShipmentRoute.metrics con lo stesso nome.

skippedMandatoryShipmentCount

integer

Numero di spedizioni obbligatorie saltate.

usedVehicleCount

integer

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

earliestVehicleStartTime

string (Timestamp format)

L'ora di inizio più recente per un veicolo usato, calcolata come il minimo di tutti i veicoli usati di ShipmentRoute.vehicle_start_time.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

latestVehicleEndTime

string (Timestamp format)

L'ultimo orario di fine per un veicolo usato, calcolato come il massimo di tutti i veicoli usati di ShipmentRoute.vehicle_end_time.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

costs

map (key: string, value: number)

Costo della soluzione, suddiviso per campi della richiesta relativi ai costi. Le chiavi sono percorsi proto, relativi all'input OptimizeToursRequest, ad es. "model.shipments.pickups.cost", e i valori sono il costo totale generato dal campo 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 dal 01/01/2022.

totalCost

number

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