Basisstruktur (ShipmentModel, Shipment und Vehicle)

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

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:

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.

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 tatsächlichen Sendung oder Dienstleistung.
  • Alle Shipment-Nachrichten werden im Feld shipments angegeben.
  • Das shipments Feld enthält eine oder mehrere Shipment Nachrichten.

Eine Shipment-Nachricht erfordert mindestens ein pickups- oder deliveries-Objekt. Die Definitionen dieser Objekte sind die folgenden:

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.

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 tatsächlichen Fahrzeug.
  • Alle Vehicle-Nachrichten werden im Feld vehicles angegeben.
  • Das vehicles Feld enthält mehrere Vehicle Nachrichten.

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"
  }
}