Route Optimization API-Antwort interpretieren… mit Hunden

Entwickler im Europäischen Wirtschaftsraum (EWR)

Hinweis für die Produktion

Der Einfachheit halber werden in diesem Leitfaden REST und JSON verwendet. Für Ihre Produktionsumgebung wird jedoch 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 des 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.
  • Schicht um 09:40 Uhr beenden.

Der Routenplan kostet 147,22 $, einschließlich einer Strafe von 100 $ für das Auslassen des Schäferhunds.

Vergleichen Sie Ihre Antwort mit der vollständigen Beispielantwort, um Ihre Ergebnisse zu prüfen. Ihre Ergebnisse können leicht abweichen, da die Reisedauer und die 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

„OptimizeToursResponse“ enthält ein „ShipmentRoute“-Objekt mit einem „visits“-Nachrichtentyp und ein „Metrics“-Objekt mit „aggregatedRouteMetrics“ und „totalCost“.

Die OptimizeToursResponse enthält zwei Hauptkomponenten:

  • routes: Der Routenplan für jedes Fahrzeug in Ihrer Flotte, einschließlich der Reihenfolge und der 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 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 durch das 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",
    ...
    }
  ]
  ...
}

Wie ist die Reihenfolge für Abholung und Absetzen?

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.

Wenn Sie zwischen einer Abholung und einer Abgabe (oder Lieferung) unterscheiden möchten, können Sie entweder das Feld visitType oder isPickup prüfen:

  • visitType: Definiert die Besuchsaktion explizit.
    • Abholung: visitType = "PICKUP_SHIPMENT"
    • Lieferung: visitType = "DELIVER_SHIPMENT"
  • isPickup: Ein boolesches Hilfsfeld.
    • Abholung: isPickup = true
    • Lieferung: isPickup = false (in JSON weggelassen)

Wenn Sie die genaue Abfolge der Ereignisse und die voraussichtliche Ankunftszeit an jedem Ort ermitteln möchten, lesen Sie das Array visits der Reihe nach. 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) Falsch (weggelassen) oder DELIVER_SHIPMENT 2024-02-13T17:30:00Z Bring den Berner Sennenhund um 9:30 Uhr zur Hundetagesstätte.
Vierter Besuch 1 Falsch (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?

In jeder Route sind im Array transitions Reisedetails zwischen den Besuchen aufgeführt. visits und transitions sind zwar separate Listen, sie sind jedoch zeitlich wie folgt verschachtelt:

  1. transitions[0] (Fahrt vom Start zum ersten Besuch)
  2. visits[0] (Erster Besuch)
  3. transitions[1] (Zeit zwischen erstem und zweitem Besuch)
  4. visits[1] (zweiter Besuch)
  5. ...
  6. visits[N-1] (Letzter Besuch, wobei N die Gesamtzahl der Besuche ist)
  7. 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 eines Übergangs ist der Zeitpunkt, an dem der Fahrer die Fahrt beginnt. 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
Erste Umstellung transitions[0] 2024-02-13T15:55:04Z travelDuration: 1496s
travelDistanceMeters: 7082
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 um 08:20 Uhr ab. Der Besuch dauert 5 Minuten.
Zweiter Übergang transitions[1] 2024-02-13T16:25:00Z travelDuration: 1992er
travelDistanceMeters: 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: 1
isPickup: True
Hol den Chihuahua ab 8:58 Uhr ab. Der Besuch dauert 5 Minuten.
Dritter Übergang transitions[2] 2024-02-13T17:03:12Z travelDuration: 1.252 s
travelDistanceMeters: 7.860
waitDuration: 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: 0s
travelDistanceMeters: 0 (in JSON weggelassen)
Nicht fahren. Bereit, den Chihuahua um 9:35 Uhr in der Tagesstätte abzugeben.
Vierter Besuch visits[3] 2024-02-13T17:35:00Z shipmentIndex: 1
isPickup: Falsch (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: 0s
travelDistanceMeters: 0 (in JSON weggelassen)
Nicht fahren. 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 spiegeln die Kosteneinschränkungen wider, die Sie in Ihrer Anfrage angeben. Weitere Informationen finden Sie im Dokument Schlüsselkonzept des Kostenmodells.

In diesem Szenario mit der Hundetagesstätte gibt es eine übersprungene Sendung. Daher unterscheiden sich die Kosten pro Route und die aggregierten Gesamtkosten. 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 07:55 Uhr bis 09: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 des Deutschen Schäferhunds übersprungen hat, wird eine Strafgebühr von 100 $ hinzugefügt, sodass sich die Gesamtkosten auf 147,22 $ belaufen.

Warum wurde eine Lieferung ü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 Sendungen (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 Lieferungen (mit einem 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 Deutschen 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 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 Lieferwagen.
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 der 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 (Schäferhund) übersprungen.
ShipmentRoute vehicleStartTime Timestamp Dies ist der Zeitpunkt, zu dem das Fahrzeug seine Route beginnt. In diesem Szenario für die Hundetagesstätte fährt der Fahrer um 07: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 zurückgebracht 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 für diese einzelne Route. In diesem Szenario sind das die Statistiken für diesen bestimmten 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 für die Hundetagesstätte werden die Kosten anhand des Fahrerlohns von 27 $ pro Stunde berechnet.
routeTotalCost Zahl Dies sind die Gesamtkosten für diese 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 kommt, z. B. in Bezug auf Zeit, Entfernung und Last. In diesem Szenario für die Hundetagesstätte schränken nur die Start- und Endzeiten der Schicht den Fahrer ein. 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. In diesem Szenario für die 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 und 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 mit der Hundetagesstätte fährt der Fahrer etwa 25 Minuten von der Tagesstätte zum Coit Tower, 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 Wartezeit vor der nächsten Abholung oder Lieferung. In diesem Szenario beträgt die Wartezeit für den dritten Übergang 6 Minuten (356 Sekunden), da der Fahrer vor dem Öffnen des Abgabefensters um 9:30 Uhr bei der Hundetagesstätte ankommt. Für andere Übergänge beträgt 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 dem ersten Übergang und 27 Minuten (21 Minuten Fahrt und 6 Minuten Wartezeit) mit dem dritten Übergang zurück zur Kindertagesstätte.
startTime Timestamp Dies ist der Zeitpunkt, an dem die Fahrt beginnt. Sie entspricht der Abschlusszeit des vorherigen Besuchs (oder bei der ersten Umstellung 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 dies die Gesamtmetriken für Ihren einen Transporter.
usedVehicleCount Ganzzahl Dies ist die Anzahl der in der Lösung verwendeten Fahrzeuge. Für dieses Szenario mit der 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 Sendungen).
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 Fahrt. In diesem Szenario ist der Fahrer 79 Minuten unterwegs.
waitDuration Dauer Dies ist die gesamte Wartezeit. In diesem Szenario wartet der Fahrer 6 Minuten (356 Sekunden) im Leerlauf an der Hundetagesstätte, bis die Abgabezeit 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 für die Hundetagesstätte 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 Arbeitstages mit dem Fahren des Fahrzeugs 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.