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, des véhicules et des expéditions.
Les propriétés du modèle de coûts sont compatibles avec les types d'objectifs d'optimisation suivants :
- Attribution efficace des véhicules et des itinéraires
- Des délais de livraison et de retrait économiques
- Priorisation des envois critiques
Structure
Comme le montre le schéma, les propriétés du modèle de coûts sont structurées comme suit :
Shipment
contient la propriétépenaltyCost
.Vehicle
contient les propriétés suivantes :
Ce document ne présente que les paramètres essentiels du modèle de coût. Consultez la documentation de référence pour obtenir l'ensemble complet des paramètres de coût.
Checklist Essentials
La checklist 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 demande 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 |
Total | Livraison interrompue | Coût encouru en cas de non-expédition. L'API ignore un envoi lorsque le coût de son traitement dépasse son coût de pénalité.
|
Vehicle |
fixedCost |
Total | Livraison | Coût fixe appliqué si ce véhicule est utilisé pour gérer un envoi. |
costPerHour |
Total | Heure | Le coût de fonctionnement 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 par véhicule autonome efficace en raison de sa simplicité et de son exhaustivité. |
|
costPerKilometer |
Total | kilomètre | Coût par kilomètre parcouru par le véhicule, comme les coûts de carburant et les coûts d'entretien amortis du véhicule. | |
costPerTraveledHour |
Total | Heure | Le coût de l'exploitation d'un véhicule par heure uniquement pendant le trajet, hors temps d'attente, de visite et de pause. Les itinéraires les plus rapides sont alors privilégiés par rapport aux itinéraires les plus courts. |
Exemples
Cette section aborde trois types d'exemples :
- Exemples de code illustrant la structure des propriétés du modèle de coûts.
- Exemple de scénario montrant comment utiliser les propriétés du modèle de coût pour atteindre un objectif commercial.
- Exemple de requête qui inclut les valeurs définies dans le scénario exemple.
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 à leur domicile. Dans ce scénario, vous souhaitez que l'optimiseur tienne compte des coûts liés à la prise en charge des chiens et aux opérations du véhicule 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 dans votre requête sont les suivantes :
Propriété | Valeur | Scénario |
---|---|---|
penaltyCost |
10 | Représente la pénalité que vous proposez à vos clients s'ils ne récupèrent pas leur chien le 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 remise de 40 $ sur le montant total de la prestation. |
fixedCost |
30 | Représente le coût quotidien de vos paiements de prêt automobile, soit 30 dollars par jour. |
costPerKilometer |
0,08 | Représente la quantité d'essence consommée par votre véhicule par kilomètre. Votre véhicule a besoin de 0,15 litre par kilomètre pour se déplacer, et le prix du litre dans votre région est de 2 €. |
costPerHour |
27 | Représente le montant que vous payez à un conducteur pour qu'il conduise votre véhicule. Vous payez le chauffeur 27 $ de l'heure. |
costPerTraveledHour |
2.5 | Représente le montant que vous devez payer pour la climatisation du véhicule par heure pour les chiens pendant le trajet. Lorsque le véhicule est à l'arrêt, le conducteur peut ouvrir les portes 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, le solde des coûts des deux itinéraires est le suivant :
La ligne verte en pointillés présente un
costPerHour
et uncostPerTraveledHour
faibles, car il s'agit d'un itinéraire rapide qui évite le trafic. Il est donc plus rentable même lorsque lecostPerKilometer
est élevé.La ligne pointillée rouge présente un
costPerKilometer
faible, car il s'agit d'un itinéraire direct. Toutefois, lescostPerHour
etcostPerTraveledHour
sont 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 récapitulation 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 optimizeTours
de base intégrant les valeurs définies dans le scénario exemple :
{ "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 la réponse
Le message OptimizeToursResponse
comporte des propriétés de coût qui décrivent les coûts encourus lors de l'exécution d'un itinéraire :
metrics.costs
: coût total pour tous les itinéraires, ventilé par champs de requête liés aux coûts.metrics.totalCost
: coût total de tous les itinéraires additionnés.