Modèle de coûts

Les propriétés de coût sont définies sous ShipmentModel.shipments.Shipment et ShipmentModel.vehicles.Vehicle.

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 :

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é.
  • La définition de penaltyCost donne la priorité à la livraison des expéditions dont le coût est plus élevé.
  • Si vous ne définissez pas de penaltyCost pour une expédition, elle devient obligatoire.
  • Si vous définissez explicitement un penaltyCost d'expédition sur zéro, l'API ignore toujours l'expédition , sauf si d'autres contraintes l'exigent.
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.

Le véhicule a deux itinéraires possibles : l'un est représenté par une ligne verte en pointillés, plus longue mais sans incident, et l'autre par une ligne rouge en pointillés, plus courte mais avec un accident de voiture au milieu.

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 costPerHour et costPerTraveledHour faibles, car il s'agit d'un itinéraire rapide qui évite le trafic, ce qui est plus rentable même lorsque le costPerKilometer est élevé.

  • La ligne rouge en pointillés présente un costPerKilometer faible, car il s'agit d'un itinéraire direct, mais le costPerHour et le costPerTraveledHour 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 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.