Sendet eine OptimizeToursRequest mit einer ShipmentModel und gibt eine OptimizeToursResponse mit ShipmentRoute zurück. Das sind eine Reihe von Routen, die von Fahrzeugen gefahren werden sollen, um die Gesamtkosten zu minimieren.
Ein ShipmentModel-Modell besteht hauptsächlich aus Shipment, die ausgeführt werden müssen, und Vehicle, die zum Transport der Shipment verwendet werden können. Die ShipmentRoutes weisen Shipments Vehicles zu. Genauer gesagt weisen sie jedem Fahrzeug eine Reihe von Visits zu, wobei ein Visit einem VisitRequest entspricht, also einer Abholung oder Lieferung für ein Shipment.
Ziel ist es, ShipmentRoutes so Vehicles zuzuweisen, dass die Gesamtkosten minimiert werden. 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:
Wenn kein Ort angegeben ist, wird automatisch eine Region ausgewählt. |
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 zuerst eintritt. Bei asynchronen Anfragen generiert der Server (falls möglich) eine Lösung, bevor das Zeitlimit abgelaufen ist. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
model |
Zu lösendes Versandmodell. |
solvingMode |
Der Standardmodus ist |
searchMode |
Der Suchmodus, der zum Beantworten der Anfrage verwendet wurde. |
injectedFirstSolutionRoutes[] |
Den Optimierungsalgorithmus dabei unterstützen, eine erste Lösung zu finden, die einer früheren 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 praktikabel ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen kann ein Fehler zurückgegeben werden, der auf die Unmöglichkeit hinweist. |
injectedSolutionConstraint |
Den Optimierungsalgorithmus so einschränken, dass die endgültige Lösung einer vorherigen Lösung ähnelt. Dies kann beispielsweise verwendet werden, um Abschnitte von Routen zu fixieren, die bereits abgeschlossen sind oder abgeschlossen werden sollen, aber nicht geändert werden dürfen. Wenn die eingefügte Lösung nicht praktikabel ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen kann ein Fehler zurückgegeben werden, der auf die Unmöglichkeit hinweist. |
refreshDetailsRoutes[] |
Wenn nicht leer, werden die angegebenen Routen aktualisiert, ohne dass die zugrunde liegende Reihenfolge der Besuche oder Reisezeiten geändert wird. 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 |
Falls zutreffend:
Diese Interpretation gilt für die Felder Bei „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 impliziten Einschränkungen auswirken. Das kann zu einer Änderung der Lösung, zu Validierungsfehlern oder zu einer Unmöglichkeit führen. HINWEIS: Der Anrufer muss dafür sorgen, dass jede |
considerRoadTraffic |
Berücksichtigen Sie die Traffic-Schätzung bei der Berechnung der Felder |
populatePolylines |
Bei „true“ werden Polylinien in Antwort- |
populateTransitionPolylines |
Bei „true“ werden Polylinien und Routen-Tokens in der Antwort |
allowLargeDeadlineDespiteInterruptionRisk |
Wenn dieser Wert festgelegt ist, kann die Anfrage ein Zeitlimit von bis zu 60 Minuten haben (siehe https://grpc.io/blog/deadlines). Andernfalls beträgt die maximale Frist nur 30 Minuten. Beachten Sie, dass bei Anfragen mit langer Laufzeit ein deutlich höheres (aber immer noch geringes) Risiko besteht, dass sie unterbrochen werden. |
useGeodesicDistances |
Wenn „true“, werden die Entfernungen mit geodätischen Entfernungen anstelle von Google Maps-Entfernungen berechnet und die Reisezeiten mit geodätischen Entfernungen mit einer von |
label |
Label, das zur Identifizierung dieser Anfrage verwendet werden kann und in |
geodesicMetersPerSecond |
Wenn |
maxValidationErrors |
Kürzt die Anzahl der zurückgegebenen Validierungsfehler. Diese Fehler sind in der Regel an eine INVALID_ARGUMENT-Fehlernutzlast als BadRequest-Fehlerdetail angehängt (https://cloud.google.com/apis/design/errors#error_details), es sei denn, solvingMode=VALIDATE_ONLY: siehe das 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.