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 vonShipment
- 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 ShipmentRoute
s 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 Strafkosten 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.