Mit Zielvorhaben können Sie allgemeine Optimierungsziele angeben, anstatt bestimmte Kostenparameter aus dem Kostenmodell bereitzustellen.
Sie können mehrere Ziele in einer einzelnen Anfrage verwenden und jedem Ziel eine relative Gewichtung zuweisen, um zu steuern, wie stark es die Gesamtoptimierung beeinflusst. Ziele wirken sich auf Ihre gesamte Anfrage aus und beeinflussen alle Ihre Fahrzeuge und Sendungen. Schließlich können Sie auch Zielvorhaben verwenden, um mit der Entwicklung Ihres eigenen Kostenmodells zu beginnen, wie unter Kostenmodell erstellen beschrieben.
Mit Zielvorhaben können Sie die folgenden Auswirkungen auf Ihren Routenplan steuern:
- Gesamtreisezeit oder ‑strecke Ihrer Routen.
- Gesamte Arbeitszeit für alle Fahrzeuge.
- Gesamtzahl der verwendeten Fahrzeuge.
Attribute
Das Attribut objectives ist ein Array von Objective-Nachrichtentypen in ShipmentModel. Jedes Objective definiert ein bestimmtes Optimierungsziel und enthält die in der folgenden Tabelle aufgeführten Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
type |
Enum |
Gibt das vordefinierte Optimierungsziel an. Zulässige Werte:
|
weight |
Double |
Definiert die relative Bedeutung dieses Zielvorhabens. Wenn Sie mehrere Zielvorhaben verwenden, steuert der Wert weight, wie stark dieses spezifische Zielvorhaben die gesamte Routenoptimierung im Vergleich zu den anderen beeinflusst. Das kann eine beliebige nicht negative Zahl sein. Die Summe muss nicht 1 ergeben. Der Standardwert ist 1.0.
|
Beispiele
Dieser Abschnitt enthält zwei Arten von Beispielen:
- Ein Codebeispiel, das die Struktur des
objectives-Arrays veranschaulicht. - Ein Beispiel für eine Anfrage, die das Array
objectivesenthält.
Codebeispiele
Das folgende Beispiel zeigt die Struktur von objectives:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
Beispielanfrage
Das folgende Beispiel zeigt die Struktur einer einfachen optimizeTours-Anfrage mit mehreren Zielvorhaben, wobei MIN_TRAVEL_TIME dreimal so wichtig ist wie MIN_WORKING_TIME.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
Kostenmodell erstellen
Mit Zielvorhaben lassen sich Optimierungsziele schnell festlegen. In einigen Fällen sind sie jedoch möglicherweise nicht spezifisch genug. Um Ihre genauen Routing-Ziele zu erreichen, benötigen Sie möglicherweise die detaillierte Steuerung, die nur über Parameter des Kostenmodells verfügbar ist.
Sie können mit der Entwicklung Ihres eigenen Kostenmodells beginnen, indem Sie Ihrer Anfrage Ziele hinzufügen und diese dann im Lösungsmodus TRANSFORM_AND_RETURN_REQUEST in Kostenmodellparameter umwandeln.
Wenn Sie eine Anfrage mit diesem Lösungsmodus senden, passiert Folgendes:
- Die API wandelt Ihre Ziele in Parameter für das Kostenmodell um und gibt sie in einem
processedRequestzurück. Anschließend können Sie die Parameter des Kostenmodells nach Bedarf anpassen, um Ihren Routenplan zu optimieren. - Wenn Sie mehrere Zielvorhaben verwenden, werden die Kosten aller Zielvorhaben in der API kombiniert und anhand der jeweiligen Gewichtungen skaliert.
- Für diese Anfrage wird Ihnen nichts in Rechnung gestellt, da die API keine optimierte Route bereitstellt, sondern nur die Zielvorhaben in Kostenmodellparameter umwandelt.
Beispielanfrage
Das folgende Beispiel zeigt eine Anfrage mit dem Zielvorhaben MIN_TRAVEL_TIME und dem Lösungsmodus TRANSFORM_AND_RETURN_REQUEST:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
Beispielantwort
Das ist die Antwort auf die vorherige Anfrage. Diese Antwort enthält sowohl die generierten Kostenmodellparameter als auch das ursprüngliche Ziel als Referenz.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }