Stellen Sie Ihre erste Routenoptimierungsanfrage.

Entwickler im Europäischen Wirtschaftsraum (EWR)

In diesem Dokument erfahren Sie, wie Sie Ihre erste Anfrage an die Route Optimization API mit einem Anwendungsfall aus der Praxis senden.

Der Einfachheit halber wird im Beispiel HTTP und JSON verwendet, um die REST API zu veranschaulichen. Für Ihre Produktionsumgebung empfehlen wir jedoch gRPC , da es eine bessere Leistung bietet. Für gRPC ist jedoch eine Installation erforderlich. Weitere Informationen finden Sie unter Route Optimization API-Clientbibliotheken.

Szenario

Eine Karte von San Francisco mit Markierungen für den Coit Tower, den Mission Dolores Park und den South Sunset Playground Park

Sie betreiben in San Francisco von 7:00 Uhr bis 19:00 Uhr eine Hundetagesstätte. Heute Morgen müssen Sie zwei Hunde von verschiedenen Orten in der Stadt abholen. Beide Hundehalter haben Ihnen ein Zeitfenster für die Abholung zwischen 7:30 Uhr und 9:30 Uhr angegeben.

Sie haben einen Lieferwagen für die Aufgabe und zahlen dem Fahrer 27 $ pro Stunde. Der Fahrer und der Lieferwagen beginnen den Tag um 7:00 Uhr in Ihrer Hundetagesstätte und müssen bis 12:00 Uhr von den Abholungen am Morgen zurück sein, um eine Mittagspause zu machen.

Heute ist der 13. Februar 2024 und der Fahrer hat folgende Aufgaben:

  • Den Berner Sennenhund in der Nähe des Coit Tower abholen.
  • Den Chihuahua im South Sunset Playground Park abholen.
  • Beide Hunde in der Hundetagesstätte im Mission Dolores Park abgeben.

Sie benötigen eine Route, die die Zeit minimiert, die die Hunde im Lieferwagen verbringen, und gleichzeitig die Anforderungen für die Abholung und Abgabe erfüllt.

Hinweis

Wenn Sie den Code in diesem Beispielszenario ausführen möchten, müssen Sie zuerst die Anleitung unter Route Optimization API einrichten ausführen.

1. Ansatz für die Routenoptimierung auswählen

Die Route Optimization API bietet je nach Komplexität Ihres Optimierungsproblems mehrere Methoden zur Auswahl.

Da es sich bei diesem Szenario für die Hundetagesstätte um eine kleine und einfache Anfrage handelt, verwenden Sie eine blockierende Methode wie optimizeTours, die schnell Ergebnisse liefert für kleine Anfragen. Weitere Informationen zu den Methoden der Route Optimization API finden Sie unter Synchrone und asynchrone Endpunkte.

Verwenden Sie die folgende URL, um eine HTTP POST-Anfrage an die optimizeTours Methode zu senden:

https://routeoptimization.googleapis.com/v1/projects/PROJECT_OR_ID:optimizeTours

Sie müssen auch die Einstellungen für das Zeitlimit und die Frist kurz halten, um unnötige Wartezeiten zu vermeiden. Für dieses Szenario für die Hundetagesstätte benötigt das Optimierungstool nicht viel Zeit, um auf Ihre Anfrage zu antworten. Verwenden Sie daher die folgenden Einstellungen:

  • Legen Sie den timeout Parameter auf 2 Sekunden fest.
  • Behalten Sie die Standardeinstellungen für die Frist bei, die für REST-Anfragen 60 Sekunden beträgt.

2. Inhalt der Anfragenachricht erstellen

Nachdem Sie die blockierende optimizeTours Methode ausgewählt und die Einstellungen für das Zeitlimit und die Frist definiert haben, müssen Sie als Nächstes den Text der Anfrage Nachricht erstellen.

In diesem Szenario ist die Anfrage eine OptimizeToursRequest-Nachricht, die in der REST API als JSON codiert ist.

So erstellen Sie die Anfragenachricht:

  1. Beginnen Sie mit der grundlegenden Anfragestruktur, die wie folgt aussieht:

    {
      "timeout": ...,
      "model": {
        "shipments": [...],
        "vehicles": [...],
        "globalStartTime": "...",
        "globalEndTime": "..."
      }
    }
    

    Weitere Informationen zur Struktur finden Sie im Leitfaden zu den Schlüsselkonzepten für die Basisstruktur (ShipmentModel, Shipment und Vehicle).

  2. Sendungen definieren. Fügen Sie im Feld shipments eine Shipment Nachricht für jeden Hund hinzu, der am Morgen abgeholt und abgeliefert werden muss. Hier definieren Sie den bevorzugten Abholort und die bevorzugte Abholzeit jedes Hundehalters sowie den Ort und die Zeit der Hundetagesstätte, an der die Hunde abgeliefert werden sollen.

    1. Erstellen Sie für jeden Hund eine VisitRequest für die Abholung und eine weitere für die Lieferung, die in diesem Szenario als Abgabe in der Hundetagesstätte bezeichnet wird.

      • Legen Sie bei der Abholung arrivalWaypoint auf den Abholort des Hundes fest (Coit Tower für den Berner Sennenhund oder South Sunset Playground Park für den Chihuahua) und die timeWindows auf die vom Hundehalter gewünschte Abholzeit (7:30 Uhr bis 9:30 Uhr).

      • Legen Sie bei der Lieferung arrivalWaypoint auf die Hundetagesstätte und timeWindows auf die erforderliche Abgabe zeit (9:30 Uhr bis 11:30 Uhr) fest.

      Weitere Informationen zu Zeitfenstern finden Sie unter Zeitfenster.

    2. Sie können mit dem Feld label eine Kennung für jede Sendung hinzufügen, z. B. „Berner Sennenhund“ und „Chihuahua“. So können Sie die Sendungen in der Antwort identifizieren.

    Weitere Informationen zum Definieren von Sendungen finden Sie unter Sendung.

  3. Fahrzeuge definieren. Fügen Sie im Feld vehicles eine Vehicle Nachricht für Ihren Lieferwagen mit der Hundetagesstätte als Start- und End punkt, den Kosten für den Lohn des Fahrers und den Betriebszeiten für den Lieferwagen hinzu.

    1. Legen Sie die startWaypoint und endWaypoint für den Lieferwagen auf die Start- und Endorte des Tages fest, also die Hundetagesstätte in der Nähe des Mission Dolores Park.

    2. Um Ihre Betriebskosten zu minimieren, müssen Sie die Kostenbeschränkungen Ihres Unternehmens definieren. Legen Sie den Kostenparameter costPerHour auf 27 fest. Das ist der Betrag, den Sie dem Fahrer für das Fahren des Lieferwagens der Hundetagesstätte zahlen. Weitere Informationen zu Kostenparametern finden Sie unter Kostenmodell.

    3. Damit das Optimierungstool eine Route innerhalb der Betriebs zeiten des Lieferwagens erstellt, definieren Sie startTimeWindows für den zulässigen Zeitraum, in dem der Fahrer den Lieferwagen in Betrieb nehmen kann, und endTimeWindows für den zulässigen Zeitraum, in dem der Fahrer zur Hundetagesstätte zurückkehren muss. Weitere Informationen zu Zeitfenstern finden Sie unter Zeitfenster.

    Weitere Informationen zum Definieren von Fahrzeugen finden Sie unter Fahrzeug.

  4. Globales Zeitfenster festlegen. Das globale Zeitfenster stellt den Zeitraum dar, in dem der Lieferwagen den ganzen Tag über Abholungen und Abgaben für Ihre Hundetagesstätte durchführen kann. Legen Sie für dieses Szenario globalStartTime auf 7:00 Uhr und globalEndTime auf 19:00 Uhr für den 13. Februar 2024 fest. Das sind die Betriebszeiten Ihrer Hundetagesstätte.

3. Anfrage senden

Das folgende Beispiel zeigt eine einfache curl-Anfrage, die auf dem Szenario für die Hundetagesstätte basiert und die blockierende Methode optimizeTours verwendet.

Ersetzen Sie vor dem Senden der Anfrage im Beispielcode PROJECT_NUMBER_OR_ID durch Ihre Google Cloud-Projekt-ID.

curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data @- << EOM
{
  "timeout": "2s",
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.802395,
                  "longitude": -122.405822
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T07:30:00Z",
                "endTime": "2024-02-13T09:30:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.760202,
                  "longitude": -122.426796
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00Z",
                "endTime": "2024-02-13T11:30:00Z"
              }
            ]
          }
        ],
        "label": "Bernese mountain dog"
      },
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.738067,
                  "longitude": -122.498593
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T07:30:00Z",
                "endTime": "2024-02-13T09:30:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.760202,
                  "longitude": -122.426796
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00Z",
                "endTime": "2024-02-13T11:30:00Z"
              }
            ]
          }
        ],
        "label": "Chihuahua"
      }
    ],
    "vehicles": [
      {
        "startWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.760202,
              "longitude": -122.426796
            }
          }
        },
        "endWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.760202,
              "longitude": -122.426796
            }
          }
        },
        "costPerHour": 27,
        "startTimeWindows": [
          {
            "startTime": "2024-02-13T07:00:00Z",
            "endTime": "2024-02-13T07:15:00Z"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "2024-02-13T11:45:00Z",
            "endTime": "2024-02-13T12:00:00Z"
          }
        ]
      }
    ],
    "globalStartTime": "2024-02-13T07:00:00Z",
    "globalEndTime": "2024-02-13T19:00:00Z"
  }
}
EOM

In der Anfrage verwendete Anfrageparameter

In der folgenden Tabelle werden die Anfrageparameter beschrieben, die im Anfragetext des Beispielszenarios verwendet werden. Sie können die Inhalte nach übergeordnetem Element oder nach Textsuche filtern.

Hat Kinder Parameter Property-Typ Beschreibung
OptimizeToursRequest model object (ShipmentModel) Das ist der Kern Ihrer Anfrage. Es ist ein einzelnes Objekt, in dem Sie Ihr gesamtes Problem definieren, einschließlich aller Hunde, die Sie abholen und abliefern müssen (shipments) und des Lieferwagens in Ihrer Flotte (vehicles). Stellen Sie es sich als vollständige Blaupause für das Problem vor, das Sie optimieren müssen.
timeout Dauer Dieser Parameter gibt die maximale Zeit an, die der Server für die Bearbeitung einer Anfrage benötigt, bevor er eine Antwort zurückgibt. Mit diesem Parameter können Sie die Wartezeit verkürzen. Legen Sie für kleine und schnelle Anfragen wie in diesem Szenario für die Hundetagesstätte legen Sie diesen Wert auf 2 Sekunden fest.
ShipmentModel shipments[] Array von Objekten (Shipment) Dies ist ein Array von Objekten, wobei jedes Objekt einen Hund darstellt, der abgeholt oder abgeliefert werden muss.
vehicles[] Array von Objekten (Vehicle) Dies ist ein Array von Objekten, wobei jedes Objekt ein Fahrzeug in Ihrer Flotte definiert. Hier beschreiben Sie Ihre Ressourcen, z. B. den Lieferwagen, der die Abholungen und Abgaben durchführt. Sie müssen mindestens ein Fahrzeug definieren, um eine optimierte Route zu erhalten.
globalStartTime Zeitstempel Das ist die frühestmögliche Zeit für ein Ereignis in Ihrem gesamten Modell. Dieser Parameter schränkt das Optimierungsproblem zeitlich ein, was für genaue Verkehrs- und Routen Berechnungen entscheidend ist. Legen Sie für dieses Szenario für die Hundetagesstätte die früheste Zeit fest, zu der der Fahrer den Lieferwagen an diesem Tag in Betrieb nehmen kann, also 7:00 Uhr am 13. Februar 2024.
globalEndTime Zeitstempel Das ist die spätestmögliche Zeit für ein Ereignis in Ihrem gesamten Modell. Legen Sie für dieses Szenario für die Hundetagesstätte die Zeit fest, zu der der Lieferwagen voraussichtlich seinen Betrieb einstellt, also 19:00 Uhr am 13. Februar 2024.
Shipment pickups[] Array von Objekten (VisitRequest) Das ist eine Liste aller möglichen Abholoptionen für die Sendung. Das Optimierungstool wählt die beste Option aus, um Ihr Problem zu lösen. Listen Sie für dieses Szenario für die Hundetagesstätte die Abholorte und Zeitfenster auf, die jeder Hundehalter für jeden Hund angegeben hat.
deliveries[] Array von Objekten (VisitRequest) Das ist eine Liste aller möglichen Abgabeoptionen für die Sendung. Das Optimierungstool wählt die beste Option aus, um Ihr Problem zu lösen. Listen Sie für dieses Szenario für die Hundetagesstätte den Ort der Hundetagesstätte und das Zeitfenster auf, in dem der Fahrer für die Mittagspause zurückkehren muss.
label String Das ist eine Kennung für eine bestimmte Sendung in Ihrer Anfrage. Sie können in Ihrer Anfrage Labels angeben, um die Antwort leichter lesen zu können. Verwenden Sie für dieses Szenario für die Hundetagesstätte einen beschreibenden String wie „Chihuahua“, „Berner Sennenhund“ oder den Namen des Hundes, um die Lösung mit Ihrer Eingabe abzugleichen, wenn Sie die API-Antwort erhalten.
VisitRequest arrivalWaypoint[] object (Waypoint) Das ist der Ort eines bestimmten Besuchs auf der Route. Sie können diesen mit Breiten- und Längengradkoordinaten, einer Orts-ID oder einer Ausrichtung definieren. Legen Sie in diesem Szenario für die Hundetagesstätte den Ort fest, der vom Hundehalter für pickups angegeben wurde, und die Adresse der Hundetagesstätte für deliveries.
timeWindows[] Array von Objekten (TimeWindow) Das ist ein Array von Objekten, die die Zeitbeschränkungen für eine Abholung oder Lieferung definieren. Verwenden Sie dies in diesem Szenario, um das Abholfenster für jeden der Hunde und das zulässige Fenster für die Abgabe der Hunde in der Hundetagesstätte zu definieren.
Vehicle startWaypoint[] object (Waypoint) Das ist der Startort der Route des Fahrzeugs, definiert mit Breiten- und Längengradkoordinaten oder einer Orts-ID. Dieser Parameter gibt dem Optimierungstool an, wo das Fahrzeug die Route beginnen muss. Wenn Sie diesen Wegpunkt nicht definieren, wählt das Optimierungstool eine der Abholungen oder Lieferungen als den Startort aus. Da der Fahrer in diesem Szenario für die Hundetagesstätte den Tag in der Hundetagesstätte beginnt, verwenden Sie die Koordinaten für den Mission Dolores Park.
endWaypoint[] object (Waypoint) Das ist das Ziel der Route des Fahrzeugs, definiert mit Breiten- und Längengradkoordinaten oder einer Orts-ID. Dieser Parameter gibt dem Optimierungstool an, wo das Fahrzeug die Route beenden muss. Wenn Sie diesen Wegpunkt nicht definieren, wählt das Optimierungstool eine der Abholungen oder Lieferungen als das Ende der Route aus. Da der Fahrer in diesem Szenario für die Hundetagesstätte den Tag in der Hundetagesstätte beenden muss, verwenden Sie die Koordinaten für den Mission Dolores Park.
costPerHour Zahl Das sind die Kosten, die für jede Stunde anfallen, in der ein Fahrzeug verwendet wird, unabhängig davon, ob es fährt oder steht. Verwenden Sie dies in diesem Szenario für die Hundetagesstätte, um den Stundenlohn eines Fahrers zu modellieren.
startTimeWindows[] Array von Objekten (TimeWindow) Das ist das zulässige Fenster, in dem der Fahrer den Lieferwagen für die Abholungen der Hunde am Morgen in Betrieb nehmen kann.
endTimeWindows[] Array von Objekten (TimeWindow) Das ist das zulässige Fenster, in dem der Fahrer den Lieferwagen abstellen und in der Hundetagesstätte parken muss.

Weiter

Antwort interpretieren