Mit der Route Optimization API können Sie Routen für eine Fahrzeugflotte planen, um eine Reihe von Orten zu besuchen. Das Objekt OptimizeToursRequest beschreibt die Eigenschaften dieser Fahrzeuge und Standorte und ist die primäre Struktur des Anfragetexts jedes Endpunkts.
Die Basisstruktur des OptimizeToursRequest-Objekts 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 anderen Objekte, die ihre Beziehungen beschreiben.Shipment: Beschreibt die Orte, die von einem Fahrzeug besucht werden sollen. Sie können tatsächliche Pakete darstellen, die abgeholt und zugestellt werden sollen, oder Orte, an denen der Fahrer eine Dienstleistung erbringt.Vehicle: Beschreibt das Transportmittel zwischen den Sendungsorten. Jedes Fahrzeug entspricht einem tatsächlichen Fahrzeug oder einer Person, die sich zu Fuß bewegt.
ShipmentModel
ShipmentModel enthält die Elemente des Routenoptimierungsproblems. Sie 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 den Beginn und das Ende des Zeitfensters an, in dem alle Fahrzeuge alle Sendungen abschließen müssen. Diese Properties sind zwar nicht erforderlich, es wird jedoch empfohlen, sie anzugeben, da der Optimierer am besten funktioniert, wenn er sich an zeitliche Einschränkungen hält. |
Eine vollständige Liste der Attribute in ShipmentModel finden Sie in der Referenzdokumentation.
Beispiel für ShipmentModel
In diesem Beispiel haben 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 stündlichen Betriebskosten festlegen.
In diesem Beispiel sind die Attributwerte für ShipmentModel in Ihrer Anfrage folgende:
| Attribut | Wert | Beschreibung |
|---|---|---|
globalStartTime |
2024-02-13T00:00:00.000Z | Startdatum und -uhrzeit 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 Nachrichtentyp Shipment definiert die Attributstruktur einer Sendung, die geliefert 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 realen Sendung oder Dienstleistung. - Alle
Shipment-Nachrichten werden im Feldshipmentsangegeben. - Das Feld
shipmentsenthält eine oder mehrereShipment-Nachrichten.
Eine Shipment-Nachricht erfordert mindestens ein pickups- oder deliveries-Objekt.
Diese Objekte sind so definiert:
pickupsdefiniert den Abholort einer Sendung.deliveriesdefiniert den Lieferort 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 vorab geladen haben oder eine Dienstleistung erbringen. |
Sowohl pickups als auch deliveries |
Das zugewiesene Fahrzeug muss zuerst die Abholung und dann die Lieferung ausführen. Nur das Fahrzeug, das die Abholung durchgeführt hat, kann die Lieferung ausführen. |
Mehrere pickups oder deliveries |
Wenn für eine Sendung mehrere Möglichkeiten für pickups oder deliveries aufgeführt sind, wählt der Optimierer eine Abholoption und eine Lieferoption 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.
Beispiel für Shipment
In diesem Beispiel betreiben Sie eine Hundetagesstätte, in der Sie Hunde von zu Hause abholen und in Ihre Tagesstätte bringen. Sie möchten den Abholort von zwei Hunden und den Lieferort für Ihr Unternehmen festlegen:
- Das Zuhause des ersten Hundes ist der Coit Tower in San Francisco. Die Koordinaten für diesen Standort sind Breitengrad 37,8024 und Längengrad -122,4058.
- Das Zuhause des zweiten Hundes befindet sich im South Sunset Playground Park in San Francisco. Die Koordinaten für diesen Ort sind Breitengrad 37,7359 und Längengrad -122,5011.
- Ihre Hundetagesstätte befindet sich im Mission Dolores Park, San Francisco. Die Koordinaten für diesen Standort sind Breitengrad 37,759773 und Längengrad -122,427063.
Im Folgenden finden Sie ein Codebeispiel für eine Shipment-Nachricht, in der das shipments-Objekt 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 Nachrichtentyp Vehicle 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 realen Fahrzeug. - Alle
Vehicle-Nachrichten werden im Feldvehiclesangegeben. - Das Feld
vehiclesenthält mehrereVehicle-Nachrichten.
In der folgenden Tabelle werden einige relevante Attribute eines Vehicle beschrieben.
| Attribute | Beschreibung |
|---|---|
startLocation und endLocation |
Start- und Zielort der Fahrzeuge, die Teil der endgültigen optimierten Route sind. Wenn sie nicht definiert sind, werden standardmäßig die Orte der ersten Abholung und der letzten Lieferung verwendet. |
costPerHour, costPerKilometer, costPerTraveledHour |
Fahrzeugspezifische Kostenparameter. Es wird empfohlen, mindestens einen Kostenparameter in Ihre Anfrage aufzunehmen, damit die API eine optimierte Route zurückgibt. Weitere Informationen zu den 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 ist. Diese Property ist zwar nicht erforderlich, es wird jedoch empfohlen, sie anzugeben, da der Optimierer am besten funktioniert, wenn er sich an zeitliche Einschränkungen hält. |
Beispiel für Vehicle
In diesem Beispiel haben Sie einen Hundebetreuungsservice und möchten den Standort Ihres Fahrzeugs am Anfang und Ende des Tages sowie den Benzinverbrauch definieren. 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 Attributwerte für Vehicle in Ihrer Anfrage folgende:
| Attribut | Wert | Beschreibung |
|---|---|---|
startLocation |
latitude: 37.759773, longitude: -122.427063 |
Die Startkoordinaten der Route für Ihr Fahrzeug. Diese 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. Diese entsprechen dem Standort Ihrer Hundetagesstätte im Mission Dolores Park in San Francisco. |
costPerHour |
27 | Wie viel Sie einem Fahrer für das Fahren Ihres Fahrzeugs für die Hundetagesstätte zahlen. Sie bezahlen 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 Anfragebeispiel
Das folgende Codebeispiel zeigt eine vollständige Anfrage, in der die Beispiele für ShipmentModel, Shipment und Vehicle aus diesem Dokument 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" } }