L'objectif principal de l'API Route Optimization est de trouver les itinéraires les moins coûteux. Le modèle de coût est donc le principal moteur de l'optimisation des itinéraires.
Le modèle de coût est un ensemble de propriétés qui spécifient les coûts globaux, les coûts des véhicules et les coûts d'expédition.
Les propriétés du modèle de coût sont compatibles avec les types d'objectifs d'optimisation suivants :
- Affectations et itinéraires efficaces des véhicules
- Horaires de collecte et de livraison rentables
- Priorisation des expéditions critiques
Structure
Comme le montre le schéma, les propriétés du modèle de coût sont structurées comme suit :
Shipmentcontient la propriétépenaltyCost.Vehiclecontient les propriétés suivantes :
Ce document ne met en évidence que les paramètres essentiels du modèle de coût. Pour obtenir l'ensemble complet des paramètres de coût, consultez la documentation de référence.
Check-list des éléments essentiels
La check-list suivante décrit les connaissances essentielles qui permettent d'éviter les erreurs potentielles liées aux coûts. Cette liste peut vous aider à valider votre requête et à résoudre les problèmes liés à votre réponse.
Propriétés
Le tableau suivant liste et décrit les propriétés du modèle de coût.
| Parent | Nom de propriété | Type de propriété | Coût par | Description de la propriété |
|---|---|---|---|---|
Shipment |
penaltyCost |
nombre | Expédition ignorée | Coût engendré par l'ignorance de l'expédition. L'API ignore une expédition lorsque le coût de sa réalisation dépasse son coût de pénalité.
|
Vehicle |
fixedCost |
nombre | Livraison | Coût fixe appliqué si ce véhicule est utilisé pour gérer une expédition. |
costPerHour |
nombre | Heure | Coût d'exploitation d'un véhicule par heure, y compris les temps de trajet, d'attente, de visite et de pause. À mesure que ce coût augmente, l'optimiseur tente de trouver des itinéraires plus rapides qui ne sont pas forcément les plus courts. Cette propriété peut être un coût autonome efficace par véhicule en raison de sa simplicité et de son exhaustivité. |
|
costPerKilometer |
nombre | Kilomètre | Coût par kilomètre parcouru par le véhicule, tel que les coûts de carburant et les coûts d'entretien amortis du véhicule. | |
costPerTraveledHour |
nombre | Heure | Coût d'exploitation d'un véhicule par heure uniquement pendant le trajet, à l'exclusion des temps d'attente, de visite et de pause. Cela donne la priorité aux itinéraires plus rapides plutôt qu'aux itinéraires plus courts. |
Exemples
Cette section couvre trois types d'exemples :
- Exemples de code illustrant la structure des propriétés du modèle de coût.
- Exemple de scénario montrant une façon d’utiliser les propriétés du modèle de coût pour atteindre un objectif commercial.
- Exemple de requête incluant les valeurs définies dans l' exemple de scénario.
Exemples de code
L'exemple de code suivant montre la structure des propriétés du modèle de coût dans
Shipment :
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
L'exemple de code suivant montre la structure des propriétés du modèle de coût dans
Vehicle :
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
Exemple de scénario
Cette section décrit un scénario dans lequel vous possédez une garderie pour chiens. Vous optimisez un itinéraire pour le camion que vous utilisez pour récupérer les chiens chez leurs propriétaires. Dans ce scénario, vous souhaitez que l'optimiseur prenne en compte les coûts liés à la collecte des chiens et aux opérations des véhicules lors de la fourniture d'un itinéraire.
Dans cet exemple, une unité de coût représente 1 dollar. Cela signifie que les valeurs des propriétés du modèle de coût de votre requête sont les suivantes :
| Propriété | Valeur | Scénario |
|---|---|---|
penaltyCost |
10 | Représente la pénalité que vous proposez à vos clients si vous ne récupérez pas leur chien un jour prévu. Chaque fois que vous ne récupérez pas le chien un jour prévu, le client bénéficie d'une réduction de 40 dollars sur le total de son service. |
fixedCost |
30 | Représente le coût quotidien des remboursements de votre prêt automobile, soit 30 dollars par jour. |
costPerKilometer |
0,08 | Représente la quantité d'essence que votre véhicule consomme par kilomètre. Votre véhicule a besoin de 0,04 gallon par kilomètre pour se déplacer, et le coût par gallon dans votre région est de 2 dollars. |
costPerHour |
27 | Représente le montant que vous payez à un chauffeur pour conduire votre véhicule. Vous payez le chauffeur 27 dollars par heure. |
costPerTraveledHour |
2,5 | Représente le montant que vous devez payer pour la climatisation du véhicule par heure pour les chiens sur la route. Lorsque le véhicule ne roule pas, le chauffeur peut ouvrir les portes à l'arrière et éteindre la climatisation. |
En fonction des paramètres de coût, l'optimiseur peut faire des compromis qui ne sont pas évidents pour l'utilisateur, mais qui peuvent être trouvés grâce à l'optimisation.
Le schéma suivant illustre un exemple dans lequel l'optimiseur peut choisir un itinéraire plus long, mais plus rapide, en suivant la ligne verte en pointillés pour éviter le trafic sur la ligne rouge en pointillés.

Dans ce scénario, l'équilibre des coûts des deux itinéraires est le suivant :
La ligne verte en pointillés présente un
costPerHouretcostPerTraveledHourfaibles, car il s'agit d'un itinéraire rapide qui évite le trafic, ce qui est plus rentable même lorsque lecostPerKilometerest élevé.La ligne rouge en pointillés présente un
costPerKilometerfaible, car il s'agit d'un itinéraire direct, mais lecostPerHouret lecostPerTraveledHoursont trop élevés en raison des temps d'attente dans le trafic, ce qui en fait l'itinéraire le plus coûteux.
En plus de fournir des itinéraires rentables, l'optimiseur fournit également une somme des coûts totaux des itinéraires de livraison dans les propriétés de réponse.
Exemple de requête
L'exemple suivant montre la structure d'une requête de base optimizeTours
intégrant les valeurs définies dans l'exemple de scénario :
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
Propriétés de réponse
Le message OptimizeToursResponse comporte des propriétés de coût
qui décrivent les coûts engendrés lors de la réalisation d'un itinéraire :
metrics.costs: coût total de tous les itinéraires, réparti par champs de requête liés aux coûts.metrics.totalCost: coût total de tous les itinéraires additionnés.