Basisstruktur (ShipmentModel, Shipment und Vehicle)

„ShipmentModel“ enthält ein „shipments“-Objekt mit dem Nachrichtentyp „Shipment“ und ein „vehicles“-Objekt mit dem Nachrichtentyp „Vehicle“.

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:

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.

Eine reale Sendung entspricht einer „Shipment“-Nachricht, die in einem „shipments“-Objekt enthalten ist.

Wie im Diagramm dargestellt:

  • Eine Shipment-Nachricht enthält alle Informationen zu einer realen Sendung oder Dienstleistung.
  • Alle Shipment-Nachrichten werden im Feld shipments angegeben.
  • Das Feld shipments enthält eine oder mehrere Shipment-Nachrichten.

Eine Shipment-Nachricht erfordert mindestens ein pickups- oder deliveries-Objekt. Diese Objekte sind so 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.

Ein reales Fahrzeug entspricht einer „Vehicle“-Nachricht, die in einem „vehicles“-Objekt enthalten ist.

Wie im Diagramm dargestellt:

  • Eine Vehicle-Nachricht enthält alle Informationen zu einem realen Fahrzeug.
  • Alle Vehicle-Nachrichten werden im Feld vehicles angegeben.
  • Das Feld vehicles enthält mehrere Vehicle-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"
  }
}