Sendet eine OptimizeToursRequest
mit einem ShipmentModel
und gibt eine OptimizeToursResponse
mit ShipmentRoute
s zurück. Dies sind eine Reihe von Routen, die von Fahrzeugen ausgeführt werden sollen, um so die Gesamtkosten zu minimieren.
Ein ShipmentModel
-Modell besteht hauptsächlich aus Shipment
s, die ausgeführt werden müssen, und Vehicle
s, die für den Transport der Shipment
s verwendet werden können. Die ShipmentRoute
weisen den Vehicle
-Werten Shipment
-Werte zu. Genauer gesagt, wird jedem Fahrzeug eine Reihe von Visit
s zugewiesen, wobei eine Visit
einer VisitRequest
entspricht, also einem Abhol- oder Lieferservice für ein Shipment
.
Das Ziel besteht darin, eine Zuweisung von ShipmentRoute
s zu Vehicle
s bereitzustellen, um die Gesamtkosten zu minimieren, wenn bei den Kosten viele Komponenten in der ShipmentModel
definiert sind.
HTTP-Anfrage
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
Die URL verwendet die Syntax der gRPC-Transcodierung.
Pfadparameter
Parameter | |
---|---|
parent |
Erforderlich. Zielprojekt oder -ort für den Aufruf. 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 |
Suchmodus, der zum Lösen der Anfrage verwendet wird. |
injectedFirstSolutionRoutes[] |
Leiten Sie den Optimierungsalgorithmus an, um eine erste Lösung zu finden, die einer vorherigen Lösung ähnelt. Das Modell wird beim Erstellen der ersten Lösung eingeschränkt. Alle Lieferungen, die nicht auf einer Route durchgeführt werden, werden in der ersten Lösung implizit übersprungen, können jedoch in aufeinanderfolgenden Lösungen durchgefü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 |
Schränken Sie den Optimierungsalgorithmus ein, um eine endgültige Lösung zu finden, die einer vorherigen Lösung ähnelt. Dies kann beispielsweise verwendet werden, um Teile von Routen zu fixieren, die bereits abgeschlossen sind oder noch abgeschlossen werden müssen, aber nicht geändert werden dürfen. 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. |
refreshDetailsRoutes[] |
Wenn das Feld nicht leer ist, werden die angegebenen Routen aktualisiert, ohne dass die zugrunde liegende Abfolge von Besuchen oder Fahrtzeiten geändert wird. 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 eine 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 sicherstellen, dass jedes |
considerRoadTraffic |
Berücksichtigen Sie bei der Berechnung der |
populatePolylines |
Bei Einstellung auf „true“ werden Polylinien in Antwort- |
populateTransitionPolylines |
Falls wahr, werden Polylinien in der Antwort |
allowLargeDeadlineDespiteInterruptionRisk |
Wenn dieser festgelegt ist, kann die Anfrage ein Zeitlimit (siehe https://grpc.io/blog/deadlines) von bis zu 60 Minuten haben. Andernfalls beträgt die maximale Frist nur 30 Minuten. Beachten Sie, dass bei langlebigen Anfragen ein erheblich größeres, aber dennoch geringes Unterbrechungsrisiko besteht. |
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, deren 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, ResolveMode=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.