Ziel der Route Optimization API ist es, Routen für eine Flotte von Fahrzeugen zu planen, um eine Reihe von Standorten anzufahren. Das Objekt OptimizeToursRequest beschreibt die Attribute dieser Fahrzeuge und Standorte und ist die primäre Struktur des Anfragetexts jedes Endpunkts.
Die Basisstruktur des Objekts OptimizeToursRequest sieht so aus:
- Das Feld
modelenthält eineShipmentModel-Nachricht mit zwei Schlüsselfeldern:
In diesem Dokument werden die folgenden Nachrichtentypen beschrieben:
ShipmentModel: Enthält die Liste der Sendungen, verfügbaren Fahrzeuge und anderer Objekte, die ihre Beziehungen beschreiben.Shipment: Beschreibt Standorte, die von einem Fahrzeug angefahren werden sollen. Sie können für tatsächliche Pakete stehen, die abgeholt und zugestellt werden müssen, oder für Orte, an denen der Fahrer des Fahrzeugs eine Dienstleistung erbringt.Vehicle: Beschreibt das Transportmittel zwischen den Standorten der Sendungen. Jedes Fahrzeug entspricht einem tatsächlichen Fahrzeug oder einer Person, die sich zu Fuß bewegt.
ShipmentModel
ShipmentModel enthält die Elemente des Routenoptimierungsproblems. Es enthält eine Reihe von Sendungen, die von einer Reihe von Fahrzeugen ausgeführt werden können, wobei Einschränkungen berücksichtigt und die Gesamtkosten minimiert werden.
In der folgenden Tabelle werden einige relevante Attribute von ShipmentModel beschrieben:
| Attribute | Beschreibung |
|---|---|
shipments und vehicles |
Erforderliche Objekte, die die Details einer oder mehrerer Sendungen und Fahrzeuge enthalten. |
globalStartTime und globalEndTime |
Gibt Beginn und Ende des Zeitfensters an, in dem alle Fahrzeuge alle Sendungen abschließen müssen. Diese Attribute sind zwar nicht erforderlich, sollten aber angegeben werden , da der Optimizer am besten funktioniert, wenn Zeitbeschränkungen eingehalten werden. |
Eine vollständige Liste der Attribute in
ShipmentModel finden Sie in der Referenzdokumentation.
ShipmentModel-Beispiel
In diesem Beispiel betreiben Sie eine Hundetagesstätte und beginnen mit der Erstellung Ihrer Anfrage. Sie definieren Sendungen und Fahrzeuge später, möchten aber zuerst Ihre Öffnungszeiten und die Betriebskosten pro Stunde festlegen.
In diesem Beispiel sind die ShipmentModel-Attributwerte in Ihrer Anfrage die
folgenden:
| Attribut | Wert | Beschreibung |
|---|---|---|
globalStartTime |
2024-02-13T00:00:00.000Z | Startdatum und -zeit der Öffnungszeiten. |
globalEndTime |
2024-02-14T06:00:00.000Z | Enddatum und -zeit der Öffnungszeiten. |
Im Folgenden finden Sie ein Codebeispiel für eine ShipmentModel-Nachricht mit den
Werten aus dem Beispielszenario.
{ "model": { "shipments": [ ... ], "vehicles": [ ... ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }
Shipment
Der Shipment Nachrichtentyp definiert die Attributstruktur einer Sendung, die
zugestellt werden kann, oder einer Dienstleistung, die auf einer Route ausgeführt werden kann.
Wie im Diagramm dargestellt:
- Eine
Shipment-Nachricht enthält alle Informationen zu einer tatsächlichen Sendung oder Dienstleistung. - Alle
Shipment-Nachrichten werden im Feldshipmentsangegeben. - Das
shipmentsFeld enthält eine oder mehrereShipmentNachrichten.
Eine Shipment-Nachricht erfordert mindestens ein pickups- oder deliveries-Objekt.
Die Definitionen dieser Objekte sind die folgenden:
pickupsdefiniert den Abholort einer Sendung.deliveriesdefiniert den Zustellort einer Sendung.- Sowohl
pickupsals auchdeliveriesenthalten einenVisitRequest-Nachrichtentyp, der Standorte und andere Details definiert.
In der folgenden Tabelle werden die verschiedenen Szenarien basierend auf der Konfiguration
von pickups und deliveries in einer Shipment-Nachricht beschrieben.
| Szenario | Beschreibung |
|---|---|
Nur pickups |
Es wird davon ausgegangen, dass Sie nur die Sendung abholen. |
Nur deliveries |
Es wird davon ausgegangen, dass Sie die Sendung bereits geladen haben oder eine Dienstleistung erbringen. |
Sowohl pickups als auch deliveries |
Das zugewiesene Fahrzeug muss zuerst die Abholung und dann die Zustellung durchführen. Nur das Fahrzeug, das die Abholung durchgeführt hat, kann die Zustellung durchführen. |
Mehrere pickups oder deliveries |
Wenn für eine Sendung mehrere Möglichkeiten für pickups oder deliveries aufgeführt sind, wählt der Optimizer eine Abhol- und eine Zustelloption aus, um die Kosten zu minimieren und die Einschränkungen zu erfüllen. |
Eine vollständige Liste der Attribute in
Shipment finden Sie in der Referenzdokumentation.
Shipment-Beispiel
In diesem Beispiel betreiben Sie eine Hundetagesstätte, bei der Sie Hunde von zu Hause abholen und zu Ihrer Tagesstätte bringen. Sie möchten den Abholort von zwei Hunden festlegen und als Zustellort Ihr Unternehmen angeben:
- Das Zuhause des ersten Hundes befindet sich am Coit Tower in San Francisco. Die Koordinaten dieses Standorts sind 37,8024 Breitengrad und -122,4058 Längengrad.
- Das Zuhause des zweiten Hundes befindet sich im South Sunset Playground Park in San Francisco. Die Koordinaten dieses Standorts sind 37,7359 Breitengrad und -122,5011 Längengrad.
- Ihre Hundetagesstätte befindet sich im Mission Dolores Park in San Francisco. Die Koordinaten dieses Standorts sind 37,759773 Breitengrad und -122,427063 Längengrad.
Im Folgenden finden Sie ein Codebeispiel für eine Shipment-Nachricht, wobei das Objekt shipments
zwei Shipment-Nachrichtentypen mit den Beispielkoordinaten enthält.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ ... ] } }
Vehicle
Der Vehicle Nachrichtentyp definiert die Attributstruktur eines Fahrzeugs, das
eine Sendung auf einer Route ausführen kann.
Wie im Diagramm dargestellt:
- Eine
Vehicle-Nachricht enthält alle Informationen zu einem tatsächlichen Fahrzeug. - Alle
Vehicle-Nachrichten werden im Feldvehiclesangegeben. - Das
vehiclesFeld enthält mehrereVehicleNachrichten.
In der folgenden Tabelle werden einige relevante Attribute eines Vehicle beschrieben.
| Attribute | Beschreibung |
|---|---|
startLocation und endLocation |
Der Start- und Zielort der Fahrzeuge, die Teil der endgültigen optimierten Route sind. Wenn sie nicht definiert sind, werden standardmäßig die Standorte der ersten Abholung und der letzten Zustellung verwendet. |
costPerHour, costPerKilometer, costPerTraveledHour |
Fahrzeugspezifische Kostenparameter. Es wird empfohlen, mindestens einen Kostenparameter in Ihre Anfrage aufzunehmen, damit die API eine optimierte Route zurückgeben kann. Weitere Informationen zu Kosten finden Sie im Schlüsselkonzept Kostenmodell. |
startTimeWindows und endTimeWindows |
Definieren Sie die Zeiträume , in denen ein Fahrzeug auf einer Route eingesetzt werden kann. Diese müssen innerhalb des Zeitfensters globalStartTime und globalEndTime liegen, das in ShipmentModel festgelegt wurde. Dieses Attribut ist zwar nicht erforderlich, sollte aber angegeben werden , da der Optimizer am besten funktioniert, wenn Zeitbeschränkungen eingehalten werden. |
Vehicle-Beispiel
In diesem Beispiel betreiben Sie eine Hundetagesstätte und möchten den Standort Ihres Fahrzeugs zu Beginn und am Ende des Tages sowie den Kraftstoffverbrauch festlegen. Sie müssen die Arbeitszeiten des Fahrzeugs nicht angeben, da sie mit
den Zeiten übereinstimmen, die Sie in den Attributen globalStartTime und globalEndTime
im Objekt ShipmentModel definiert haben.
In diesem Beispiel sind die Vehicle-Attribute in Ihrer Anfrage die
folgenden:
| Attribut | Wert | Beschreibung |
|---|---|---|
startLocation |
latitude: 37,759773, longitude: -122,427063 |
Die Startkoordinaten der Route für Ihr Fahrzeug. Sie entsprechen dem Standort Ihrer Hundetagesstätte im Mission Dolores Park in San Francisco. |
endLocation |
latitude: 37,759773, longitude: -122,427063 |
Die Endkoordinaten der Route für Ihr Fahrzeug. Sie entsprechen dem Standort Ihrer Hundetagesstätte im Mission Dolores Park in San Francisco. |
costPerHour |
27 | Der Betrag, den Sie einem Fahrer für das Fahren Ihres Fahrzeugs für die Hundetagesstätte zahlen. Sie zahlen dem Fahrer 27 $ pro Stunde. |
Im Folgenden finden Sie ein Codebeispiel für eine Vehicle-Nachricht mit den
Werten aus dem Beispielszenario.
{ "model": { "shipments": [ ... ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ] } }
Eine vollständige Liste der Attribute in
Vehicle finden Sie in der Referenzdokumentation.
Vollständiges Beispiel für eine Anfrage
Das folgende Codebeispiel enthält eine vollständige Anfrage, in der die in diesem
Dokument gezeigten Beispiele für
ShipmentModel, Shipment und Vehicle kombiniert werden.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }