Antwort interpretieren

Entwickler im Europäischen Wirtschaftsraum (EWR)

Die Route Optimization API gibt Routen für Fahrzeuge in der entsprechenden Anfrage zurück. Sendungen werden Fahrzeugen zugewiesen oder je nach den Eigenschaften der Anfrage übersprungen.

Eine -Nachricht (REST, gRPC) hat zwei Hauptattribute auf oberster Ebene :OptimizeToursResponse

  • routes[] sind die Routen für jedes Fahrzeug mit den zugewiesenen Sendungen. Jede Route enthält Messwerte, die die Eigenschaften der jeweiligen Route widerspiegeln.
  • metrics sind aggregierte Messwerte für die gesamte Antwort über alle Fahrzeuge und Routenpläne hinweg. Die Messwerte auf oberster Ebene enthalten dieselben Attribute wie die Messwerte pro Route, wobei die Werte über alle Routen hinweg aggregiert werden.

Einige Attribute werden je nach Optimierungsergebnissen möglicherweise nicht immer ausgefüllt:

  1. skippedShipments[] listet Sendungen auf, die von keinem Fahrzeug ausgeführt werden. Eine Sendung kann übersprungen werden, wenn sie nicht innerhalb der angegebenen Einschränkungen ausgeführt werden kann oder wenn die Kosten für die Ausführung der Sendung die Kosten für die Strafe übersteigen. Wenn beispielsweise die Abholung oder Lieferung einer Sendung ein sehr enges timeWindow hat, ist es möglicherweise nicht möglich oder kosteneffizient, dass ein Fahrzeug den Besuch innerhalb des erforderlichen Zeitfensters durchführt.
  2. validationErrors[] gibt Fehler an, die die Anfrage ungültig machen oder die Lösung unmöglich machen, wenn solvingMode der Anfrage auf VALIDATE_ONLY gesetzt ist. Im normalen DEFAULT_SOLVE-Modus werden Validierungsfehler in einer Fehlermeldung anstelle des Antworttexts angezeigt. Beachten Sie, dass im VALIDATE_ONLY-Modus mehrere Fehler gleichzeitig gemeldet werden können, was für das schnelle Debuggen von Anfragen nützlich ist.

Routenattribute

Jeder routes[] Eintrag ist eine ShipmentRoute Nachricht (REST, gRPC). Jede ShipmentRoute stellt die Routenzuweisung für ein bestimmtes Fahrzeug aus der Anfrage dar. Wichtige ShipmentRoute-Attribute im Zusammenhang mit dem entsprechenden Vehicle sind:

  • vehicleIndex ist der nullbasierte Index des Vehicle in der entsprechenden Anfragenachricht. In REST-Antworten wird dieses Attribut weggelassen, wenn der Wert null ist.
  • vehicleStartTime ist die Zeit, zu der das Fahrzeug mit der Route beginnen muss.
  • vehicleEndTime ist die Zeit, zu der das Fahrzeug die Route voraussichtlich beenden wird.

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 geordnete Liste von visits, die das Fahrzeug ausführen wird. Jeder Visit (REST, gRPC) stellt eine VisitRequest (REST, gRPC) aus der entsprechenden Anfrage dar. Wichtige Visit-Attribute sind:

  • shipmentIndex ist der nullbasierte Index der Sendung, zu der dieser Besuch in der entsprechenden Anfrage gehört.
  • isPickup ist „true“, wenn ein Besuch eine Abholung ist, und „false“, wenn ein Besuch eine Lieferung ist. In REST-Antworten wird dieses Attribut weggelassen, wenn der Wert „false“ ist.
  • visitRequestIndex ist der nullbasierte Index von VisitRequest aus Shipment.pickups oder Shipment.deliveries in der entsprechenden Anfrage die von Visit dargestellt wird. In REST-Antworten wird dieses Attribut weggelassen, wenn der Wert null ist.
  • startTime ist die Zeit, zu der der Besuch voraussichtlich beginnt.
  • loadDemands ordnet den Lasttyp der Lastmenge zu, die für den Abschluss von Visit erforderlich ist. Die Lastmengen sind für Lieferbesuche negativ, da sie die Last darstellen, die aus dem Fahrzeug entfernt wird.

Ein Beispiel für Visit 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 die Fahrt zwischen visits für ein bestimmtes Fahrzeug darstellen. Wichtige Transition Nachricht (REST, gRPC) Attribute sind:

  • startTime ist die Zeit, zu der das Fahrzeug mit der Ausführung der Übergangsphase beginnt.
  • travelDuration ist die Dauer, die das Fahrzeug für die Ausführung der Übergangsphase benötigt.
  • travelDistanceMeters ist die Entfernung in Metern, die das Fahrzeug für die Ausführung der Übergangsphase zurücklegen muss.
  • trafficInfoUnavailable gibt an, ob Verkehrsdaten für die Übergangsphase verfügbar sind.
  • waitDuration stellt die Leerlaufzeit dar, die das Fahrzeug wartet, bevor es mit dem nächsten Visit beginnen kann. Dies kann aufgrund der start_time des folgenden Visit entstehen.
  • totalDuration ist die Gesamtdauer der Übergangsphase, einschließlich Reise-, Warte-, Pausen- und Verzögerungszeiten.
  • vehicleLoads ordnet den Lasttyp der Lastmenge zu, die das Fahrzeug während dieser Übergangsphase befördert.

Ein Beispiel für Transition sieht so aus:

{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}

Weitere Informationen zur Beziehung zwischen vists und transitions finden Sie unter Optimierung der Reihenfolge von Abhol- und Lieferstopps und in der ShipmentRoute Referenzdokumentation (REST, gRPC). Weitere Informationen zu den routePolyline und routeToken Attributen einer Transition Nachricht finden Sie unter Übergangspolylinien und Routentokens.

Attribute von Messwerten

Die Nachricht Metrics (REST, gRPC) fasst die gesamte Lösung zusammen. Einige wichtige Metrics-Attribute sind:

  • totalCost sind die Gesamtkosten, die bei der Ausführung der Routen entstehen. Weitere Informationen zu Kosten finden Sie unter Parameter des Kostenmodells.
  • usedVehicleCount ist die Gesamtzahl der in der Lösung verwendeten Fahrzeuge. Fahrzeuge können leere Routen haben, wenn der Optimierer feststellt, dass ihre Verwendung nicht erforderlich ist.
  • skippedMandatoryShipmentCount ist die Anzahl der übersprungenen Sendungen, die „obligatorisch“ sind. Für eine obligatorische Sendung wird keine penaltyCost angegeben, die anfällt, wenn die Sendung übersprungen wird. Obligatorische Sendungen können trotzdem übersprungen werden, wenn ihre Ausführung unter den angegebenen Einschränkungen nicht möglich ist. Weitere Informationen zu Kosten finden Sie unter Parameter des Kostenmodells.

Zusätzliche Messwerte werden als AggregatedMetrics Nachrichten (REST, gRPC) gemeldet. Der Nachrichtentyp AggregatedMetrics wird für das Attribut Metrics.aggregatedRouteMetrics und für das Attribut ShipmentRoute.metrics verwendet. Metrics.aggregatedRouteMetrics enthält Messwerte, die über alle ShipmentRoutes in der OptimizeToursResponse aggregiert werden. Jedes ShipmentRoute.metrics Attribut enthält Messwerte für die jeweilige ShipmentRoute.

Wichtige AggregatedMetrics-Attribute sind:

  • performedShipmentCount ist die Anzahl der Sendungen, die von Fahrzeugen auf ihren gesamten Routen ausgeführt werden.
  • travelDuration ist die Gesamtzeit, die die Fahrzeuge während der Ausführung ihrer Routen unterwegs sind.
  • waitDuration ist die Gesamtzeit, die die Fahrzeuge während der Ausführung ihrer Routen warten.
  • delayDuration ist die Gesamtverzögerungszeit für die Fahrzeuge. Dieser Wert ist in der Regel null, es sei denn, in der Anfrage werden TransitionAttributes verwendet.
  • breakDuration ist die Gesamtzeit, die die Fahrzeuge während der Ausführung ihrer Routen in Pausen verbringen.
  • visitDuration ist die Gesamtzeit, die die Fahrzeuge während der Ausführung ihrer Routen für Besuche aufwenden. Dies ist im Grunde die Summe aller VisitRequest.duration Werte für VisitRequests, die den Visits entsprechen, die dem entsprechenden Fahrzeug zugewiesen sind.
  • totalDuration ist die Gesamtdauer, die für die Ausführung der Routen der Fahrzeuge erforderlich ist.
  • travelDistanceMeters ist die Gesamtstrecke, die die Fahrzeuge während der Ausführung ihrer Routen zurücklegen.
  • maxLoads ordnet Lasttypen der maximalen Lastmenge zu, die die Fahrzeuge zu einem beliebigen Zeitpunkt auf ihren Routen befördern.

Ein Beispiel für eine Metrics-Nachricht sieht 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 für die Anfrage unter Anfrage erstellen sieht so aus:

{
  "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
    }
  }
}