Kostenmodellparameter

Die OptimizeToursRequest-Nachricht (REST, gRPC) enthält eine Reihe von Immobilien in Bezug auf Kosten. Zusammen stellen diese Kostenparameter den Kostenmodell Das Kostenmodell erfasst viele der allgemeinen Optimierungsziele, z. B.:

  • Schnellere Vehicle-Routen werden gegenüber kürzeren Routen priorisiert oder umgekehrt um
  • Entscheiden, ob die Kosten für die Lieferung eines Shipment den Wert des Abschluss von Shipment
  • Abholungen und Lieferungen innerhalb von Zeitfenstern nur dann ausführen, wenn dies Kostengünstig

Beispielanfrage mit Kosten ansehen

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Vehicle Kosten-Property

Die Vehicle-Nachricht (REST, gRPC) hat mehrere Kosteneigenschaften:

  • Vehicle.cost_per_hour: die Kosten für den Betrieb eines Fahrzeugs pro Stunde einschließlich der Haltestellenzeiten für öffentliche Verkehrsmittel, Wartezeiten, Besuche und Pausen.
  • Vehicle.cost_per_kilometer: Kosten pro zurückgelegtem Kilometer des Fahrzeugs.
  • Vehicle.cost_per_traveled_hour: entspricht den Kosten für den Betrieb eines Fahrzeugs nur während der Fahrt, mit Ausnahme von Warte-, Besuchs- und Pausenzeiten.

Diese Kostenparameter ermöglichen es dem Optimierungstool, Kompromisse. Die durch die optimierte Route verursachten Kosten werden in der Antwort angezeigt. Nachricht als metrics.costs:

Wenn costPerHour zunimmt, versucht die Optimierung, schnellere Routen zu finden. unter Umständen nicht die kürzesten Routen. In diesem Beispiel passiert die schnellste Route am kürzesten sein, sodass Änderungen an den Kostenparametern wenig Wirkung haben.

Shipment Kosten-Property

Für die Shipment-Nachricht (REST, gRPC) fallen auch mehrere Kosten an. Parameter:

  • Shipment.penalty_cost steht für die Kosten, die durch das Überspringen des Elements Lieferung.
  • Shipment.VisitRequest.cost steht für die Kosten einer bestimmten Abholung oder Lieferung, dient in erster Linie dazu, einen Kosten-Kompromiss zwischen mehreren Abhol- und Versandoptionen für eine einzelne Sendung.

Shipment-Kostenparameter verwenden dieselben Dimensionen ohne Einheiten wie die Kosten von Vehicle Parameter. Angefallene Kosten, wenn ein Shipment die Strafgebühr übersteigt, die Shipment ist in keiner Route von Vehicle enthalten, sondern erscheint stattdessen im skipped_shipments in der Antwortnachricht.

ShipmentModel Kosten-Property

Die ShipmentModel-Nachricht (REST, gRPC) enthält einen Einzelpreis Property globalDurationCostPerHour. Diese Kosten ergeben sich aus der Gesamtsumme Zeit, die alle Fahrzeuge zum Ausführen der ShipmentRoute benötigen. Steigerung globalDurationCostPerHour priorisiert die frühere Ausführung aller Sendungen.

Kostenattribute der Antwort für die Routenoptimierung

Die OptimizeToursResponse-Nachricht (REST, gRPC) hat Kosteneigenschaften die die Kosten darstellen, die bei der Ausführung von ShipmentRoutes anfallen. Die Attribute metrics.costs und metrics.totalCost geben die Anzahl der Kosteneinheiten, die für alle Routen in der Antwort anfallen. Jeder routes-Eintrag enthält routeCosts- und routeTotalCosts-Properties, die Kosten dafür darstellen bestimmte Route suchen.

Antwort auf die Beispielanfrage mit Kosten ansehen

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

In der Beispielantwort sind die metrics.costs der obersten Ebene:

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

Der Wert model.shipments.penalty_cost steht für die Kosten, die aufgrund Lieferungen übersprungen werden. In der Property skippedShipments ist aufgeführt, welche Sendungen übersprungen.

In diesem Beispiel wird nur model.shipments[1] in der Beispielanfrage übersprungen. model.shipments[1] hat eine Strafgebühr von 5 Einheiten, was dem Gesamtpreis entspricht model.shipments.penalty_cost in der Beispielantwort. Die Sendung ist fast leer penaltyCost im Vergleich zu den 40,0 costPerHour und 10,0 von Vehicle costPerKilometer machen es kostengünstiger, die Lieferung zu überspringen als um sie zu vervollständigen.

Weiterführendes Thema: Kosten und weiche Einschränkungen

Mehrere OptimizeToursRequest-Nachrichteneigenschaften (REST, gRPC) stellen weiche Einschränkungen dar, also Einschränkungen, die Kosten verursachen, nicht erfüllt werden kann.

Beispielsweise haben die Einschränkungen des Fahrzeugs LoadLimit (REST, gRPC) Folgendes: softMaxLoad- und costPerUnitAboveSoftMax-Properties. Zusammen ergeben sie einen Kosten proportional zu den Ladeeinheiten, die softMaxLoad überschreiten, sodass Grenzwert nur dann überschritten werden, wenn dies aus Kostensicht sinnvoll ist.

In ähnlicher Weise haben TimeWindow-Einschränkungen (REST, gRPC) soft_start_time- und soft_end_time-Properties mit den entsprechenden cost_per_hour_before_soft_start_time und cost_per_hour_after_soft_end_time je nachdem, wie früh oder verspätet das Ereignis eintritt. in Bezug auf TimeWindow.

Wie bei allen Kostenmodellparametern werden die Kosten der weichen Einschränkung in der Dimensionen ohne Einheiten wie andere Kostenparameter.

LoadLimit-Einschränkungen werden ausführlich behandelt in Lastanforderungen und Grenzwerte. TimeWindow Einschränkungen werden ausführlich behandelt finden Sie unter Einschränkungen für Abhol- und Lieferzeiträume.