Zeitfenster geben den Zeitpunkt für Ereignisse auf einer Route an. Diese Ereignisse können den Start und das Ende einer Fahrerroute, geplante Abhol- und Lieferzeiten oder die Dauer einer gesamten Route umfassen.
Zeitfenster können Ziele wie die folgenden unterstützen:
- Abholungen und Lieferungen innerhalb des angegebenen Zeitrahmens durchführen.
- Routen planen, um innerhalb der allgemeinen Geschäftszeiten zu arbeiten.
- Fahrzeuge müssen Routen innerhalb bestimmter Zeiträume beginnen und beenden.
Struktur
Wie im Diagramm dargestellt, sind Zeiträume so strukturiert:
globalStartTime
undglobalEndTime
sind Attribute vonShipmentModel
.timeWindows
sind Attribute von:pickups
inShipment
.deliveries
inShipment
.
startTimeWindows
undendTimeWindows
sind Attribute vonVehicle
.
Checkliste für Essentials
Attribute
In der folgenden Tabelle werden die globalen Eigenschaften für Zeiträume beschrieben.
Attribut | Format | Beschreibung |
---|---|---|
globalStartTime |
Timestamp |
Die früheste Zeit für ein beliebiges Ereignis. |
globalEndTime |
Timestamp |
Die späteste Uhrzeit für ein beliebiges Ereignis. |
In der folgenden Tabelle werden die Attribute des Zeitfensters für Sendungen und Fahrzeuge beschrieben.
Hat Kinder | Attribut | Format | Beschreibung |
---|---|---|---|
Shipment.pickups |
timeWindows |
Array von TimeWindow -Nachrichtentypen. |
Gibt Zeitintervalle für die Abholung einer Sendung an. |
Shipment.deliveries |
timeWindows |
Gibt Zeitintervalle für die Lieferung einer Sendung an. | |
Vehicle |
startTimeWindows |
Gibt die Startzeit für den Betriebsplan eines Fahrzeugs an. | |
endTimeWindows |
Gibt die Endzeit für den Betriebsplan eines Fahrzeugs an. |
In der folgenden Tabelle werden die Attribute eines TimeWindow
-Nachrichtentyps beschrieben.
Attribut | Format | Beschreibung |
---|---|---|
startTime |
String (RFC3339 UTC-Format „Zulu“) | Der Beginn eines Zeitfensters. |
endTime |
String (RFC3339 UTC-Format „Zulu“) | Das Ende eines Zeitfensters. |
Beispiele
In diesem Abschnitt werden drei Arten von Beispielen behandelt:
- Codebeispiele, die die Struktur von Zeiträumen veranschaulichen.
- Beispielszenario, in dem eine Möglichkeit zur Verwendung von Zeiträumen zur Erreichung eines Geschäftsziels gezeigt wird.
- Ein Beispiel für eine Anfrage mit den im Beispielszenario festgelegten Werten.
Codebeispiele
In den folgenden Abschnitten finden Sie Codebeispiele für verschiedene Arten von Zeiträumen.
Globale Zeitfenster
Das folgende Codebeispiel zeigt die Struktur der globalen Zeiträume:
{ "model": { "globalStartTime": "YYYY-MM-DDTHH:MM:SSZ", "globalEndTime": "YYYY-MM-DDTHH:MM:SSZ", "shipments": [ ... ], "vehicles": [ ... ] } }
Zeitfenster für Abholungen und Lieferungen
Das folgende Codebeispiel zeigt die Struktur der Zeitfenster für die Abholungen und Zustellungen einer Sendung:
{ "model": { "shipments": [ { "pickups": [ { "timeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ] } ], "deliveries": [ { "timeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ] } ] } ], "vehicles": [ ... ] } }
Zeitfenster für Fahrzeuge
Das folgende Codebeispiel zeigt die Struktur der Zeitfenster eines Fahrzeugs:
{ "model": { "shipments": [ ... ], "vehicles": [ { "startTimeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ], "endTimeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ] } ] } }
Beispielszenario
In diesem Abschnitt wird ein Szenario mit einer Hundetagesstätte verwendet. In diesem Beispiel werden Routen für das Abholen und Absetzen von Hunden aus zwei verschiedenen Haushalten optimiert. Die Besitzer haben dieselben Zeitfenster für das Abholen und Absetzen. Der Optimierer sollte die Öffnungszeiten der Kindertagesstätte, die spezifischen Abhol- und Bringzeiträume für Kunden sowie die Arbeitszeiten des Fahrers berücksichtigen.
In diesem Beispiel sind die Attributwerte in der Anfrage folgende:
Hat Kinder | Attribut | Wert | Szenario |
---|---|---|---|
ShipmentModel |
globalStartTime |
2023-01-13T07:00:00Z |
Gibt die Öffnungszeit Ihrer Hundetagesstätte an. Vor diesem Zeitpunkt können keine Abholungen oder Lieferungen erfolgen. |
ShipmentModel |
globalEndTime |
2023-01-13T19:00:00Z |
Stellt die Schließzeit Ihrer Hundetagesstätte dar. Alle Abholungen und Zustellungen müssen bis zu diesem Zeitpunkt abgeschlossen sein. |
Shipment.pickups |
timeWindows |
startTime :2023-01-13T07:30:00Z |
Definiert das zulässige Zeitfenster für das Abholen eines Hundes vom Zuhause eines Kunden. In diesem Beispiel haben Sie beiden Kunden mitgeteilt, dass die Abholung zwischen 7:30 und 9:00 Uhr erfolgen soll. |
endTime :2023-01-13T09:00:00Z |
|||
Shipment.deliveries |
timeWindows |
startTime :2023-01-13T17:00:00Z |
Definiert das zulässige Zeitfenster für das Absetzen eines Hundes am Zuhause eines Kunden. In diesem Beispiel haben Sie beiden Kunden mitgeteilt, dass ihre Hunde zwischen 17:00 und 18:30 Uhr abgeholt werden. |
endTime :2023-01-13T18:30:00Z |
|||
Vehicle |
startTimeWindows |
startTime :2023-01-13T07:00:00Z endTime :2023-01-13T07:15:00Z |
Definiert das zulässige Zeitfenster für den Start (7:00 Uhr bis 7:15 Uhr) und das Ende (17:00 Uhr bis 17:15 Uhr) des Fahrzeugs. |
endTimeWindows |
startTime :2023-01-13T18:45:00Z endTime :2023-01-13T19:00:00Z |
Das folgende Diagramm veranschaulicht die Zeitfenster, die sich auf diese Route auswirken.
In diesem Szenario funktionieren die Zeiträume wie im Diagramm dargestellt:
- Das globale Zeitfenster entspricht den Öffnungszeiten der Hundetagesstätte. Alle anderen Zeitfenster müssen in dieses Zeitfenster fallen.
- Abholungen und Lieferungen haben jeweils eigene
timeWindows
am Anfang und Ende des Tages. - Die
startTimeWindows
des Fahrzeugs geben dem Fahrer einen Zeitraum vor, in dem er mit der Arbeit beginnen muss, und dieendTimeWindows
einen weiteren Zeitraum, in dem er seinen Arbeitstag beenden muss. - Die Startzeit des ersten
startTimeWindow
und die Endzeit des letztenendTimeWindow
definieren die Betriebszeiten des Fahrzeugs, die in diesem Fall mit dem globalen Zeitfenster übereinstimmen.
Beispielanfrage
Das folgende Beispiel zeigt die Struktur einer optimizeTours
-Anfrage mit den Zeitfensterwerten des Beispielszenarios.
{ "model": { "globalStartTime": "2023-01-13T07:00:00Z", "globalEndTime": "2023-01-13T19:00:00Z", "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 }, "timeWindows": [ { "startTime": "2023-01-13T07:30:00Z", "endTime": "2023-01-13T09:00:00Z" } ] } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "timeWindows": [ { "startTime": "2023-01-13T17:00:00Z", "endTime": "2023-01-13T18:30:00Z" } ] } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 }, "timeWindows": [ { "startTime": "2023-01-13T07:30:00Z", "endTime": "2023-01-13T09:00:00Z" } ] } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "timeWindows": [ { "startTime": "2023-01-13T17:00:00Z", "endTime": "2023-01-13T18:30:00Z" } ] } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27, "startTimeWindows": [ { "startTime": "2023-01-13T07:00:00Z", "endTime": "2023-01-13T07:15:00Z" } ], "endTimeWindows": [ { "startTime": "2023-01-13T18:45:00Z", "endTime": "2023-01-13T19:00:00Z" } ] } ] } }
Weiche Zeitfenster
Zeitfenster können als weiche Einschränkungen verwendet werden, indem softStartTime
und softEndTime
in einem TimeWindow
-Nachrichtentyp definiert werden. So kann der Optimizer bei bestimmten Kosten vom angegebenen Zeitfenster abweichen und die Gesamtoptimierung gegenüber der strikten Einhaltung der Zeitrahmen priorisieren, wenn dies von Vorteil ist.
Für weiche Zeitfenster gelten die folgenden Nutzungseinschränkungen:
- Sie können nicht auf
globalStartTime
undglobalEndTime
angewendet werden, da diese nicht den NachrichtentypTimeWindow
verwenden. - Sie gelten nur, wenn in einer Liste ein einzelnes
TimeWindow
vorhanden ist.
Attribute
In der folgenden Tabelle werden die Eigenschaften von weichen Einschränkungen für Zeiträume beschrieben.
Property-Name | Format | Beschreibung des Attributs |
---|---|---|
softStartTime |
Zeitstempel | Gibt den Beginn des weichen Zeitfensters an. Wenn ein Ereignis vor diesem Zeitpunkt eintritt, fallen Kosten an. |
softEndTime |
Zeitstempel | Gibt das Ende des weichen Zeitfensters an. Wenn nach diesem Zeitpunkt ein Ereignis eintritt, fallen Kosten an. |
costPerHourBeforeSoftStartTime |
Zahl | Die Kosten pro Stunde, die anfallen, wenn ein Termin vor dem softStartTime beginnt. Diese Property ist erforderlich, wenn Sie softStartTime verwenden. Weitere Informationen zur Implementierung von Kosten finden Sie unter Kostenmodell. |
costPerHourAfterSoftEndTime |
Zahl | Die Kosten pro Stunde, die anfallen, wenn ein Ereignis nach dem softEndTime endet. Diese Property ist erforderlich, wenn Sie softEndTime verwenden. Weitere Informationen zur Implementierung von Kosten finden Sie unter Kostenmodell. |
Codebeispiel
Das folgende Beispiel zeigt die Struktur der Eigenschaften für weiche Einschränkungen eines TimeWindow
-Nachrichtentyps:
{ "softStartTime": "SOFT_START_TIME", "softEndTime": "SOFT_END_TIME", "costPerHourBeforeSoftStartTime": COST_BEFORE_START_TIME, "costPerHourAfterSoftEndTime": COST_AFTER_END_TIME }