Hinweis für die Produktion
Der Einfachheit halber werden in diesem Leitfaden REST und JSON verwendet. Für Ihre Produktionsumgebung wird jedoch allgemein empfohlen, gRPC und die Clientbibliotheken zu verwenden, um eine bessere Leistung zu erzielen. Weitere Informationen finden Sie unter Route Optimization API-Clientbibliotheken.
Nachdem Sie die Anfrage unter Erste Anfrage senden gesendet haben, gibt der Optimierer ein OptimizeToursResponse zurück. Diese Antwort ist der Routenplan, dem der Fahrer folgen soll. In diesem Leitfaden erfahren Sie, wie Sie sie lesen.
Zusammenfassung des Routenplans
Im Szenario mit der Hundetagesstätte weist der Optimierer den Berner Sennenhund und den Chihuahua Ihrem Lieferwagen zu und überspringt den Deutschen Schäferhund. Der Routenplan Ihres Fahrers sieht so aus:
- Schicht um 07:55 Uhr in der Kindertagesstätte beginnen.
- Hol den Berner Sennenhund um 08:20 Uhr in der Nähe des Coit Tower ab.
- Hol den Chihuahua um 8:58 Uhr im South Sunset Playground Park ab.
- Sie kommen um 9:24 Uhr wieder bei der Kindertagesstätte an und warten, bis das Zeitfenster für die Abgabe um 9:30 Uhr beginnt.
- Berner Sennenhund um 9:30 Uhr abgeben.
- Chihuahua um 09:35 Uhr abgeben.
- Schichtende um 09:40 Uhr.
Der Routenplan kostet 147,22 $, einschließlich einer Strafe von 100 $ für das Auslassen des Schäferhundes.
Vergleichen Sie Ihre Antwort mit der vollständigen Beispielantwort, um Ihre Ergebnisse zu prüfen. Die Ergebnisse können leicht abweichen, da die Fahrtzeiten und Entfernungen von den aktuellen Straßendaten abhängen.
Vollständige Beispielantwort
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
Antwortstruktur
Die OptimizeToursResponse enthält zwei Hauptkomponenten:
routes: Der Routenplan für jedes Fahrzeug in Ihrer Flotte, einschließlich der Reihenfolge und Zeiten für jede Abholung und Lieferung. Sie haben einen Lieferwagen, also gibt es einen Routenplan.metrics: Eine Zusammenfassung des gesamten Routenplans, einschließlich der Gesamtkosten, der Dauer und der Entfernung.
Da der Optimierer den Deutschen Schäferhund überspringt, enthält die Antwort auch skippedShipments.
In den folgenden Abschnitten wird gezeigt, wo Sie die einzelnen Details der Zusammenfassung des Routenplans in der Antwort finden.
Welches Fahrzeug fährt welche Route?
Der Optimierer generiert einen Routenplan (das routes-Array), der der Reihenfolge der vehicles in Ihrer Anfrage entspricht.
Im Feld vehicleIndex wird jedes Fahrzeug anhand seiner nullbasierten Position identifiziert, die für Ihren Lieferwagen 0 ist. Die Felder vehicleStartTime und vehicleEndTime geben dem Fahrer an, wann er seine Schicht beginnen und beenden soll.
Die Route Optimization API gibt Zeitstempel in UTC zurück, die mit dem Suffix Z gekennzeichnet sind, unabhängig vom Offset in Ihrer Anfrage. Um die Zeit in San Francisco zu erhalten, subtrahieren Sie 8 Stunden. Für Ihren Lieferwagen dauert die Schicht von 07:55 Uhr bis 09:40 Uhr, wie im folgenden Codebeispiel gezeigt.
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
In welcher Reihenfolge werden die Fahrgäste abgeholt und abgesetzt?
In jeder Route enthält das Array visits alle Abholungen und Lieferungen für das zugewiesene Fahrzeug in chronologischer Reihenfolge.
Die shipmentIndex jedes Besuchs ist die nullbasierte Position der Sendung in Ihrer Anfrage: 0 ist der Berner Sennenhund und 1 ist der Chihuahua. Im Feld shipmentLabel wird das Label angezeigt, das Sie für jede Sendung festgelegt haben.
Um zwischen einer Abholung und einer Abgabe (oder Lieferung) zu unterscheiden, können Sie entweder das Feld visitType oder isPickup prüfen:
visitType: Definiert die Besuchsaktion explizit.- Abholung:
visitType="PICKUP_SHIPMENT" - Lieferung:
visitType="DELIVER_SHIPMENT"
- Abholung:
isPickup: Ein boolesches Hilfsfeld.- Abholung:
isPickup=true - Lieferung:
isPickup=false(in JSON weggelassen)
- Abholung:
Wenn Sie die genaue Abfolge der Ereignisse und die voraussichtliche Ankunftszeit an jedem Ort ermitteln möchten, lesen Sie das Array visits in der richtigen Reihenfolge. In der folgenden Tabelle sehen Sie die Aktion des Routenplans basierend auf der Reihenfolge und den Werten der Felder shipmentIndex, isPickup oder visitType und startTime.
| Sequenz | shipmentIndex Wert |
isPickup- oder visitType-Wert |
startTime-Wert (UTC) |
Aktion |
|---|---|---|---|---|
| Erster Besuch | 0 (in JSON weggelassen) | Wahr oder PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | Hol den Berner Sennenhund um 8:20 Uhr ab. |
| Zweiter Besuch | 1 | Wahr oder PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | Chihuahua um 8:58 Uhr abholen. |
| Dritter Besuch | 0 (in JSON weggelassen) | False (weggelassen) oder DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | Bernersennenhund um 9:30 Uhr in der Hundetagesstätte abgeben. |
| Vierter Besuch | 1 | False (weggelassen) oder DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | Chihuahua um 9:35 Uhr in der Hundetagesstätte abgeben. |
Das folgende Codebeispiel zeigt, wie die Antwort diese Sequenz bereitstellt:
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
Jeder Besuch hat auch einen visitRequestIndex. Das ist die nullbasierte Position der Abhol- oder Lieferoption, die der Optimierer für die Sendung ausgewählt hat. Jeder Hund in diesem Szenario hat nur eine Abhol- und eine Abgabeoption. Daher ist visitRequestIndex immer 0 und wird in der Antwort weggelassen.
Was passiert zwischen den Besuchen?
Im Array transitions sind für jede Route die Reisedetails zwischen den Besuchen aufgeführt. visits und transitions sind zwar separate Listen, sie sind jedoch zeitlich so verschachtelt:
transitions[0](Fahrt vom Start zum ersten Besuch)visits[0](Erster Besuch)transitions[1](Zeit zwischen erstem und zweitem Besuch)visits[1](zweiter Besuch)...visits[N-1](Letzter Besuch, wobei N die Gesamtzahl der Besuche ist)transitions[N](Fahrt vom letzten Besuch bis zum Ende)
Sie können die Zeitachse der Route anhand des Felds startTime in beiden Arrays verfolgen. Die startTime einer Fahrt ist der Zeitpunkt, an dem der Fahrer losfährt. Die startTime eines Besuchs ist der Zeitpunkt, an dem der Fahrer mit der Abholung oder dem Abliefern beginnt.
Für jeden Übergang werden die voraussichtliche Fahrzeit und die Entfernung zwischen den Standorten angezeigt.
In der folgenden Tabelle werden die Felder transitions und visits den chronologischen Routenaktionen für das Szenario mit der Hundetagesstätte zugeordnet.
| Sequenz | Feldname | startTime-Wert (UTC) |
Details | Aktion |
|---|---|---|---|---|
| Erster Übergang | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1.496 stravelDistanceMeters: 7.082 |
Fahren Sie 7 km und 25 Minuten von der Kindertagesstätte, um den Berner Sennenhund abzuholen. Die Schicht beginnt um 07:55 Uhr. |
| Erster Besuch | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0 (in JSON weggelassen)isPickup: True |
Hole den Berner Sennenhund ab 8:20 Uhr ab. Der Besuch dauert 5 Minuten. |
| Zweiter Übergang | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992ertravelDistanceMeters: 16589 |
Fahren Sie 17 km (33 Minuten) vom Coit Tower, um den Chihuahua ab 8:25 Uhr abzuholen. |
| Zweiter Besuch | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
Hol den Chihuahua um 08:58 Uhr ab. Der Besuch dauert 5 Minuten. |
| Dritter Übergang | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1.252 stravelDistanceMeters: 7.860waitDuration: 356 s |
Fährt ab 9:03 Uhr 8 km und 21 Minuten lang vom South Sunset Playground zurück zur Kindertagesstätte. Kommt um 9:24 Uhr an und wartet 6 Minuten, bis das Zeitfenster für die Abgabe beginnt. |
| Dritter Besuch | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0 (in JSON weggelassen)isPickup: False (in JSON weggelassen) |
Bring den Berner Sennenhund ab 9:30 Uhr zur Hundetagesstätte. Der Besuch dauert 5 Minuten. |
| Vierte Umstellung | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0stravelDistanceMeters: 0 (in JSON weggelassen) |
Keine Fahrt. Bereit, den Chihuahua um 9:35 Uhr in der Hundetagesstätte abzugeben. |
| Vierter Besuch | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: False (in JSON weggelassen) |
Chihuahua ab 9:35 Uhr in der Hundetagesstätte abgeben. Der Besuch dauert 5 Minuten. |
| Fünfter Übergang | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0stravelDistanceMeters: 0 (in JSON weggelassen) |
Keine Fahrten. Der Fahrer beendet seine Schicht um 09:40 Uhr. |
Das folgende Codebeispiel zeigt, wie die Antwort diese Sequenz für transitions[0] und transitions[1] bereitstellt:
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
Wie viel kostet die Route?
Je nachdem, ob Sie die Kosten für ein bestimmtes Fahrzeug oder die Gesamtkosten für die gesamte Flotte benötigen, können Sie sich mehrere Felder in der Antwort ansehen.
In der folgenden Tabelle sind alle Möglichkeiten aufgeführt, wie Sie Kosteninformationen in der Antwort finden können:
| Elternteil | Parameter | Bereich | Beschreibung |
|---|---|---|---|
ShipmentRoute |
routeCosts |
Pro Route | Eine Aufschlüsselung der spezifischen Kostenkomponenten (z. B. Kosten pro Stunde) für diese bestimmte Route. |
routeTotalCost |
Pro Route | Die für diese Route berechneten Gesamtkosten. | |
Metrics |
totalCost |
Gesamt (alle Routen) | Die aggregierten Gesamtkosten für alle Routen in der Lösung. |
costs |
Gesamt (alle Routen) | Eine Aufschlüsselung der aggregierten Kostenkomponenten für alle Routen in der Lösung. |
Die in routeCosts und costs angegebenen Kosten entsprechen den Kosteneinschränkungen, die Sie in Ihrer Anfrage angeben. Weitere Informationen finden Sie im Dokument Schlüsselkonzept des Kostenmodells.
In diesem Szenario mit der Hundetagesstätte unterscheiden sich die Kosten pro Route und die aggregierten Gesamtkosten, da eine Sendung übersprungen wurde. Die Routenkosten umfassen nur die Kosten, die mit dieser bestimmten Route verbunden sind (der Lohn des Fahrers), während die aggregierten Gesamtkosten auch die Strafe für die übersprungene Sendung enthalten. Das folgende Codebeispiel zeigt, wo diese Werte in der Antwort zu finden sind:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
Laut Routenplan fährt der Fahrer den Transporter von 7:55 Uhr bis 9:40 Uhr, also etwa 1 Stunde und 45 Minuten (6.296 Sekunden). Bei Ihrem festgelegten Satz von 27 $ pro Stunde betragen die Kosten für die Route 47, 22 $. Da der Optimierer die Lieferung mit dem Deutschen Schäferhund übersprungen hat, werden Strafkosten in Höhe von 100 $ hinzugefügt.Die Gesamtkosten belaufen sich somit auf 147, 22 $.
Warum wurde eine Sendung übersprungen?
Der Optimierer listet alle Sendungen, die er nicht ausführt, im Array skippedShipments auf. Warum eine Sendung übersprungen wird, hängt davon ab, ob Sie einen penaltyCost festgelegt haben:
- Obligatorische Lieferungen (kein
penaltyCost): Der Optimierer überspringt diese nie, nur weil sie teuer sind. Eine Sendung wird nur dann übersprungen, wenn sie in keine Route passt, z. B. weil ihr Zeitfenster mit anderen Sendungen in Konflikt steht. - Optionale Sendungen (mit
penaltyCost): Der Optimierer kann diese auch überspringen, wenn die Ausführung mehr kostet als die Strafe. Sie können unterschiedliche Strafkosten festlegen, um bestimmte Sendungen gegenüber anderen zu priorisieren.
In diesem Szenario überschneidet sich das Abholfenster des Schäferhunds mit dem des Berner Sennenhunds. Der Coit Tower und Land's End sind 25 Minuten voneinander entfernt. Der Fahrer kann also nicht beide Abholungen innerhalb des 20-minütigen Zeitfensters erledigen. Der Optimierer muss einen davon überspringen. Da der Deutsche Schäferhund die geringeren Strafkosten hat (100 $ gegenüber 1.000 $ für den regulären Kunden), überspringt der Optimierer ihn und es fallen die Strafkosten von 100 $ an.
Das folgende Codebeispiel zeigt das skippedShipments-Objekt in der Antwort:
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
Das Objekt skippedShipments in der Antwort enthält die folgenden Felder:
index: Der nullbasierte Index der Sendung in Ihrer Anfrage (2 für die dritte Sendung).label: Das Label, das Sie in der Anfrage angegeben haben („Deutscher Schäferhund“).penaltyCost: Die in der Anfrage angegebenen Strafkosten, die von der API zu den Gesamtkosten hinzugefügt werden.
Damit der Optimierer eine Sendung nicht überspringt, lockern Sie die Einschränkung, die den Konflikt verursacht. Sie können beispielsweise den Besitzer des Schäferhundes um ein flexibleres Abholfenster bitten und dann das timeWindows für diese Abholung in Ihrer Anfrage aktualisieren.
Antwortfelder im Beispiel
In der folgenden Tabelle werden alle Antwortfelder beschrieben, die im OptimizeToursResponse des Beispielszenarios zurückgegeben werden. Sie müssen nicht jedes Feld verwenden, um den Routenplan zu verstehen. Sie können diese Felder jedoch analysieren, um festzustellen, wie Sie Ihre OptimizeToursRequest an Ihre geschäftlichen Anforderungen anpassen können. Weitere Informationen finden Sie unter Lebenszyklus des Routenplans.
Sie können die Inhalte nach übergeordnetem Element oder per Textsuche filtern.
| Elternteil | Parameter | Property-Typ | Beschreibung |
|---|---|---|---|
OptimizeToursResponse |
routes |
Array von Objekten (ShipmentRoute) |
Diese enthält die Liste der Routen, die für jedes Fahrzeug berechnet wurden (eine pro Fahrzeug). In diesem Szenario für die Hundetagesstätte enthält diese Datei den detaillierten Routenplan für Ihren einzelnen Transporter. |
metrics |
Objekt (Metrics) |
Diese enthält die Gesamtmesswerte für die Lösung, aggregiert über alle Routen. Für dieses Hundetagesstätten-Szenario ist dies die Zusammenfassung der Kosten und Betriebsdauer für den Tag. | |
skippedShipments |
Array von Objekten (SkippedShipment) |
Diese enthält die Liste der Sendungen, die in der Lösung übersprungen wurden. In diesem Szenario wird der dritte Hund (Deutscher Schäferhund) übersprungen. | |
ShipmentRoute |
vehicleStartTime |
Timestamp | Dies ist der Zeitpunkt, zu dem das Fahrzeug seine Route beginnt. In diesem Szenario fährt der Fahrer um 7:55 Uhr los. |
vehicleEndTime |
Timestamp | Dies ist der Zeitpunkt, zu dem das Fahrzeug seine Route beendet. In diesem Szenario mit der Hundetagesstätte beendet der Fahrer die Fahrt mit dem Transporter um 9:40 Uhr. | |
visits |
Array von Objekten (Visit) |
Dies ist die sortierte Liste der Abholungen und Lieferungen auf der Route. In diesem Szenario für die Hundetagesstätte ist dies die Reihenfolge, in der die beiden Hunde abgeholt und abgesetzt werden. | |
transitions |
Array von Objekten (Transition) |
Dies ist die sortierte Liste der Entfernungen sowie der Fahr- und Wartezeiten zwischen den Besuchen. In diesem Szenario für eine Hundetagesstätte werden die Fahrstrecke und die Fahrzeit zwischen dem Coit Tower, dem South Sunset Playground Park und der Tagesstätte angegeben. | |
metrics |
Objekt (AggregatedMetrics) |
Dies sind die Messwerte, die für diese einzelne Route spezifisch sind. Für dieses Hundetagesstätten-Szenario sind dies die Statistiken für diesen speziellen Transporter. Diese Messwerte basieren auf den Kosten, die Sie in Ihrer Anfrage angegeben haben. Weitere Informationen finden Sie im Dokument Schlüsselkonzept des Kostenmodells. | |
routeCosts |
Objekt (Karte) | Dies ist eine Aufschlüsselung der spezifischen Kosten für diese Route. In diesem Szenario mit der Hundetagesstätte werden die Kosten anhand des Fahrerlohns von 27 $ pro Stunde berechnet. | |
routeTotalCost |
Zahl | Dies sind die Gesamtkosten für diese bestimmte Route. In diesem Szenario für die Hundetagesstätte betragen die Gesamtkosten für die Route dieses Lieferwagens 47.22. |
|
vehicleFullness |
Objekt (VehicleFullness) |
Hier sehen Sie, wie nahe das Fahrzeug seinen Betriebsgrenzen wie Zeit, Entfernung und Last kommt. In diesem Szenario für die Hundetagesstätte wird der Fahrer nur durch die Start- und Endzeiten der Schicht eingeschränkt. Daher berechnet der Optimierer vehicleFullness als Bruchteil der tatsächlichen Routendauer und der maximalen Zeit, die für die Schicht des Fahrers verfügbar ist. |
|
Visit |
shipmentIndex |
Ganzzahl | Dies ist der nullbasierte Index der Sendung in der ursprünglichen Anfrage. In diesem Szenario mit der Hundetagesstätte steht 0 für den Berner Sennenhund und 1 für den Chihuahua. |
isPickup |
Boolesch | Dieses Feld ist „true“, wenn es sich bei diesem Besuch um eine Abholung handelt. In diesem Szenario für die Hundetagesstätte ist der Wert „true“, wenn ein Hund abgeholt wird, und „false“ (oder fehlt), wenn ein Hund in der Tagesstätte abgegeben wird. | |
startTime |
Timestamp | Dies ist die geschätzte Startzeit des Besuchs. In diesem Szenario ist das der Moment, in dem der Fahrer an die Tür klopft. | |
detour |
Dauer | Dies ist die zusätzliche Zeit, die der Optimierer der Fahrt dieser bestimmten Sendung hinzufügt. Ein Umweg ist die Differenz zwischen dem tatsächlichen Routenplan und der idealen direkten Fahrt, wenn der Fahrer keine anderen Lieferungen oder Aufgaben zu erledigen hat. In diesem Szenario für die Hundetagesstätte hat der erste Besuch, bei dem der Berner Sennenhund abgeholt wird, einen Umweg von 0, da der Fahrer direkt von der Tagesstätte zu diesem Abholort fährt. Für die Abholung des Chihuahuas beträgt der Umweg 43 Minuten, da der Fahrer zuerst den Berner Sennenhund abholt und 5 Minuten für das Einladen benötigt. |
|
shipmentLabel |
String | Dies ist das Label aus der Anfrage für jede Sendung. Für dieses Szenario mit der Hundetagesstätte sind die Labels „Chihuahua“ oder „Berner Sennenhund“. | |
visitType |
String (Enum) | Gibt den Typ des Besuchs an. Mögliche Werte sind PICKUP_SHIPMENT für Abholungen oder DELIVER_SHIPMENT für Lieferungen. In diesem Szenario ist es entweder PICKUP_SHIPMENT oder DELIVER_SHIPMENT. |
|
Transition |
travelDuration |
Dauer | Dies ist die Zeit, die für die Fahrt zwischen den Besuchen aufgewendet wird. In diesem Beispiel verbringt der Fahrer etwa 25 Minuten damit, von der Hundetagesstätte zum Coit Tower zu fahren, um den Berner Sennenhund abzuholen. |
travelDistanceMeters |
Ganzzahl | Dies ist die während dieses Übergangs zurückgelegte Strecke in Metern. In diesem Beispiel fährt der Fahrer 7 Kilometer von der Hundetagesstätte zum Coit Tower, um den Berner Sennenhund abzuholen. | |
waitDuration |
Dauer | Das ist die Zeit, die Sie vor der nächsten Abholung oder Lieferung warten. In diesem Szenario für die Hundetagesstätte sind das 6 Minuten (356 Sekunden) für den dritten Übergang, da der Fahrer vor dem Beginn des Abgabezeitraums um 09:30 Uhr bei der Tagesstätte ankommt. Für andere Übergänge ist dieser Wert 0. | |
totalDuration |
Dauer | Dies ist die Gesamtdauer des Übergangs, einschließlich Fahr- und Wartezeit. Beispiel: Der Fahrer verbringt 25 Minuten (25 Minuten Fahrt und 0 Minuten Wartezeit) mit der ersten Fahrt und 27 Minuten (21 Minuten Fahrt und 6 Minuten Wartezeit) mit der dritten Fahrt zurück zur Kindertagesstätte. | |
startTime |
Timestamp | Dies ist der Zeitpunkt, zu dem die Fahrt beginnt. Sie entspricht der Abschlusszeit des vorherigen Besuchs (oder bei der ersten Fahrt der Startzeit des Fahrzeugs). Im Szenario mit der Hundetagesstätte beginnt der erste Übergang um 7:55 Uhr, wenn der Fahrer die Tagesstätte verlässt, und der zweite Übergang um 8:25 Uhr, wenn der Fahrer den Coit Tower verlässt. | |
Metrics |
aggregatedRouteMetrics |
Objekt (AggregatedMetrics) |
Dies ist die Summe der Messwerte für alle Routen. In diesem Szenario mit der Hundetagesstätte sind das die Gesamtmetriken für Ihren einen Transporter. |
usedVehicleCount |
Ganzzahl | Dies ist die Anzahl der in der Lösung verwendeten Fahrzeuge. In diesem Szenario für die Hundetagesstätte verwenden Sie nur einen Transporter. | |
earliestVehicleStartTime |
Timestamp | Dies ist die früheste Startzeit aller Fahrzeuge. In diesem Szenario für die Hundetagesstätte beginnt die Route des Transporters um 07:55 Uhr. | |
latestVehicleEndTime |
Timestamp | Dies ist die späteste Endzeit aller Fahrzeuge. In diesem Szenario für die Hundetagesstätte endet die Route des Transporters um 09:40 Uhr. | |
totalCost |
Zahl | Dies sind die Gesamtkosten der Lösung. In diesem Szenario für die Hundetagesstätte kostet der gesamte Routenplan für den Tag 147.22 (einschließlich 47.22 Fahrerlohn und 100 Strafe für ausgelassene Lieferungen). |
|
costs |
Objekt (Karte) | Dies ist eine Aufschlüsselung der Gesamtkosten nach Kategorie. In diesem Szenario hat der Optimierer die Kosten der Route anhand der Kosten pro Stunde und der Strafkosten für den übersprungenen Schäferhund berechnet. | |
AggregatedMetrics |
performedShipmentCount |
Ganzzahl | Dies ist die Anzahl der erfolgreich weitergeleiteten Sendungen. In diesem Szenario für die Hundetagesstätte transportiert der Fahrer zwei Hunde. |
travelDuration |
Dauer | Das ist die Gesamtdauer der Reise. In diesem Szenario ist der Fahrer 79 Minuten unterwegs. | |
waitDuration |
Dauer | Dies ist die Gesamtwartezeit. In diesem Szenario wartet der Fahrer 6 Minuten (356 Sekunden) im Leerlauf an der Hundetagesstätte, bis das Zeitfenster für die Abgabe beginnt. | |
delayDuration |
Dauer | Dies ist die zusätzliche Dauer, die Sie mithilfe von Übergangsattributen definieren, z. B. die für das Parken reservierte Zeit. In diesem Szenario für die Hundetagesstätte haben Sie in der Anfrage keine Übergangsattribute definiert, daher ist dieser Wert null. | |
breakDuration |
Dauer | Das ist die Gesamtzeit, die du mit Pausen verbracht hast. In diesem Szenario für die Hundetagesstätte gibt es keine Pausen. | |
visitDuration |
Dauer | Dies ist die Gesamtzeit, die für die Erbringung von Dienstleistungen bei Besuchen aufgewendet wurde. In diesem Szenario für die Hundetagesstätte sind das 20 Minuten (5 Minuten pro Besuch bei 4 Besuchen). | |
totalDuration |
Dauer | Dies ist die Summe aller Dauerkomponenten. In diesem Szenario beträgt die Gesamtdauer 105 Minuten (6.296 Sekunden). | |
travelDistanceMeters |
Ganzzahl | Dies ist die gesamte Reisedistanz in Metern. In diesem Szenario legt der Fahrer eine Gesamtstrecke von 31, 5 km zurück. | |
performedShipmentPenaltyCostSum |
Double | Dies ist die Summe der Strafkosten aller ausgeführten Sendungen. In diesem Szenario ist das 2000, da der Fahrer den Berner Sennenhund und den Chihuahua abgeholt hat (jeweils mit Strafkosten von 1000). |
|
VehicleFullness |
maxFullness |
Zahl | Dies ist die höchste Auslastungsquote für alle VehicleFullness-Felder. In diesem Szenario für die Hundetagesstätte beträgt dieser Wert 0,35, da der Fahrer den Transporter nur 105 Minuten der gesamten Morgenschicht fährt, die Sie in der Anfrage als 5 Stunden definiert haben. |
activeSpan |
Zahl | Dies ist das Verhältnis der Gesamtschichtlänge des Fahrers zu den Betriebszeiten des Routenplans. Eine niedrigere Zahl bedeutet, dass der Fahrer weniger Zeit des Arbeitstags mit dem Fahrzeug verbringt. In diesem Szenario mit der Hundetagesstätte beträgt dieser Wert 0,35, da der Fahrer den Transporter während der 5-stündigen Schicht 105 Minuten lang fährt. | |
SkippedShipment |
index |
Ganzzahl | Dies ist der nullbasierte Index der Sendung in der ursprünglichen Anfrage. In diesem Szenario steht die 2 für den Deutschen Schäferhund. |
label |
String | Dies ist das Label, das Sie in der Anfrage für die Sendung angegeben haben. | |
penaltyCost |
Zahl | Dies sind die Strafkosten, die anfallen, wenn der Optimierer diese Sendung überspringt. Sie entspricht der penaltyCost, die Sie in der Anfrage angegeben haben. |