Envoyez une requête avec des coûts de chargement pour que l'optimiseur prenne en compte la charge de 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 (à l'aide de cost_per_kilometer
ou de cost_per_traveled_hour
, respectivement).
Exemple de requête minimale avec coûts de charge
Voici un exemple partiel d'une requête avec un coût de chargement. Dans cet exemple, un seul véhicule ne peut transporter pas 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 la charge pour cet exemple est le suivant:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Si le véhicule transporte une charge weightKg
de 600 kg sur 10 km, 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 coûts de chargement
Voici un autre exemple de coûts de charge qui imposent 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 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 conséquent, si le véhicule transporte une charge weightLbs
de 950 kg pendant cinq 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
. cost_per_unit_above_threshold
applique un coût élevé par heure parcourue lorsque le véhicule se déplace avec une charge particulièrement lourde, ce qui pénalise les itinéraires susceptibles d'augmenter l'usure du véhicule ou de consommer un excès de carburant.
cost_per_unit_below_threshold
ajoute un coût par unité de poids transporté 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 envois ? | Un coût de chargement s'applique aux envois 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 chargement sont des chaînes arbitraires, comme décrit dans la section 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 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 à la 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) .
|
Quelles sont les valeurs par défaut des paramètres de coût de la charge ? | 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 apparaissent dans les propriétés metrics et route_metrics des messages de réponse. Par exemple, un cost_per_kilometer encouru apparaîtra sous la forme model.vehicles.load_limits.cost_per_kilometer .
|
Pour 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
Les requêtes OptimizeTours
peuvent également être effectuées à l'aide de REST ou de gRPC.
Avant d'envoyer une requête, remplacez les paramètres suivants par les valeurs appropriées pour votre environnement:
- Assurez-vous que les identifiants par défaut de l'application sont configurés comme décrit dans la section 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 traitée, vous recevrez un message de réponse.