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
: 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 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 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.