Cet exemple montre comment utiliser les paramètres de coût pour obtenir un itinéraire économique.
Pour obtenir une présentation complète des concepts, consultez le document Concept clé du modèle de coût.
Exemple de requête
L'exemple suivant illustre un scénario dans lequel un véhicule doit livrer trois colis. Le véhicule est associé à des coûts de temps et de distance, et chaque envoi est associé à un penaltyCost qui est encouru si l'envoi est ignoré.
Cet exemple de requête contient les paramètres liés aux coûts suivants :
shipments[0]avec unpenaltyCostde 100,0.shipments[1]avec unpenaltyCostde 5.shipments[2]avec unepenaltyCostde 50,0.vehicles[0]avec uncostPerHourde 40,0 et uncostPerKilometerde 10,0.
Voir un exemple de requête avec les coûts
{ "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 } ] } }
Exemple de réponse
La réponse indique que l'optimiseur crée un itinéraire qui effectue deux des trois livraisons. La troisième expédition est ignorée, car sa valeur penaltyCost est inférieure aux coûts de véhicule calculés pour l'enlèvement et la livraison.
Voir une réponse à l'exemple de requête avec les coûts
{ "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 } } }
Les champs suivants indiquent comment les coûts sont calculés dans la réponse :
routeCostsdétaille les coûts opérationnels d'un itinéraire spécifique, qui sont les suivants dans ce cas :model.vehicles.cost_per_kilometer: 33.53.model.vehicles.cost_per_hour: 18,91.
- La valeur
routeTotalCost(52,44) correspond à la somme des coûts listés dansrouteCosts. - Au niveau supérieur de la réponse, l'objet
costsrécapitule tous les coûts engendrés par la solution. Cela inclut les coûts opérationnels de tous les itinéraires de véhicules, ainsi que les pénalités, commemodel.shipments.penalty_cost(5,0) pour l'envoi manqué. - La valeur finale
totalCost(57,44) représente le total général de la solution, qui correspond à la somme desrouteTotalCostde tous les véhicules et de tous les coûts de pénalité. Dans ce cas, il s'agit de 52,44 + 5,0.