In diesem Beispiel wird gezeigt, wie Sie mit Kostenparametern eine kostengünstige Route erhalten.
Eine vollständige konzeptionelle Übersicht finden Sie im Dokument Schlüsselkonzept des Kostenmodells.
Beispielanfrage
Im folgenden Beispiel wird ein Szenario gezeigt, in dem ein Fahrzeug drei Lieferungen ausliefern muss. Für das Fahrzeug fallen Kosten für Zeit und Entfernung an und für jede Sendung gibt es eine penaltyCost, die anfällt, wenn die Sendung übersprungen wird.
Diese Beispielanfrage enthält die folgenden kostenbezogenen Parameter:
shipments[0]mit einempenaltyCostvon 100,0.shipments[1]mit einempenaltyCostvon 5,0.shipments[2]mit einempenaltyCostvon 50,0.vehicles[0]mit einemcostPerHourvon 40,0 und einemcostPerKilometervon 10,0.
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 } ] } }
Beispielantwort
Die Antwort zeigt, dass der Optimierer eine Route erstellt, die zwei der drei Sendungen ausführt. Die dritte Sendung wird übersprungen, da ihr penaltyCost niedriger ist als die berechneten Fahrzeugkosten für Abholung und Lieferung.
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 den folgenden Feldern wird gezeigt, wie die Kosten in der Antwort berechnet werden:
routeCostsschlüsselt die Betriebskosten für eine bestimmte Route auf, die in diesem Fall so aussehen:model.vehicles.cost_per_kilometer: 33.53.model.vehicles.cost_per_hour: 18.91.
- Der
routeTotalCost(52,44) ist die Summe der inrouteCostsaufgeführten Kosten. - Auf der obersten Ebene der Antwort fasst das Objekt
costsalle in der Lösung anfallenden Kosten zusammen. Dazu gehören die Betriebskosten aller Fahrzeugrouten sowie alle Strafen, z. B. diemodel.shipments.penalty_cost(5,0) für die übersprungene Sendung. - Der letzte
totalCost(57,44) stellt die Gesamtsumme für die Lösung dar, die sich aus der Summe derrouteTotalCostaller Fahrzeuge und aller Strafkosten ergibt. In diesem Fall sind das 52,44 + 5,0.