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. Par conséquent, le modèle de coût est le principal facteur d'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 des envois.

Les propriétés du modèle de coût sont compatibles avec les types d'objectifs d'optimisation suivants :

  • Attribution de véhicules et itinéraires efficaces
  • Délais de retrait et de livraison économiques
  • Priorisation des envois 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 présente que les paramètres essentiels du modèle de coût. Consultez la documentation de référence pour connaître l'ensemble des paramètres de coût.

Checklist Essentials

La checklist suivante décrit les connaissances essentielles pour é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 Livraison interrompue Coût encouru en ignorant l'envoi.
L'API ignore un envoi lorsque le coût de sa réalisation dépasse son coût de pénalité.
  • Le paramètre penaltyCost donne la priorité à la livraison des envois dont le coût est plus élevé.
  • Si vous ne définissez pas de penaltyCost pour un envoi, celui-ci devient obligatoire.
  • Si vous définissez explicitement un penaltyCost d'envoi sur zéro, l'API ignore toujours l'envoi, sauf si d'autres contraintes l'exigent.
Vehicle fixedCost nombre Livraison Coût fixe appliqué si ce véhicule est utilisé pour gérer un envoi.
costPerHour nombre Heure Coût d'utilisation 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 nécessairement 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 nombre kilomètre Coût par kilomètre parcouru par le véhicule, qui peut représenter les coûts de carburant ou 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 transport, à l'exclusion des temps d'attente, de visite et de pause. Cela permet de privilégier les itinéraires plus rapides par rapport aux itinéraires plus courts.

Exemples

Cette section présente trois types d'exemples :

  • Exemples de code illustrant la structure des propriétés du modèle de coût.
  • Exemple de scénario qui montre une façon d'utiliser les propriétés du modèle de coût pour atteindre un objectif d'entreprise.
  • Un exemple de requête qui inclut 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 gérez une garderie pour chiens. Vous optimisez un itinéraire pour le camion que vous utilisez pour récupérer les chiens chez eux. Dans ce scénario, vous souhaitez que l'optimiseur tienne compte des coûts liés à la prise en charge des chiens et à l'utilisation du véhicule lorsqu'il fournit un itinéraire.

Dans cet exemple, une unité de coût représente 1 dollar. Cela signifie que les valeurs de propriété 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 dollars sur le montant 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 consomme 0,04 gallon par kilomètre, et le coût par gallon dans votre région est de 2 dollars.
costPerHour 27 Représente le montant que vous payez à un conducteur pour conduire votre véhicule. Vous payez le chauffeur 27 $ de l'heure.
costPerTraveledHour 2.5 Représente le montant que vous devez payer par heure pour la climatisation du véhicule pour les chiens pendant le trajet. Lorsque le véhicule est à l'arrêt, le conducteur 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, via la ligne verte en pointillés pour éviter le trafic sur la ligne rouge en pointillés.

Le véhicule peut emprunter deux itinéraires : l'un représenté par une ligne verte en pointillés, qui est plus long, mais ne présente aucun incident, et l'autre représenté par une ligne rouge en pointillés, qui est plus court, mais présente un accident de voiture au milieu.

Dans ce scénario, le coût des deux routes est le suivant :

  • La ligne verte en pointillés présente des valeurs costPerHour et costPerTraveledHour faibles, car il s'agit d'un itinéraire rapide qui évite les embouteillages, ce qui est plus rentable même lorsque la valeur costPerKilometer est élevée.

  • La ligne pointillée rouge a un costPerKilometer faible, car il s'agit d'un itinéraire direct, mais les valeurs costPerHour et costPerTraveledHour sont trop élevées en raison des temps d'attente dans les embouteillages, 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 optimizeTours de base 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 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 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.