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: Gibt die Kosten für den Betrieb eines Fahrzeugs nur während der Fahrt an, ausgenommen 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 Kosteneigenschaften

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 Kosteneigenschaften

Die ShipmentModel-Nachricht (REST, gRPC) enthält eine einzelne Kosteneigenschaft, 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 hat die Eigenschaften routeCosts und routeTotalCosts, die die Kosten für diese Route darstellen.

Beispielantwort 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 verursachen diese Kosten, die proportional zu den Lasteinheiten sind, die softMaxLoad überschreiten. Das Limit kann also nur dann überschritten werden, wenn dies aus Kostengründen sinnvoll ist.

Ähnlich haben TimeWindow-Einschränkungen (REST, gRPC) soft_start_time- und soft_end_time-Properties mit entsprechenden cost_per_hour_before_soft_start_time- und cost_per_hour_after_soft_end_time-Werten, die je nachdem, wie früh oder spät das eingeschränkte Ereignis im Vergleich zum TimeWindow auftritt, anfallen.

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.