In diesem Beispiel wird gezeigt, wie Sie Kostenparameter verwenden, um eine kostengünstige Route zu erhalten.
Eine vollständige konzeptionelle Übersicht finden Sie im Dokument Schlüsselkonzept des Kostenmodells.
Beispielanfrage
Im folgenden Beispiel muss ein Fahrzeug drei Sendungen ausliefern. Für das Fahrzeug fallen Kosten für Zeit und Entfernung an und für jede Sendung wird eine penaltyCost berechnet, wenn die Sendung übersprungen wird.
Diese Beispielanfrage enthält die folgenden kostenbezogenen Parameter:
shipments[0]mit einempenaltyCostvon 100,0.shipments[1]mit einerpenaltyCostvon 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, mit der zwei der drei Sendungen ausgeführt werden. Die dritte Sendung wird übersprungen, da ihr penaltyCost niedriger ist als die berechneten Fahrzeugkosten für die 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 sehen Sie, wie die Kosten in der Antwort berechnet werden:
routeCostsenthält eine Aufschlüsselung der Betriebskosten für eine bestimmte Route, 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 Kosten, die inrouteCostsaufgeführt sind. - Auf der obersten Ebene der Antwort fasst das
costs-Objekt alle 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 endgültige
totalCost(57,44) steht für die Gesamtsumme der Lösung, die sich aus der Summe derrouteTotalCostaller Fahrzeuge und aller Strafkosten ergibt. In diesem Fall sind das 52,44 + 5,0.