Zeitfenster

Zeitfenster sind in `ShipmentModel`, in `Shipment` in den Abhol- und Zustellungsobjekten und in `Vehicle` vorhanden.

Zeitfenster geben den Zeitpunkt für Ereignisse auf einer Route an. Zu diesen Ereignissen können der Beginn und das Ende der Route eines Fahrers, geplante Abhol- und Lieferzeiten oder die Dauer einer gesamten Route gehören.

Zeitfenster können Ziele wie die folgenden unterstützen:

  • Abholungen und Lieferungen innerhalb bestimmter Zeiträume priorisieren.
  • Routen planen , die innerhalb der allgemeinen Geschäftszeiten liegen.
  • Sicherstellen, dass Fahrzeuge Routen innerhalb bestimmter Zeiträume beginnen und beenden.

Struktur

Wie im Diagramm dargestellt, sind Zeitfenster so strukturiert:

Checkliste mit den wichtigsten Punkten

Die folgende Checkliste enthält wichtige Informationen, mit denen Sie potenzielle Fehler im Zusammenhang mit Zeitfenstern vermeiden können. Anhand dieser Liste können Sie Ihre Anfrage überprüfen und Fehler in Ihrer Antwort beheben.

Attribute

In der folgenden Tabelle werden die Attribute des globalen Zeitfensters beschrieben.

Attribut Format Beschreibung
globalStartTime Timestamp Der früheste Zeitpunkt für ein Ereignis.
globalEndTime Timestamp Der späteste Zeitpunkt für ein Ereignis.

In der folgenden Tabelle werden die Attribute des Zeitfensters in Sendungen und Fahrzeugen beschrieben.

Elternteil 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 „Zulu“) Der Beginn eines Zeitfensters.
endTime String (RFC3339 UTC „Zulu“) Das Ende eines Zeitfensters.

Beispiele

In diesem Abschnitt werden drei Arten von Beispielen behandelt:

Codebeispiele

In den folgenden Abschnitten finden Sie Codebeispiele für verschiedene Arten von Zeitfenstern.

Globale Zeitfenster

Das folgende Codebeispiel zeigt die Struktur der globalen Zeitfenster:

{
  "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 Abholungen und Lieferungen 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 für eine Hundetagesstätte verwendet. Im Beispiel werden Routen für die Abholung und Rückgabe von Hunden aus zwei verschiedenen Haushalten optimiert. Die Besitzer haben die gleichen Zeitfenster für die Abholung und Rückgabe. Der Optimierer sollte die Öffnungszeiten der Hundetagesstätte, die spezifischen Zeitfenster für die Abholung und Rückgabe für Kunden sowie die Arbeitszeiten des Fahrers berücksichtigen.

In diesem Beispiel sind die Attributwerte in der Anfrage die folgenden:

Elternteil 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 Gibt die Schließzeit Ihrer Hundetagesstätte an. Alle Abholungen und Lieferungen müssen bis zu diesem Zeitpunkt abgeschlossen sein.
Shipment.pickups timeWindows startTime:
2023-01-13T07:30:00Z
Definiert das zulässige Zeitfenster für die Abholung eines Hundes aus dem Haus eines Kunden. In diesem Beispiel haben Sie beiden Kunden mitgeteilt, dass die Abholung zwischen 7:30 Uhr und 9:00 Uhr erfolgen kann.
endTime:
2023-01-13T09:00:00Z
Shipment.deliveries timeWindows startTime:
2023-01-13T17:00:00Z
Definiert das zulässige Zeitfenster für die Rückgabe eines Hundes im Haus eines Kunden. In diesem Beispiel haben Sie beiden Kunden mitgeteilt, dass ihre Hunde zwischen 17:00 Uhr und 18:30 Uhr zurückgebracht 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 Beginn (7:00 Uhr bis 7:15 Uhr) und das Ende (17:00 Uhr bis 17:15 Uhr) der Route 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.

Mehrere Zeitachsen stellen das globale Zeitfenster, die Zeitfenster für die Abholung und Lieferdauer, die Zeitfenster für die Start- und Endzeit des Fahrzeugs sowie die Arbeitszeiten des Fahrzeugs dar.

In diesem Szenario funktionieren die Zeitfenster wie im Diagramm dargestellt:

  • Das globale Zeitfenster stellt die Öffnungszeiten der Hundetagesstätte dar. Alle anderen Zeitfenster müssen innerhalb dieses Zeitfensters liegen.
  • Abholungen und Lieferungen haben jeweils eigene timeWindows am Anfang und Ende des Tages.
  • Die startTimeWindows des Fahrzeugs geben dem Fahrzeugführer einen Zeitraum , in dem er mit der Arbeit beginnen muss. endTimeWindows geben einen weiteren Zeitraum an, in dem er seine Arbeit beenden muss.
  • Die Startzeit des ersten startTimeWindow und die Endzeit des letzten endTimeWindow 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 aus dem Beispielszenario.

{
  "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 Sie softStartTime und softEndTime in einem Nachrichtentyp vom Typ TimeWindow definieren. So kann der Optimierer gegen eine bestimmte Gebühr vom angegebenen Zeitfenster abweichen. Dabei wird die Gesamtoptimierung gegenüber der strikten Einhaltung der Zeiträume priorisiert, wenn dies von Vorteil ist.

Für weiche Zeitfenster gelten die folgenden Nutzungslimits:

Attribute

In der folgenden Tabelle werden die Attribute für weiche Einschränkungen für Zeitfenster beschrieben.

Attributname Format Attributbeschreibung
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 ein Ereignis nach diesem Zeitpunkt eintritt, fallen Kosten an.
costPerHourBeforeSoftStartTime Zahl Die Kosten pro Stunde, die anfallen, wenn ein Ereignis vor dem softStartTime beginnt. Dieses Attribut ist erforderlich, wenn softStartTime verwendet wird. Weitere Informationen zur Implementierung von Kosten finden Sie im Schlüsselkonzept Kostenmodell.
costPerHourAfterSoftEndTime Zahl Die Kosten pro Stunde, die anfallen, wenn ein Ereignis nach dem softEndTime endet. Dieses Attribut ist erforderlich, wenn softEndTime verwendet wird. Weitere Informationen zur Implementierung von Kosten finden Sie im Schlüsselkonzept Kostenmodell.

Codebeispiel

Das folgende Beispiel zeigt die Struktur der Attribute für weiche Einschränkungen eines TimeWindow Nachrichtentyps vom Typ:

    {
      "softStartTime": "SOFT_START_TIME",
      "softEndTime": "SOFT_END_TIME",
      "costPerHourBeforeSoftStartTime": COST_BEFORE_START_TIME,
      "costPerHourAfterSoftEndTime": COST_AFTER_END_TIME
    }