Faites une demande avec des coûts de chargement pour que l'optimiseur prenne en compte la charge transportée par vos véhicules 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 de la transition (en utilisant respectivement cost_per_kilometer
ou cost_per_traveled_hour
).
Exemple minimal de requête avec les 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 totale weightKg
, ce qui entraîne une unité de coût 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 la charge 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 de weightKg
sur 10 kilomètres, le calcul sera 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 des véhicules lors du transport de charges lourdes ou l'usure des véhicules 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 à la fois 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 la charge 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
Par exemple, si le véhicule transporte une charge weightLbs
de 950 pendant 5 heures, le calcul sera le suivant :
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
Dans cet exemple, le load_threshold
pour le coût de chargement weightLbs
est proche de max_load
. cost_per_unit_above_threshold
applique un coût élevé par heure de trajet lorsque le véhicule se déplace avec une charge particulièrement lourde. Cela pénalise les itinéraires qui peuvent augmenter l'usure du véhicule ou consommer un excès de carburant.
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, comme le poids ou le volume. Les types de charge sont des chaînes arbitraires, comme décrit dans les demandes et limites de charge. |
Comment les coûts de chargement sont-ils exprimés ? | Les coûts de chargement sont exprimés en termes de distance ou de durée de transition. 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 la charge. Si cost_per_unit_above_threshold est spécifié, le coût est ajouté proportionnellement à la charge du véhicule au-dessus de 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 de load_threshold , à l'aide de la formule min(load, load_threshold) .
|
Que 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 nuls par défaut.
|
Dans quelles unités les coûts de charge 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 charge encourus s'affichent dans les propriétés metrics et route_metrics des messages de réponse. Par exemple, un cost_per_kilometer encouru s'affichera sous la forme model.vehicles.load_limits.cost_per_kilometer .
|
Pour obtenir une explication détaillée des coûts de charge, consultez la documentation de référence (REST, gRPC).
Exemple : Envoyer une requête OptimizeTours
Les requêtes OptimizeTours
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 d'avoir configuré les identifiants par défaut de l'application 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 demande traitée, vous recevrez un message de réponse.