Das Hauptziel der Route Optimization API ist es, Routen mit den niedrigsten Kosten zu finden. Das Kostenmodell ist daher der wichtigste Faktor für die Routenoptimierung.
Das Kostenmodell ist eine Reihe von Eigenschaften, die globale, Fahrzeug- und Versandkosten angeben.
Die Eigenschaften des Kostenmodells unterstützen die folgenden Arten von Optimierungszielen:
- Effiziente Fahrzeugzuweisungen und Routen
- Kostengünstige Abhol- und Lieferzeiten
- Priorisierung kritischer Sendungen
Struktur
Wie im Diagramm dargestellt, sind die Eigenschaften des Kostenmodells so strukturiert:
Shipment
enthält das AttributpenaltyCost
.Vehicle
enthält die folgenden Eigenschaften:
In diesem Dokument werden nur die wichtigsten Parameter des Kostenmodells beschrieben. Eine vollständige Liste der Kostenparameter finden Sie in der Referenzdokumentation.
Checkliste für Essentials
In der folgenden Checkliste wird das erforderliche Wissen beschrieben, mit dem potenzielle kostenbezogene Fehler vermieden werden können. Anhand dieser Liste können Sie Ihre Anfrage validieren und Fehler in Ihrer Antwort beheben.
Attribute
In der folgenden Tabelle werden die Attribute des Kostenmodells aufgeführt und beschrieben.
Hat Kinder | Property-Name | Property-Typ | Kosten pro | Beschreibung des Attributs |
---|---|---|---|---|
Shipment |
penaltyCost |
Zahl | Lieferung ausgesetzt | Die Kosten, die durch das Überspringen des Versands entstehen. Die API überspringt eine Sendung, wenn die Kosten für die Durchführung die Kosten für die Strafe übersteigen.
|
Vehicle |
fixedCost |
Zahl | Versand | Feste Kosten, die anfallen, wenn dieses Fahrzeug für den Transport einer Sendung verwendet wird. |
costPerHour |
Zahl | Stunde | Die Kosten für den Betrieb eines Fahrzeugs pro Stunde, einschließlich Fahr-, Warte-, Besuchs- und Pausenzeiten. Wenn diese Kosten steigen, versucht der Optimierer, schnellere Routen zu finden, die möglicherweise nicht die kürzesten Routen sind. Diese Property kann aufgrund ihrer Einfachheit und Vollständigkeit ein effektiver eigenständiger Kostenfaktor pro Fahrzeug sein. |
|
costPerKilometer |
Zahl | Kilometer | Die Kosten pro gefahrenem Kilometer, z. B. Kraftstoffkosten und amortisierte Kosten für die Fahrzeugwartung. | |
costPerTraveledHour |
Zahl | Stunde | Die Kosten für den Betrieb eines Fahrzeugs pro Stunde nur während der Fahrt, ohne Warte-, Besuchs- und Pausenzeiten. Dadurch werden schnellere Routen gegenüber kürzeren Routen bevorzugt. |
Beispiele
In diesem Abschnitt werden drei Arten von Beispielen behandelt:
- Codebeispiele, die die Struktur von Kostenmodelleigenschaften veranschaulichen.
- Beispielszenario, in dem eine Möglichkeit zur Verwendung von Kostenmodellattributen zur Erreichung eines Geschäftsziels gezeigt wird.
- Ein Beispiel für eine Anfrage, die die im Beispielszenario festgelegten Werte enthält.
Codebeispiele
Das folgende Codebeispiel zeigt die Struktur der Kostenmodelleigenschaften in Shipment
:
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
Das folgende Codebeispiel zeigt die Struktur der Kostenmodelleigenschaften in Vehicle
:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
Beispielszenario
In diesem Abschnitt wird ein Szenario beschrieben, in dem Sie ein Unternehmen für die Betreuung von Hunden haben. Sie optimieren eine Route für den Lkw, mit dem Sie die Hunde von ihren Zuhause abholen. In diesem Szenario soll der Optimierer bei der Routenplanung die Kosten für das Abholen der Hunde und den Fahrzeugbetrieb berücksichtigen.
In diesem Beispiel entspricht eine Kosteneinheit 1 $. Das bedeutet, dass die Werte der costModel-Eigenschaft in Ihrer Anfrage die folgenden sind:
Attribut | Wert | Szenario |
---|---|---|
penaltyCost |
10 | Gibt die Gebühr an, die Sie Ihren Kunden in Rechnung stellen, wenn sie ihren Hund nicht am geplanten Tag abholen. Wenn Sie den Hund an einem geplanten Tag nicht abholen, erhält der Kunde einen Rabatt von 40 $ auf den Gesamtbetrag für den Service. |
fixedCost |
30 | Die täglichen Kosten für Ihre Fahrzeugkreditraten betragen 30 $. |
costPerKilometer |
0,08 | Gibt an, wie viel Benzin Ihr Fahrzeug pro Kilometer verbraucht. Ihr Fahrzeug benötigt 0, 04 Gallonen pro Kilometer und die Kosten pro Gallone in Ihrer Region betragen 2 $. |
costPerHour |
27 | Gibt an, wie viel Sie einem Fahrer für das Fahren Ihres Fahrzeugs bezahlen. Sie zahlen dem Fahrer 27 $ pro Stunde. |
costPerTraveledHour |
2,5 | Gibt an, wie viel Sie pro Stunde für die Klimaanlage des Fahrzeugs für die Hunde während der Fahrt bezahlen müssen. Wenn das Fahrzeug steht, kann der Fahrer die hinteren Türen öffnen und die Klimaanlage ausschalten. |
Anhand von Kostenparametern kann der Optimizer Kompromisse eingehen, die für den Nutzer nicht offensichtlich sind, aber durch die Optimierung gefunden werden können.
Das folgende Diagramm zeigt ein Beispiel, in dem der Optimizer eine längere, aber schnellere Route über die grüne gestrichelte Linie wählen könnte, um den Verkehr auf der roten gepunkteten Linie zu vermeiden.
In diesem Szenario sieht die Kostenbilanz der beiden Routen so aus:
Die grüne gestrichelte Linie hat einen niedrigen
costPerHour
undcostPerTraveledHour
, da es sich um eine schnelle Route handelt, auf der es keinen Verkehr gibt. Das ist kostengünstiger, auch wenn dercostPerKilometer
hoch ist.Die rote gepunktete Linie hat einen niedrigen
costPerKilometer
, da es sich um eine direkte Route handelt. DiecostPerHour
undcostPerTraveledHour
sind jedoch aufgrund der Wartezeiten im Verkehr zu hoch, sodass es sich um die teuerste Route handelt.
Der Optimizer bietet nicht nur kostengünstige Routen, sondern auch eine Zusammenfassung der Gesamtkosten der Lieferrouten in den Antworteigenschaften.
Beispielanfrage
Das folgende Beispiel zeigt die Struktur einer einfachen optimizeTours
-Anfrage mit den im Beispielszenario festgelegten Werten:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
Antwortattribute
Die Nachricht OptimizeToursResponse
enthält Kosteneigenschaften, die die Kosten beschreiben, die bei der Durchführung einer Route anfallen:
metrics.costs
: Die Gesamtkosten für alle Routen, aufgeschlüsselt nach kostenbezogenen Anfragefeldern.metrics.totalCost
: Die Gesamtkosten für alle Routen.