Es wird eine OptimizeToursRequest mit einer ShipmentModel gesendet und eine OptimizeToursResponse mit ShipmentRoutes zurückgegeben. Das sind eine Reihe von Routen, die von Fahrzeugen ausgeführt werden, 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 den Vehicles zu. Konkret ordnet er jedem Fahrzeug eine Reihe von Visit zu, wobei eine Visit einer VisitRequest entspricht, also einer Abholung oder Lieferung für eine Shipment.
Ziel ist es, ShipmentRoutes den Vehicles so 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 für einen Anruf festlegen. Format: * Wenn kein Standort 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 überschritten oder die Serverfrist für synchrone Anfragen erreicht ist, je nachdem, was früher eintritt. Bei asynchronen Anfragen generiert der Server (wenn möglich) vor Ablauf des Zeitlimits eine Lösung. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
model |
Zu lösendes Versandmodell. |
solvingMode |
Standardmäßig ist der Lösungsmodus |
searchMode |
Der Suchmodus, der zur Lösung der Anfrage verwendet wurde. |
injectedFirstSolutionRoutes[] |
Den Optimierungsalgorithmus bei der Suche nach einer ersten Lösung unterstützen, 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 injizierte Lösung nicht durchführbar ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen wird möglicherweise ein Fehler zurückgegeben, der die Nichtdurchführbarkeit anzeigt. |
injectedSolutionConstraint |
Der Optimierungsalgorithmus wird so eingeschränkt, dass eine endgültige Lösung gefunden wird, die einer früheren Lösung ähnelt. So können Sie beispielsweise Teile von Routen sperren, die bereits abgeschlossen sind oder noch abgeschlossen werden sollen, aber nicht geändert werden dürfen. Wenn die eingebrachte Lösung nicht realisierbar ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen kann ein Fehler zurückgegeben werden, der auf die Unmöglichkeit hinweist. |
refreshDetailsRoutes[] |
Wenn die Liste nicht leer ist, werden die angegebenen Routen aktualisiert, ohne dass die zugrunde liegende Abfolge der Besuche oder die Fahrtzeiten geändert werden. Es werden nur andere Details aktualisiert. Damit ist das Modell nicht gelöst. Seit dem 11. Dezember 2020 werden damit nur Polylinien nicht leerer Routen gefüllt und Die Dieses Feld darf nicht zusammen mit
|
interpretInjectedSolutionsUsingLabels |
Falls wahr:
Diese Interpretation gilt für die Felder Falls wahr, dürfen Labels in den folgenden Kategorien höchstens einmal in ihrer Kategorie vorkommen:
Wenn ein Das Entfernen von Routenbesuchen oder ganzer Routen aus einer eingefügten Lösung kann sich auf die implizierten Einschränkungen auswirken, was zu einer Änderung der Lösung, Validierungsfehlern oder Undurchführbarkeit führen kann. HINWEIS: Der Aufrufer muss dafür sorgen, dass jede |
considerRoadTraffic |
Berücksichtigen Sie die Traffic-Schätzung beim Berechnen der |
populatePolylines |
Falls wahr, werden Polylinien in Antwort- |
populateTransitionPolylines |
Wenn „true“ (wahr) festgelegt ist, werden Polylinien in Antwort |
allowLargeDeadlineDespiteInterruptionRisk |
Wenn diese Option 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 langlebigen Anfragen das Risiko einer Unterbrechung deutlich höher (aber immer noch gering) ist. |
useGeodesicDistances |
Falls wahr, werden die Entfernungen anhand von geodätischen Entfernungen und nicht anhand von Entfernungen aus Google Maps berechnet. Die Reisezeiten werden anhand von geodätischen Entfernungen berechnet, wobei die Geschwindigkeit durch |
label |
Label, das zur Identifizierung dieser Anfrage verwendet werden kann und im |
geodesicMetersPerSecond |
Wenn |
maxValidationErrors |
Kürzt die Anzahl der zurückgegebenen Validierungsfehler. Diese Fehler werden in der Regel als BadRequest-Fehlerdetail an die Fehlernutzlast INVALID_ARGUMENT angehängt (https://cloud.google.com/apis/design/errors#error_details). Es sei denn, solutionsMode=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.