Die Routenoptimierungs-API gibt Routen für Fahrzeuge in der entsprechenden Anfrage zurück. Lieferungen sind Fahrzeugen zugewiesen oder können übersprungen werden, der Anfrageeigenschaften.
Eine OptimizeToursResponse
-Nachricht (REST, gRPC) hat zwei übergeordnete Hauptebene
Eigenschaften:
routes[]
sind die Routen für jedes Fahrzeug mit den zugewiesenen Sendungen. JedesRoute
enthält Messwerte, die die Eigenschaften der jeweiligen Route widerspiegeln.metrics
sind aggregierte Messwerte für die gesamte Antwort über alle Fahrzeugen und Routenplänen. Messwerte oberster Ebene enthalten dieselben Eigenschaften wie Routenmesswerte mit für alle Routen aggregierten Werten.
Einige Eigenschaften werden je nach Optimierungsergebnissen möglicherweise nicht immer ausgefüllt:
skippedShipments[]
listet Sendungen auf, die von keinem Fahrzeug durchgeführt werden. Eine Sendung kann übersprungen werden, wenn sie nicht innerhalb der angegebenen oder die Versandkosten die Strafkosten übersteigen. Zum Beispiel, wenn die Abholung oder Lieferung einer SendungtimeWindow
es möglicherweise nicht möglich oder kostengünstig ist, den Besuch im erforderlichen Zeitfenster durchführen.validationErrors[]
gibt Fehler an, die die Anfrage ungültig machen oder deren Behebung unmöglich machen, wennsolvingMode
der Anfrage aufVALIDATE_ONLY
festgelegt ist. Im normalenDEFAULT_SOLVE
-Modus treten Validierungsfehler auf in einer Fehlermeldung statt im Antworttext angezeigt. Beachten Sie, dass DerVALIDATE_ONLY
-Lösungsmodus kann mehrere Fehler gleichzeitig melden, was für die schnelle Fehlerbehebung bei Anfragen.
Routeneigenschaften
Jeder routes[]
-Eintrag ist eine ShipmentRoute
-Nachricht (REST, gRPC). Jedes
ShipmentRoute
steht für die Routenzuweisung für ein bestimmtes Fahrzeug von
der Anfrage. Wichtige ShipmentRoute
-Properties, die für die zugehörigen
Vehicle
umfassen:
vehicleIndex
ist der nullbasierte Index vonVehicle
im entsprechenden Anfragenachricht. Bei REST-Antworten wird dieses Attribut weggelassen, wenn der Wert null ist.vehicleStartTime
ist der Zeitpunkt, zu dem das Fahrzeug mit seiner Route beginnen muss.vehicleEndTime
ist die voraussichtliche Zeit, zu der das Fahrzeug seine Route beendet.
In einer Antwort sieht routes
so aus:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
Jede ShipmentRoute
enthält eine sortierte Liste von visits
, die das Fahrzeug
abgeschlossen ist. Jede Visit
(REST, gRPC) entspricht einer VisitRequest
(REST, gRPC) aus der entsprechenden Anfrage. Wichtig: Visit
Zu den Properties gehören:
shipmentIndex
ist der nullbasierte Index der Sendung, zu der dieser Besuch gehört. in die entsprechende Anfrage ein.isPickup
ist „true“, wenn ein Besuch ein Abholservice ist, und „false“, wenn ein Besuch ein Auslieferung. REST-Antworten lassen dieses Attribut weg, wenn der Wert „false“ ist.visitRequestIndex
ist der nullbasierte Index derVisitRequest
ausShipment.pickups
oderShipment.deliveries
in der entsprechenden Anfrage, die dieVisit
darstellt. REST-Antworten lassen dieses Attribut weg, wenn die Wert Null ist.startTime
ist die Uhrzeit, zu der der Besuch voraussichtlich beginnen wird.loadDemands
ordnet den Ladetyp der für den Abschluss des Vorgangs angeforderten Lademenge zu.Visit
. Die Ladungsbeträge sind bei Lieferbesuchen negativ und stellen die Last dar. aus dem Fahrzeug entfernt wird.
Ein Visit
-Beispiel sieht so aus:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
Jede ShipmentRoute
enthält eine geordnete Liste von transitions
, die
Fahrt zwischen visits
für ein bestimmtes Fahrzeug. Wichtige Nachricht zu Transition
Zu den Attributen (REST, gRPC) gehören:
startTime
ist der Zeitpunkt, zu dem das Fahrzeug mit der Ausführung des Fahrzeugs beginnt, zu übertragen.travelDuration
ist die Dauer, während der das Fahrzeug fahren muss, um den Übergang abzuschließen.travelDistanceMeters
ist die Entfernung in Metern, die das Fahrzeug zurücklegen muss, um die Umstellung abzuschließen.trafficInfoUnavailable
gibt an, ob für die zu übertragen.waitDuration
steht für die Leerlaufzeit, die das Fahrzeug warten muss, bevor es möglich ist Start des nächstenVisit
. Dies kann amstart_time
des Follower vonVisit
totalDuration
ist die Gesamtdauer der Umstellung, einschließlich Fahrtdauer, Warte-, Pausen- und Verspätungszeiten.vehicleLoads
ordnet den Ladetyp der Ladungsmenge zu, die das Fahrzeug während dieses Übergangs geladen hat.
Ein Beispiel für Transition
sieht so aus:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
Die Beziehung zwischen vists
und transitions
wird unter
Optimierung von Abhol- und Lieferbestellungen sowie in der
Referenzdokumentation zu ShipmentRoute
(REST, gRPC)
Messwerteigenschaften
Die Metrics
-Nachricht (REST, gRPC) fasst die gesamte Lösung zusammen.
Zu den wichtigen Metrics
-Properties gehören:
totalCost
sind die Gesamtkosten, die für die Fertigstellung der Routen anfallen. Mehr erfahren zu Kosten in Kostenmodellparametern.usedVehicleCount
ist die Gesamtzahl der in der Lösung verwendeten Fahrzeuge. Fahrzeuge können leere Routen haben, wenn der Optimierer feststellt, dass ihre Nutzung nicht erforderlich ist.skippedMandatoryShipmentCount
ist die Anzahl der übersprungenen Sendungen, „Obligatorisch“. In einer obligatorischen Sendung ist keinepenaltyCost
angegeben, die anfällt, wenn die Lieferung übersprungen wird. Obligatorische Lieferungen können weiterhin werden übersprungen, wenn ihre Leistung unter bestimmten Einschränkungen nicht realisierbar ist. Weitere Informationen zu Kosten finden Sie unter Kostenmodellparameter.
Zusätzliche Messwerte werden als AggregatedMetrics
-Nachrichten (REST,
gRPC) ausführen. Der Nachrichtentyp AggregatedMetrics
wird verwendet für:
Metrics.aggregatedRouteMetrics
-Property und für ShipmentRoute.metrics
Property Metrics.aggregatedRouteMetrics
Messwerte enthält, die
ShipmentRoute
in OptimizeToursResponse
. Jede ShipmentRoute.metrics
-Property enthält Messwerte für diese spezifische ShipmentRoute
.
Wichtige AggregatedMetrics
-Properties sind:
performedShipmentCount
ist die Anzahl der Sendungen, die von Fahrzeugen ausgeführt werden auf allen Routen ansehen.travelDuration
ist die Gesamtzeit, die die Fahrzeuge für die Fahrten auf ihren Routen benötigen.waitDuration
ist die Gesamtzeit, die die Fahrzeuge am Ende warten deren Routen.delayDuration
ist die Gesamtverzögerungszeit der Fahrzeuge. Dies ist normalerweise Null, es sei denn,TransitionAttributes
werden in der Anfrage verwendet.breakDuration
ist die Gesamtzeit, die die Fahrzeuge in Pausen verbringen, während ihre Routen vervollständigen.visitDuration
ist die Gesamtzeit, die die Fahrzeuge mit Besuchen verbringen, während ihre Routen vervollständigen. Das ist die Summe allerVisitRequest.duration
-Werte fürVisitRequest
s, dieVisit
s entsprechen dem entsprechenden Fahrzeug zugewiesen ist.totalDuration
ist die Gesamtdauer, die für die Ausführung der Strecken der Fahrzeuge erforderlich ist.travelDistanceMeters
ist die Gesamtstrecke, die die Fahrzeuge zurückgelegt haben, während ihre Routen vervollständigen.maxLoads
ordnet die Ladetypen dem maximalen Ladevolumen zu, das vom auf ihren Routen nutzen.
Eine Metrics
-Nachricht sieht beispielsweise so aus:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
Vollständiges Beispiel
Eine vollständige Beispielantwort auf die Anfrage von Compose a Request sieht so aus: wie:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}