- Richiesta HTTP
- Parametri di percorso
- Corpo della richiesta
- Corpo della risposta
- Ambiti di autorizzazione
- Autorizzazioni IAM
Invia un OptimizeToursRequest contenente un ShipmentModel e restituisce un OptimizeToursResponse contenente ShipmentRoute, ovvero un insieme di percorsi che i veicoli devono eseguire riducendo al minimo il costo complessivo.
Un modello ShipmentModel è costituito principalmente da Shipment da eseguire e Vehicle che possono essere utilizzati per trasportare i Shipment. I ShipmentRoute assegnano Shipment a Vehicle. Più nello specifico, assegnano una serie di Visit a ogni veicolo, dove un Visit corrisponde a un VisitRequest, ovvero un ritiro o una consegna per un Shipment.
L'obiettivo è fornire un'assegnazione di ShipmentRoute a Vehicle che riduca al minimo il costo totale, dove il costo ha molti componenti definiti in ShipmentModel.
Richiesta HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
L'URL utilizza la sintassi di transcodifica gRPC.
Parametri di percorso
| Parametri | |
|---|---|
parent |
Obbligatorio. Progetto o località di destinazione per effettuare una chiamata. Formato:
I valori |
Corpo della richiesta
Il corpo della richiesta contiene dati con la seguente struttura:
| Rappresentazione JSON |
|---|
{ "timeout": string, "model": { object ( |
| Campi | |
|---|---|
timeout |
Se questo timeout è impostato, il server restituisce una risposta prima che sia trascorso il periodo di timeout o che venga raggiunta la scadenza del server per le richieste sincrone, a seconda di quale evento si verifica per primo. Per le richieste asincrone, il server genererà una soluzione (se possibile) prima della scadenza del timeout. |
model |
Modello di spedizione da risolvere. |
solvingMode |
Per impostazione predefinita, la modalità di risoluzione è |
searchMode |
Modalità di ricerca utilizzata per risolvere la richiesta. |
injectedFirstSolutionRoutes[] |
Guida l'algoritmo di ottimizzazione nella ricerca di una prima soluzione simile a una soluzione precedente. Il modello viene vincolato quando viene creata la prima soluzione. Tutte le spedizioni non eseguite su un percorso vengono implicitamente ignorate nella prima soluzione, ma possono essere eseguite nelle soluzioni successive. La soluzione deve soddisfare alcune ipotesi di validità di base:
Se la soluzione inserita non è fattibile, non viene necessariamente restituito un errore di convalida, ma potrebbe essere restituito un errore che indica l'infattibilità. |
injectedSolutionConstraint |
Vincola l'algoritmo di ottimizzazione per trovare una soluzione finale simile a una soluzione precedente. Ad esempio, può essere utilizzato per bloccare parti di percorsi già completati o che devono essere completati, ma non devono essere modificati. Se la soluzione inserita non è fattibile, non viene necessariamente restituito un errore di convalida, ma potrebbe essere restituito un errore che indica l'infattibilità. |
refreshDetailsRoutes[] |
Se non è vuoto, i percorsi specificati verranno aggiornati senza modificare la sequenza di visite o i tempi di percorrenza sottostanti: verranno aggiornati solo gli altri dettagli. Questo non risolve il modello. A partire da novembre 2020, questo campo compila solo le polilinee dei percorsi non vuoti e richiede che I campi Questo campo non deve essere utilizzato insieme a
|
interpretInjectedSolutionsUsingLabels |
Se true:
Questa interpretazione si applica ai campi Se true, le etichette nelle seguenti categorie devono essere visualizzate al massimo una volta nella loro categoria:
Se un La rimozione di visite di un percorso o di interi percorsi da una soluzione inserita potrebbe avere un effetto sui vincoli impliciti, il che potrebbe portare a una modifica della soluzione, a errori di convalida o all'impossibilità di esecuzione. NOTA: il chiamante deve assicurarsi che ogni |
considerRoadTraffic |
Prendi in considerazione la stima del traffico nel calcolo dei campi |
populatePolylines |
Se impostato su true, le polilinee verranno inserite negli elementi |
populateTransitionPolylines |
Se true, le polilinee e i token di percorso verranno compilati nella risposta |
allowLargeDeadlineDespiteInterruptionRisk |
Se questo campo è impostato, la richiesta può avere una scadenza (vedi https://grpc.io/blog/deadlines) fino a 60 minuti. In caso contrario, la scadenza massima è di soli 30 minuti. Tieni presente che le richieste di lunga durata presentano un rischio di interruzione significativamente maggiore (ma comunque ridotto). |
useGeodesicDistances |
Se true, le distanze di viaggio verranno calcolate utilizzando le distanze geodetiche anziché quelle di Google Maps e i tempi di percorrenza verranno calcolati utilizzando le distanze geodetiche con una velocità definita da |
label |
Etichetta che può essere utilizzata per identificare questa richiesta, riportata in |
geodesicMetersPerSecond |
Quando |
maxValidationErrors |
Tronca il numero di errori di convalida restituiti. Questi errori sono in genere allegati a un payload di errore INVALID_ARGUMENT come dettaglio dell'errore BadRequest (https://cloud.google.com/apis/design/errors#error_details), a meno che solvingMode=VALIDATE_ONLY: consulta il campo |
Corpo della risposta
In caso di esito positivo, il corpo della risposta contiene un'istanza di OptimizeToursResponse.
Ambiti di autorizzazione
Richiede il seguente ambito OAuth:
https://www.googleapis.com/auth/cloud-platform
Autorizzazioni IAM
Richiede la seguente autorizzazione IAM per la risorsa parent:
routeoptimization.locations.use
Per saperne di più, consulta la documentazione di IAM.