Lebenszyklus von Routenplänen

Auf dieser Seite wird der Lebenszyklus eines Routenplans mit der Route Optimization API beschrieben, beginnend mit der Ermittlung Ihrer Routinganforderungen bis hin zu einem integrierten Routenplan in Ihrem System.

Wenn Sie die Phasen des Routenplans befolgen, können Sie die folgenden Ziele erreichen:

  • Flottenbetrieb abbilden:Übersetzen Sie Ihre physische Flotte, komplexe Einschränkungen und Geschäftsziele in Code für die API.
  • Routenpläne für Ihr Unternehmen optimieren:Hier erfahren Sie, wie Sie Ihren Routenplan so optimieren, dass Sie Ihre Ziele erreichen und Ihre täglichen Abläufe verbessern können.
  • In der Produktion bereitstellen: Implementieren Sie Ihren Routenplan, indem Sie ihn in Ihre täglichen Abläufe einbinden.

Das folgende Diagramm zeigt den Lebenszyklus eines Routenplans.

Ein Flussdiagramm, das den Lebenszyklus eines Routenplans darstellt und im folgenden Text erläutert wird

Die Implementierungsphase eines Routenplans findet statt, wenn Sie die API zum ersten Mal einbinden oder wenn sich Ihre Geschäftsanforderungen erheblich ändern. Es deckt die Phasen 1 bis 5 ab.

Die Phase des täglichen Betriebs ist weniger aufwendig und die Optimierung ist minimal. Sie umfasst die Phasen 2 bis 4.

Die Phasen des Lebenszyklus einer Route sind:

  1. Problem eingrenzen: Identifizieren und organisieren Sie Ihre Ziele, Ressourcen, Aufgaben und Einschränkungen, um sich ein vollständiges Bild Ihrer Abläufe zu machen, bevor Sie die API verwenden.
  2. Daten zuordnen:Übersetzen Sie Ihre geschäftlichen Anforderungen in API-Parameter, damit der Routenplan die gewünschte Arbeitsweise Ihrer Flotte widerspiegelt.
  3. Anfrage erstellen und Routenplan abrufen:Geben Sie Ihre Daten in die API ein und rufen Sie Ihren optimierten Routenplan ab.
  4. Routenplan optimieren:Testen Sie Ihren Routenplan und passen Sie ihn an, indem Sie die Einschränkungen und Ziele anpassen, um sicherzustellen, dass er alle Ihre Anforderungen erfüllt.
  5. Routenplan einbinden:Verbinden Sie den Routenplan mit Ihren vorhandenen Systemen, um eine umsetzbare Navigation zu ermöglichen.

Problem eingrenzen

Bevor Sie die API verwenden können, müssen Sie die Details Ihrer täglichen Abläufe in klaren Datenkategorien organisieren. So können Sie den Implementierungsprozess mit einem klaren Verständnis Ihrer aktuellen Ressourcen und Aufgaben, der Einschränkungen und der Ziele, die Sie mit Ihrer Flotte erreichen möchten, beginnen.

Ressourcen und Aufgaben identifizieren

Ein wichtiger Schritt bei der Planung Ihrer Route ist die Identifizierung Ihrer Ressourcen und Aufgaben, d. h. Ihrer Fahrzeuge und Sendungen.

Die Fahrzeuge Die Lieferungen
  • Anzahl:Wie viele Fahrzeuge haben Sie?
  • Standorte: Wo starten und enden die Fahrzeuge?
  • Zeit: Wie sind die Arbeitszeiten der Fahrer der Fahrzeuge?
  • Kapazität:Welche Einschränkungen gelten für Ihre Fahrzeuge?
  • Kosten: Wie hoch sind die Kosten für den Betrieb Ihrer Flotte?
  • Standorte:Wo befinden sich die Abhol- und Lieferorte?
  • Anforderungen: Wie schwer oder groß sind die Pakete?
  • Einschränkungen: Gibt es bestimmte Zeitfenster für die Lieferung?
  • Servicezeit: Wie lange braucht der Fahrer, um zu parken und zu entladen?
  • Anforderungen: Erfordert die Sendung einen bestimmten Fahrzeugtyp oder Fahrer?

Einschränkungen identifizieren

Einschränkungen sind die Limits und Beschränkungen für die Nutzung Ihrer Fahrzeuge und die Handhabung Ihrer Sendungen. Sie bestimmen den Großteil Ihrer Abläufe und sind für die Erstellung eines optimierten Routenplans von entscheidender Bedeutung.

Einschränkungen lassen sich im Allgemeinen in zwei Kategorien unterteilen:

Harte Einschränkungen Weiche Einschränkungen
Diese Limits können nicht überschritten werden. Beispielsweise kann ein Lkw nicht mehr Gewicht transportieren als seine maximale Kapazität, und ein Fahrer kann keine Abholung vornehmen, nachdem ein Geschäft geschlossen wurde. Diese Einstellungen können bei Bedarf verletzt werden, in der Regel gegen eine Strafgebühr. Beispielsweise möchten Sie einen Lkw nur zu 80% beladen oder vor einer Zielzeit liefern, aber Sie sind damit einverstanden, diese Limits zu überschreiten, um eine bessere Route zu erhalten.

Zu den häufigsten Einschränkungen gehören:

  • Kapazitätslimits:Das maximale Gewicht, Volumen oder die maximale Anzahl von Artikeln, die ein Fahrzeug transportieren kann.
  • Zeitfenster: Die spezifischen Zeitfenster, in denen ein Ort für einen Besuch geöffnet ist, oder die spezifischen Schichtzeiten eines Fahrers.
  • Kosten: Die Kosten für den Betrieb eines Fahrzeugs oder das Auslassen einer Sendung. Eines der Hauptziele der API ist es, einen kostengünstigen Routenplan zu erstellen.
  • Pausen für Fahrer:Ruhezeiten für Fahrer, die nach einer bestimmten Anzahl von Arbeitsstunden in der Regel gesetzlich vorgeschrieben sind.

Geschäftsziele festlegen

Nachdem Sie Ihre Ressourcen und Aufgaben sowie deren Einschränkungen festgelegt haben, müssen Sie bestimmen, welche Messwerte für Ihr Unternehmen am wichtigsten sind. Diese Ziele gehen Hand in Hand mit Einschränkungen und helfen Ihnen, bei der Routenplanung die wichtigsten Faktoren zu berücksichtigen.

Hier einige Beispiele für Geschäftsziele:

Fuhrpark-/Flottengröße Entfernung Zeit Kosten
Möchten Sie die Anzahl der verwendeten Fahrzeuge minimieren oder Ihre gesamte Flotte einsetzen, um den Arbeitstag früher zu beenden? Möchten Sie die kürzeste Route, um Kraftstoff zu sparen, oder bevorzugen Sie eine schnellere Route, die aufgrund der Nutzung von Autobahnen möglicherweise länger ist? Möchten Sie die Gesamtarbeitszeit minimieren oder die Ankunft zu bestimmten Zeiten priorisieren, was die Zeit auf der Route verlängern kann? Möchten Sie Betriebskosten wie Löhne und Kraftstoff minimieren oder höhere Kosten in Kauf nehmen, um strenge Fristen einzuhalten?

Daten zuordnen

Nachdem Sie Ihre Daten erfasst haben, ordnen Sie sie den Attributen der API zu. So erhält der Optimierer alle Informationen, die er benötigt, um einen Routenplan zu erstellen, der Ihre geschäftlichen Gegebenheiten berücksichtigt.

Verwenden Sie die Parameter in den folgenden Tabellen, um die Ressourcen, Aufgaben, Einschränkungen und Ziele zuzuordnen, die Sie im Abschnitt Problem eingrenzen zugeordnet haben.

Variablenzuordnung

Konzept aus der Praxis API-Parameter Beschreibung
Fahrer oder Fahrzeug model.vehicles[] Stellt ein einzelnes Fahrzeug in Ihrer Flotte dar.
Depotstandorte vehicles[].startWaypoint
vehicles[].endWaypoint
Der Ort, an dem das Fahrzeug seine Route beginnt und beendet.
Ihre Öffnungszeiten model.globalStartTime
model.globalEndTime
Der früheste Beginn und das späteste Ende für den Betrieb der gesamten Flotte.
Aufgabe oder Paket model.shipments[] Stellt einen Job dar. Kann ein pickup, ein delivery oder beides sein.
Aufgabenort pickups[].arrivalWaypoint
deliveries[].arrivalWaypoint
Der geografische Standort, an dem der Job ausgeführt wird.
Dienstzeit pickups[].duration
deliveries[].duration
Die Zeit, die am Standort für die Erledigung der Aufgabe (z. B. Entladen) aufgewendet wird, ohne Fahrtzeit.

Zuordnung von Einschränkungen

Einschränkung in der Praxis API-Parameter Beschreibung
Fahrzeugkapazität vehicles[].loadLimits Legt das harte oder weiche Limit für die Fahrzeugkapazität fest. Wenn die loadDemand einer Sendung das verbleibende Limit überschreitet, wird sie nicht zugewiesen.
Paketgröße shipments[].loadDemands Die Fahrzeugkapazität, die eine Sendung verbraucht.
Fahrzeugeinschränkung shipments[].allowedVehicleIndices Schränkt eine Sendung so ein, dass sie nur von bestimmten Fahrzeugen oder Fahrern abgeholt oder zugestellt werden kann.
Verfügbare Öffnungszeiten shipments[].pickups[].timeWindows oder shipments[].deliveries[].timeWindows Legt die verfügbaren Zeiten für den Besuch eines Standorts fest. Wenn ein Fahrzeug nicht innerhalb dieses Zeitfensters ankommen kann, wird die Sendung übersprungen.
Maximale Schichtdauer vehicles[].routeDurationLimit Legt eine harte oder weiche Obergrenze für die Arbeitszeit eines bestimmten Fahrers fest (z. B. maximal 8 Stunden), unabhängig von der globalen Endzeit.
Pausen der Fahrer vehicles[].breakRule Erzwingt bestimmte Ruhezeiten, z. B. obligatorische Pausen nach einer bestimmten Anzahl von Arbeitsstunden.
Straßenbeschränkungen vehicles[].travelMode Gibt die Mobilitätsform an (z. B. DRIVE oder BICYCLE). Dadurch wird die Route auf zulässige Straßen beschränkt und die Geschwindigkeiten für die Berechnung der Fahrtzeiten werden festgelegt.

Zielzuordnung

Ziel in der Praxis API-Parameter Beschreibung
Flottengröße minimieren vehicles[].fixedCost Wendet einmalige Kosten für die Nutzung eines Fahrzeugs an. Hohe Fixkosten zwingen eine Route dazu, die Verwendung von weniger Fahrzeugen gegenüber einer Erhöhung der Gesamtstrecke oder der Arbeitszeit zu priorisieren.
Entfernung minimieren vehicles[].costPerKilometer Es werden Kosten für jeden zurückgelegten Kilometer berechnet. Priorisiert kürzere Routen, um Kraftstoff zu sparen und den Verschleiß zu reduzieren.
Gesamtzeit minimieren vehicles[].costPerHour Es werden Kosten für jede Stunde berechnet, in der das Fahrzeug aktiv ist (einschließlich Fahr- und Wartezeit). Priorisiert eine schnellere Fertigstellung.
Fahrzeit minimieren vehicles[].costPerTraveledHour Wendet Kosten speziell für die Zeit an, die für die Bewegung aufgewendet wird. So wird zwischen dem Stehen im Verkehr (teuer) und dem Warten an einer Haltestelle(potenziell günstiger) unterschieden.
Bestimmte Aufgaben priorisieren shipments[].penaltyCost Wendet Kosten an, wenn eine bestimmte Sendung übersprungen wird. Wenn Sie diesen Wert hoch ansetzen, werden kritische Aufgaben gegenüber optionalen Aufgaben priorisiert.

Anfrage erstellen und Antwort erhalten

So erstellen Sie mit der Route Optimization API einen Routenplan:

  1. Umgebung konfigurieren: Richten Sie Ihr Google Cloud-Projekt ein, aktivieren Sie die API und konfigurieren Sie die Authentifizierung. Eine Anleitung finden Sie unter Erste Schritte. Sie müssen diesen Schritt nur einmal ausführen.
  2. Anfrage senden: Erstellen Sie den Anfragetext mit dem im vorherigen Abschnitt definierten Datenabgleich. Informationen zu Endpunkten, Headern und Anfrageformatierung finden Sie unter API-Anfrage stellen.
  3. Antwort verstehen:Sobald Sie eine Antwort von der API erhalten, sollten Sie den Routenplan und die Bedeutung der einzelnen Parameter nachvollziehen. Weitere Informationen finden Sie unter Antwort interpretieren.

Routenplan optimieren

Die Übersetzung realer Logistik in API-Kosten und -Einschränkungen ist eine komplexe Aufgabe. Ihr ursprünglicher Routenplan entspricht möglicherweise nicht Ihren Geschäftszielen oder den Erwartungen der Fahrer. Die Optimierung Ihres Routenplans ist ein iterativer Prozess, bei dem Sie die zurückgegebenen Routen testen und Ihre Parameter anpassen, bis Sie eine Konfiguration gefunden haben, die Ihren Zielen entspricht.

Ziele und Einschränkungen anpassen

Wenn der generierte Routenplan nicht Ihren Anforderungen entspricht, können Sie bestimmte Parameter ändern, um andere Ergebnisse zu erzielen. Durch das Verschärfen oder Lockern von Parametern wird die Art und Weise geändert, wie widersprüchliche Ziele im Routenplan gelöst werden. Das Lockern von Parametern ist eine effiziente Methode, um die Parameter zu ermitteln, die Fehler in Ihren Routenplänen verursachen.

In der folgenden Tabelle sind häufige Routingprobleme und die Parameter aufgeführt, die Sie anpassen können, um sie zu beheben.

Szenario Parameter Anpassung Beschreibung
Eine wichtige Lieferung wird übersprungen shipments[].penaltyCost Erhöhen Sie den Wert oder fügen Sie anderen Sendungen Strafkosten hinzu. Wenn die Sendung optional ist, erhöhen Sie die Strafkosten, um sie zu priorisieren. Wenn die Sendung obligatorisch ist (keine Strafkosten hat), fügen Sie Strafkosten zu anderen, weniger kritischen Sendungen hinzu. Dadurch sind sie optional, was Zeit und Kapazität für die wichtige Sendung freisetzt.
Lieferung aufgrund des Zeitpunkts übersprungen softStartTime/softEndTime Weiche Zeitfenster hinzufügen Bei harten Zeitfenstern werden Aufgaben verworfen, die auch nur eine Minute zu spät sind. Weiche Zeitfenster ermöglichen es dem Fahrer, etwas später als geplant anzukommen, indem er „Kosten“ zahlt, anstatt den Auftrag nicht zu erfüllen.
Lieferung aufgrund des Gewichts übersprungen loadLimits[].softMaxLoad und costPerUnitAbove Anforderungen für weiche Last hinzufügen Ermöglicht es einem Fahrzeug, seine ideale Kapazität geringfügig zu überschreiten (gegen eine Strafe), anstatt ein Paket zurückzulassen.
Lieferung aufgrund von Flottenüberlastung übersprungen model.vehicles[] oder shipments[].timeWindows Fahrzeuge hinzufügen oder Zeitfenster lockern Wenn es zu viele Lieferungen für die aktuelle Flotte gibt, insbesondere zu Zeiten hoher Nachfrage, sollten Sie mehr Fahrzeuge hinzufügen oder die Lieferzeitfenster erweitern, um die Arbeitslast zu verteilen.
Routen sind zu lang oder ineffizient vehicles[].costPerKilometer/costPerHour Kosten hinzufügen oder ihren Wert erhöhen Teilt der API mit, dass Fahrten teuer sind, und fordert sie auf, weit entfernte, isolierte Haltestellen zu ignorieren, um engere Routen für die Flotte zu erstellen.
Die Schichten der Fahrer sind zu lang vehicles[].routeDurationLimit oder model.vehicles[] Dauerlimits hinzufügen oder Fahrzeuge und Limits hinzufügen Erzwingt eine feste Obergrenze (z. B. 8 Stunden) für die Gesamtzeit, die ein Fahrer auf der Straße verbringt. Das Hinzufügen von Fahrzeugen allein führt nicht zu kürzeren Routen, es sei denn, Sie wenden auch Zeitlimits an, um den Solver zu zwingen, die Arbeitslast auf die größere Flotte zu verteilen.

Routenplan aktualisieren

Häufig müssen Sie einen Routenplan aktualisieren, während die Basis gleich bleibt, z. B. wenn Sie dem Zeitplan eines aktiven Fahrers eine Abholung hinzufügen. Verwenden Sie dazu Injektionsparameter, die der API einen Startpunkt basierend auf Ihrer vorherigen Lösung bieten. So kann sie den vorhandenen Plan ändern, anstatt einen neuen von Grund auf zu berechnen.

Im Folgenden finden Sie verschiedene Möglichkeiten, einen Routenplan mit Injektionsparametern zu aktualisieren:

  • Übergeben Sie die Routen aus einer vorherigen Antwort im Feld injectedFirstSolutionRoutes Ihrer neuen Anfrage. Dadurch wird die Optimierungssuche beschleunigt. Das ist nützlich, wenn Sie vor Beginn des täglichen Betriebs umplanen müssen, z. B. um Last-Minute-Sendungen zu integrieren.
  • Mit dem Feld injectedSolutionConstraint können Sie den Grad der Änderung steuern. Das ist nützlich, wenn die Fahrten bereits laufen. So können Sie die aktuelle Reihenfolge des Fahrers beibehalten oder Teile des Plans korrigieren, die bereits ausgeführt wurden.
  • Achten Sie darauf, dass die aktualisierte Route dem richtigen Fahrzeug zugewiesen bleibt, indem Sie interpretInjectedSolutionsUsingLabels auf true setzen. Das ist nützlich, wenn Sie Sendungen und Fahrzeuge hinzufügen oder entfernen, da Routen anhand von Labels anstelle von Indexen abgeglichen werden. Dazu müssen alle Fahrzeug- und Versandlabel eindeutig sein.

Routenplan einbinden

Der endgültige Routenplan ist ein Datenobjekt, das eine optimierte Verwaltung Ihrer Ressourcen und Aufgaben darstellt und dabei Ihre Einschränkungen und Ziele berücksichtigt. Sie können diesen Routenplan in Ihre täglichen Abläufe einbinden, indem Sie ihn in Ihr System integrieren. Dazu gehört in der Regel, dass Sie Ihren Routenplan für Flottenmanager visualisieren und detaillierte Routenführungen an Fahrer senden.

Visualisierung

Damit Flottenmanager Ihren Routenplan prüfen und im Blick behalten können, haben Sie folgende Möglichkeiten, ihn zu visualisieren:

Damit Flottenmanager Ihren Routenplan prüfen und im Blick behalten können, können Sie ihn auf einer Dashboard-Karte anzeigen lassen. Je nach aktueller Entwicklungsphase können Sie Ihren Routenplan auf folgende Weise visualisieren:

  • Ohne Code erkunden: Mit der Open-Source-Anwendung Route Optimization können Sie sich ansehen, wie die API Ihre Daten in physische Pfade auf einer Karte umwandelt. Diese Webanwendung dient als Tool, mit dem Sie Szenarien erstellen, Einschränkungsparameter anpassen und die resultierenden Routenpläne visuell darstellen können, bevor Sie Code schreiben.
  • Reihenfolge der Besuche anzeigen:Sie können die Reihenfolge der Besuche als nummerierte Punkte auf einer Karte anzeigen lassen, um Ihre Optimierungs- und Versandpläne in Ihrem eigenen System zu bewerten. Suchen Sie dazu in jeder Route der API-Antwort das Array visits. Die Elemente in diesem Array sind genau in der Reihenfolge angeordnet, in der der Fahrer sie ausführen soll. Sie können diese Liste durchgehen, die shipmentIndex verwenden, um die Standortkoordinaten für jeden Halt abzurufen, und Ihre Kartenbibliothek verwenden, um nummerierte Markierungen auf der Karte basierend auf ihrer Reihenfolge in der Liste zu rendern.
  • Physische Route zeichnen: Sie können die genaue geplante Route auf einer Karte visualisieren, um nachzuvollziehen, warum der Optimierer eine bestimmte Reihenfolge ausgewählt hat. Diese Polylinie stellt den geplanten Pfad für die Planung und Bewertung dar, nicht die Echtzeitroute, die ein Fahrer nimmt. Legen Sie in Ihrer Anfrage populatePolylines: true fest, um für jede Route ein encodedPolyline-Feld zu erhalten, und decodieren Sie es mit der Methode google.maps.geometry.encoding.decodePath() aus der Maps JavaScript API.

An Fahrer senden

Sie können die detaillierte Routenführung mithilfe des Navigation SDK in Ihre Fahrer-App einbinden oder Deeplinks zur Google Maps-App für Nutzer bereitstellen.

  • Navigation SDK:Wenn Sie eine benutzerdefinierte Fahrer-App haben, können Sie das Navigation SDK for Android oder iOS für die detaillierte Routenführung in der App einbinden. Sie können die Aufgabeninformationen aus der API-Antwort in Ihr System einbinden und das SDK für die Navigation verwenden. Wenn Sie die Routen aus der API-Antwort an das SDK übergeben möchten, legen Sie in Ihrer Anfrage populateTransitionPolylines: true fest. Dadurch wird für jeden Übergang in der Antwort ein routeToken generiert.
  • Fleet Engine: Für ein erweitertes Flottenmanagement können Sie den von der API generierten Routenplan in die Fleet Engine importieren, um die Routenausführung in Echtzeit zu überwachen. Die API stellt zwar eine Polylinie des vorgesehenen Pfads zur Bewertung bereit, die Fleet Engine verknüpft jedoch die geplante Abfolge von Stopps mit der Live-Fahrzeugverfolgung.