Sendet eine OptimizeToursRequest mit einer ShipmentModel und gibt eine OptimizeToursResponse mit ShipmentRoutes zurück. Das sind Routen, die von Fahrzeugen gefahren werden sollen, um die Gesamtkosten zu minimieren.
Ein ShipmentModel-Modell besteht hauptsächlich aus Shipments, die ausgeführt werden müssen, und Vehicles, die zum Transport der Shipments verwendet werden können. Die ShipmentRoutes weisen Shipments zu Vehicles zu. Genauer gesagt wird jedem Fahrzeug eine Reihe von Visits zugewiesen, wobei ein Visit einem VisitRequest entspricht, also einer Abholung oder Lieferung für einen Shipment.
Das Ziel ist es, ShipmentRoutes zu Vehicles zuzuweisen, um die Gesamtkosten zu minimieren. Die Kosten haben viele Komponenten, die in der ShipmentModel definiert sind.
HTTP-Anfrage
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours
Die URL verwendet die Syntax der gRPC-Transcodierung.
Pfadparameter
| Parameter | |
|---|---|
parent |
Erforderlich. Zielprojekt oder Standort zum Anrufen festlegen. Format:
Regionale |
Anfragetext
Der Anfragetext enthält Daten mit folgender Struktur:
| JSON-Darstellung |
|---|
{ "timeout": string, "model": { object ( |
| Felder | |
|---|---|
timeout |
Wenn dieses Zeitlimit festgelegt ist, gibt der Server eine Antwort zurück, bevor das Zeitlimit abgelaufen ist oder die Serverfrist für synchrone Anfragen erreicht ist, je nachdem, was früher eintritt. Bei asynchronen Anfragen generiert der Server (wenn möglich) eine Lösung, bevor das Zeitlimit abgelaufen ist. |
model |
Zu lösendes Sendungsmodell. |
solvingMode |
Standardmäßig ist der Lösungsmodus |
searchMode |
Suchmodus, der zum Lösen der Anfrage verwendet wird. |
injectedFirstSolutionRoutes[] |
Den Optimierungsalgorithmus anleiten, eine erste Lösung zu finden, die einer vorherigen Lösung ähnelt. Das Modell wird eingeschränkt, wenn die erste Lösung erstellt wird. Alle Sendungen, die nicht auf einer Route ausgeführt werden, werden in der ersten Lösung implizit übersprungen, können aber in nachfolgenden Lösungen ausgeführt werden. Die Lösung muss einige grundlegende Gültigkeitsannahmen erfüllen:
Wenn die eingefügte Lösung nicht möglich ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen kann ein Fehler zurückgegeben werden, der auf die Unmöglichkeit hinweist. |
injectedSolutionConstraint |
Schränken Sie den Optimierungsalgorithmus ein, um eine endgültige Lösung zu finden, die einer vorherigen Lösung ähnelt. Damit können beispielsweise Teile von Routen eingefroren werden, die bereits abgeschlossen sind oder die abgeschlossen werden sollen, aber nicht geändert werden dürfen. Wenn die eingefügte Lösung nicht möglich ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen kann ein Fehler zurückgegeben werden, der auf die Unmöglichkeit hinweist. |
refreshDetailsRoutes[] |
Wenn das Feld nicht leer ist, werden die angegebenen Routen aktualisiert, ohne dass die zugrunde liegende Reihenfolge der Besuche oder die Fahrzeiten geändert werden. Es werden nur andere Details aktualisiert. Das Modell wird dadurch nicht gelöst. Seit November 2020 werden damit nur die Polylinien von nicht leeren Routen ausgefüllt. Außerdem muss Die Dieses Feld darf nicht zusammen mit
|
interpretInjectedSolutionsUsingLabels |
Wenn „true“:
Diese Interpretation gilt für die Felder Wenn „true“, dürfen Labels in den folgenden Kategorien höchstens einmal in ihrer Kategorie vorkommen:
Wenn ein Wenn Sie Routenbesuche oder ganze Routen aus einer eingefügten Lösung entfernen, kann sich das auf die implizierten Einschränkungen auswirken. Dies kann zu einer Änderung der Lösung, zu Validierungsfehlern oder zu einer Unmöglichkeit der Ausführung führen. HINWEIS: Der Aufrufer muss dafür sorgen, dass jedes |
considerRoadTraffic |
Berücksichtigen Sie die Traffic-Schätzung bei der Berechnung der |
populatePolylines |
Wenn „true“, werden Polylinien in den |
populateTransitionPolylines |
Wenn „true“, werden Polylinien und Routentokens in der Antwort |
allowLargeDeadlineDespiteInterruptionRisk |
Wenn diese Option festgelegt ist, kann die Anfrage eine Frist (siehe https://grpc.io/blog/deadlines) von bis zu 60 Minuten haben. Andernfalls beträgt die maximale Frist nur 30 Minuten. Beachten Sie, dass langlebige Anfragen ein deutlich größeres (aber immer noch geringes) Risiko für Unterbrechungen haben. |
useGeodesicDistances |
Wenn „true“, werden Entfernungen anhand von geodätischen Entfernungen anstelle von Google Maps-Entfernungen berechnet. Die Reisezeiten werden anhand von geodätischen Entfernungen mit einer durch |
label |
Label, das zur Identifizierung dieser Anfrage verwendet werden kann und in der |
geodesicMetersPerSecond |
Wenn |
maxValidationErrors |
Kürzt die Anzahl der zurückgegebenen Validierungsfehler. Diese Fehler werden in der Regel als BadRequest-Fehlerdetail (https://cloud.google.com/apis/design/errors#error_details)) an eine INVALID_ARGUMENT-Fehlernutzlast angehängt, es sei denn, solvingMode=VALIDATE_ONLY: siehe Feld |
Antworttext
Wenn der Vorgang erfolgreich abgeschlossen wurde, enthält der Antworttext eine Instanz von OptimizeToursResponse.
Autorisierungsbereiche
Erfordert den folgenden OAuth-Bereich:
https://www.googleapis.com/auth/cloud-platform
IAM-Berechtigungen
Erfordert die folgende IAM-Berechtigung für die Ressource parent:
routeoptimization.locations.use
Weitere Informationen finden Sie in der IAM-Dokumentation.