Antwort interpretieren

Die Route Optimization API gibt Routen für Fahrzeuge in der entsprechenden 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. Jedes Route 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 der obersten 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:

  1. 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 Sendung timeWindow es möglicherweise nicht möglich oder kostengünstig ist, den Besuch im erforderlichen Zeitfenster durchführen.
  2. validationErrors[] gibt Fehler an, die die Anfrage ungültig machen, oder kann nicht gelöst werden, wenn der solvingMode der Anfrage auf VALIDATE_ONLY Im normalen DEFAULT_SOLVE-Modus treten Validierungsfehler auf in einer Fehlermeldung statt im Antworttext angezeigt. Beachten Sie, dass Der VALIDATE_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 von Vehicle 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 der Zeitpunkt, zu dem das Fahrzeug voraussichtlich fertig sein wird Route.

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) stellt einen VisitRequest dar. (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 von VisitRequest aus Shipment.pickups oder Shipment.deliveries in der entsprechenden Anfrage das Visit 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, bis zu der das Fahrzeug fahren muss um die Umstellung abzuschließen.
  • travelDistanceMeters ist die Entfernung in Metern, die das Fahrzeug liefern muss um den Übergang 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ächsten Visit. Dies kann am start_time des Follower von Visit
  • 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 diesen Übergang zu erreichen.

Ein Transition-Beispiel 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. Die Fahrzeuge können leere Routen haben, wenn die Optimierung feststellt, dass ihre Nutzung ist unnötig.
  • skippedMandatoryShipmentCount ist die Anzahl der übersprungenen Sendungen, „Obligatorisch“. In einer obligatorischen Sendung ist keine penaltyCost 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. Jeweils ShipmentRoute.metrics Property enthält Messwerte für diesen spezifischen 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 das Fahrzeug während ihre Routen vervollständigen.
  • 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 aller VisitRequest.duration-Werte für VisitRequests, die Visits entsprechen dem entsprechenden Fahrzeug zugewiesen ist.
  • totalDuration ist die Gesamtdauer, die erforderlich ist, um das Fahrzeug abzuschließen Routen planen.
  • 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 für 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
    }
  }
}