Envoyez une requête avec des coûts de chargement pour que l'optimiseur prenne en compte la charge que vos véhicules transportent entre les visites. Le coût encouru dépend à la fois de la quantité de ShipmentRoute.VehicleLoad transportée et de la distance ou de la durée du trajet (en utilisant respectivement cost_per_kilometer ou cost_per_traveled_hour).
Exemple minimal de requête avec des coûts de chargement
Voici un exemple partiel de requête avec un coût de chargement. Dans cet exemple, le véhicule unique ne peut pas transporter plus de 1 000 kg de charge weightKg totale, ce qui entraîne un coût de 1 unité par kilomètre lorsque la charge weightKg transportée dépasse 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
Le calcul du coût de chargement pour cet exemple est le suivant :
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Ainsi, si le véhicule transporte une charge weightKg de 600 sur 10 kilomètres, le calcul est le suivant :
(600 - 500) * 10 * 1 = 1000 cost units
Les coûts de chargement peuvent être utilisés pour modéliser divers concepts, tels que l'augmentation de la consommation d'énergie du véhicule lors du transport de charges lourdes ou l'usure du véhicule due à un chargement excessif.
Autre exemple de requête avec des coûts de chargement
Voici un autre exemple de coûts de chargement qui impose un coût par temps de trajet au-dessus et en dessous d'un seuil :
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
Le calcul du coût de chargement pour cet exemple est le suivant :
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
Ainsi, si le véhicule transporte une charge weightLbs de 950 pendant 5 heures, le calcul est le suivant :
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
Dans cet exemple, le load_threshold du coût de chargement weightLbs est proche de max_load. Le cost_per_unit_above_threshold applique un coût élevé par heure de trajet lorsque le véhicule circule avec une charge particulièrement lourde, ce qui pénalise les itinéraires susceptibles d'accroître l'usure du véhicule ou de consommer plus de carburant.
Le cost_per_unit_below_threshold ajoute un coût par unité de poids transportée par le véhicule jusqu'au seuil, ce qui représente une augmentation de la consommation de carburant à mesure que le véhicule transporte plus de charge.
Questions fréquentes
Voici quelques questions fréquentes sur les coûts de chargement :
| Question | Réponse |
|---|---|
| Où puis-je spécifier les coûts de chargement ? | Spécifiez les coûts de chargement dans Vehicle.LoadLimit. |
| Comment les coûts de chargement sont-ils associés aux expéditions ? | Un coût de chargement s'applique aux expéditions dont le type de demande de chargement correspond au type de limite de chargement du véhicule, tel que le poids ou le volume. Les types de chargement sont des chaînes arbitraires, comme décrit dans Demandes et limites de chargement. |
| Comment les coûts de chargement sont-ils exprimés ? | Les coûts de chargement sont exprimés en termes de transition distance ou
durée. Utilisez cost_per_kilometer pour spécifier les coûts en termes de distance et cost_per_traveled_hour pour spécifier les coûts en termes de durée.
|
| Quand les coûts de chargement sont-ils appliqués ? | La charge du véhicule est comparée au load_threshold du coût de chargement. Si cost_per_unit_above_threshold est spécifié, le coût est ajouté proportionnellement à la charge du véhicule au-dessus du load_threshold à l'aide de la formule max(0, load - load_threshold). Si
cost_per_unit_below_threshold est spécifié, le coût est ajouté
proportionnellement à la charge du véhicule en dessous
du load_threshold, à l'aide de la formule
min(load, load_threshold).
|
| Quelles sont les valeurs par défaut des paramètres de coût de chargement ? | load_threshold, cost_per_unit_above_threshold et
cost_per_unit_below_threshold sont tous égaux à zéro par défaut.
|
| Dans quelles unités les coûts de chargement sont-ils exprimés ? | Les coûts de chargement sont exprimés dans les mêmes unités sans dimension que tous les autres
paramètres de coût, tels que global_duration_cost_per_hour ou
Shipment.penalty_cost.
|
| Où puis-je trouver les coûts de chargement dans la réponse ? | Les coûts de chargement encourus apparaissent dans les metrics et
route_metrics propriétés des messages de réponse. Par exemple, un
encouru cost_per_kilometer apparaîtra sous la forme model.vehicles.load_limits.cost_per_kilometer.
|
Pour obtenir une explication détaillée des coûts de chargement, consultez la documentation de référence (REST, gRPC).
Exemple : Envoyer une requête OptimizeTours
OptimizeTours requêtes peuvent également être effectuées à l'aide de REST ou gRPC.
Avant d'envoyer une requête, remplacez les paramètres suivants par des valeurs adaptées à votre environnement :
- Assurez-vous que les identifiants par défaut de l'application sont configurés comme décrit dans Utiliser OAuth.
Définissez PROJECT_NUMBER_OR_ID sur le numéro ou l'ID de votre projet Cloud.
La commande suivante envoie une requête
OptimizeToursà l'API Route Optimization et reçoit une réponse de manière synchrone.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- << EOM { "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM
Une fois la requête terminée, vous recevrez un message de réponse.