Optimisation des tournées de véhicules

De nombreuses organisations desservent des ordres avec une flotte de véhicules. Par exemple, un grand magasin d'ameublement peut utiliser plusieurs camions pour livrer des meubles à domicile. Une compagnie spécialisée dans le recyclage des huiles peut acheminer des camions à partir d'une ressource pour collecter les huiles usagées de restaurants. Un service sanitaire peut programmer des visites d'inspection journalières pour chacun de ses inspecteurs.

Exemple d'optimisation des tournées de véhicules

Le problème commun aux exemples ci-dessus est la tournée de véhicules. Chaque organisation doit déterminer les ordres (domiciles, restaurants ou sites d'inspection) à desservir pour chaque itinéraire (camion ou inspecteur), ainsi que l'ordre de visite de ces ordres. L'objectif principal est de desservir au mieux les ordres et de réduire le coût de fonctionnement global de la flotte de véhicules. Par conséquent, le calculateur d'itinéraire de l'Extension ArcGIS Network Analyst trouve le meilleur itinéraire pour un seul véhicule visitant de nombreux arrêts et le solveur de tournées de véhicules trouve les meilleurs itinéraires pour une flotte de véhicules desservant de nombreux ordres. En outre, le solveur de tournées de véhicules peut résoudre un plus grand nombre de problèmes spécifiques, car de nombreuses options sont disponibles, comme la mise en correspondance des capacités des véhicules avec les quantités des ordres, la prise en compte des pauses des chauffeurs et la définition de paires d'ordres de sorte que leur desserte soit assurée par le même itinéraire.

La résolution d'une tournée de véhicules suit le même workflow que d'autres analyses de réseau.

Pour en savoir plus sur le workflow d'analyse de réseau

Couche d'optimisation des tournées de véhicules

La couche d'optimisation des tournées de véhicules stocke les entrées, paramètres et résultats d'une tournée de véhicules donnée.

Création d'une couche d'optimisation des tournées de véhicules

Vous pouvez créer la couche d'optimisation des tournées de véhicules à partir de la barre d'outils Network Analyst en cliquant sur Network Analyst > Nouvelle tournée de véhicules.

Barre d'outils Network Analyst

Lorsque vous créez une couche d'optimisation des tournées de véhicules, celle-ci s'affiche dans la fenêtre Network Analyst, avec ses 13 classes d'analyse de réseau : Commandes, Dépôts, Itinéraires, Passages aux dépôts, Interruptions, Zones de tournées, Points d'origine de tournée, Relais de tournée, Particularités, Paires d'ordres, Barrières ponctuelles, Barrières linéaires et Barrières polygonales.

Fenêtre Network Analyst

La couche d'optimisation des tournées de véhicules s'affiche également dans la fenêtre Table des matières en tant que couche composite nommée Tournée de véhicules (ou Tournée de véhicules 1, Tournée de véhicules 2, et ainsi de suite, si une tournée de véhicules porte déjà le même nom dans la carte). Il existe neuf couches d'entités : Ordres, Passages au dépôt, Dépôts, Points d'origine de tournée, Itinéraires, Zones de tournées, Barrières ponctuelles, Barrières linéaires et Barrières polygonales. Chacune de ces neuf couches d'entités présente une symbologie par défaut que vous pouvez modifier dans la boîte de dialogue Propriétés de la couche correspondante.

RemarqueRemarque :

pauses, particularités, paires d'ordres et relais de tournée étant des tables, elles ne s'affichent pas dans la table des matières.

Table des matières

Classes d'optimisation des tournées de véhicules

La couche d'optimisation des tournées de véhicules est composée de 13 classes d'analyses de réseau, qui sont soit des couches d'entités soit des tables enregistrées dans la couche d'analyse. Elles contiennent les objets d'analyse de réseau utilisés pour le calcul de la tournée de véhicules. Les relations entre diverses classes d'analyses de réseau sont illustrées dans le document suivant :

Relations entre classes d'analyses de réseau dans une tournée de véhicules

Une vue d'ensemble de chaque classe et des descriptions de leurs propriétés sont présentées dans les sections suivantes.

Pour en savoir plus sur les classes d'analyse de réseau.

Couche d'entités ordres

Cette couche d'entités enregistre les ordres qui font partie d'une couche d'optimisation des tournées de véhicules donnée. Un ordre peut être une livraison à un client, une collecte chez un client ou un autre type de tâche. Par exemple : livraison de meubles, collecte d'huiles auprès de restaurants ou visite d'inspection.

Si les ordres comprennent des éléments à collecter ou à livrer, ces éléments peuvent avoir une ou plusieurs capacités, lesquelles peuvent reposer sur une mesure ou une combinaison de mesures de votre choix (poids, volume ou nombre d'unités). Certains ordres, comme les visites d'inspection, peuvent ne pas être associés à des livraisons ou à des collectes.

Un ordre peut avoir une durée de desserte, laquelle correspond au laps de temps nécessaire pour effectuer le travail chez l'ordre. Par exemple, une durée de desserte de 20 minutes peut s'avérer nécessaire à un camion de livraison pour qu'un meuble soit déchargé et acheminé jusqu'au domicile d'un client. La durée de desserte peut être la même pour tous les ordres ou elle peut être différente pour chaque ordre.

Un ordre peut posséder une ou deux fenêtres horaires, lesquelles indiquent le moment auquel un véhicule est autorisé à le visiter. Par exemple, un camion de livraison d'alimentation de gros est autorisé à arriver à un restaurant uniquement entre 8h00 et 10h00 ou entre 14h00 et 16h00, car sa venue à tout autre moment perturberait le service.

Certaines particularités peuvent être associées à un ordre. Autrement dit, un ordre peut nécessiter un technicien possédant certaines compétences (par exemple, un électricien) ou un véhicule avec certaines fonctions (un monte-charge). Seul un itinéraire ayant la même particularité sera affecté à l'ordre.

Propriétés des ordres

Champs en entrée des ordres

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

Forme

Champ de géométrie qui indique l'emplacement géographique de l'objet d'analyse de réseau.

Nom

Nom de l'objet d'analyse de réseau.

Le nom doit être unique.

Ce champ joue le rôle de clé primaire. Il est utilisé en tant que clé étrangère pour faire référence aux ordres dans la table Paires d'ordres. Le nom des ordres ne respectent pas la casse et ne peuvent pas être vides, même si l'ordre est exclu de l'opération de calcul.

Description

Informations décrivant l'ordre. Ce champ peut contenir toute information textuelle concernant l'ordre, sans restriction en matière d'unicité. Vous pouvez stocker l'identifiant d'un client dans le champ Name et son nom véritable ou son adresse dans le champ Description.

ServiceTime

Cette propriété spécifie le temps passé à un emplacement du réseau traversé par l'itinéraire. Elle stocke donc la valeur d'impédance de cet emplacement. Une valeur zéro ou Null indique que l'emplacement de réseau ne nécessite aucun temps de service.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TimeWindowStart1

Heure de début de la première fenêtre horaire pour la localisation réseau. Ce champ peut contenir une valeur Null, ce qui indique aucune heure de début.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

TimeWindowEnd1

Heure de fin de la première fenêtre pour la localisation réseau. Ce champ peut contenir une valeur Null, ce qui indique aucune heure de fin.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

TimeWindowStart2

Heure de début de la deuxième fenêtre horaire pour la localisation réseau. Ce champ peut contenir une valeur Null, ce qui indique l'absence de deuxième fenêtre horaire.

Si la première fenêtre horaire spécifiée par les champs TimeWindowStart1 et TimeWindowEnd1 est nulle, la deuxième doit l'être également.

Si les deux fenêtres horaires sont non nulles, elles ne peuvent pas se chevaucher. En outre, la deuxième fenêtre horaire doit survenir après la première.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

TimeWindowEnd2

Heure de fin de la deuxième fenêtre horaire pour la localisation réseau. Ce champ peut contenir une valeur Null.

Lorsque les deux valeurs TimeWindowStart2 et TimeWindowEnd2 sont nulles, il n'existe aucune deuxième fenêtre horaire.

Lorsque TimeWindowStart2 est non nul mais TimeWindowEnd2 est nul, il existe une deuxième fenêtre horaire ayant une heure de début mais aucune heure de fin. Cette situation est valide.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

MaxViolationTime1

Une fenêtre horaire est considérée comme violée si l'heure d'arrivée survient après la fin de la fenêtre horaire. Ce champ spécifie l'infraction de temps maximale autorisée pour la première fenêtre horaire de l'ordre. Elle peut contenir une valeur de zéro, mais pas de valeurs négatives. La valeur zéro indique qu'une violation de fenêtre horaire à la première fenêtre horaire de l'ordre est inacceptable. La première fenêtre horaire est donc stricte. En revanche, une valeur Null indique qu'il n'y a aucune limite d'infraction de temps admissible. Une valeur différente de zéro spécifie le retard maximal autorisé ; par exemple, un itinéraire peut arriver à un ordre jusqu'à 30 minutes après la fin de sa première fenêtre horaire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Les violations de fenêtre horaire peuvent être suivies et pondérées par le solveur. Vous pouvez faire en sorte que le solveur de tournées de véhicules adopte l'une des trois approches suivantes :

  • réduire la durée totale de la violation, sans tenir compte de l'augmentation du coût de trajet de la flotte,
  • trouver une solution équilibrée entre la durée totale de la violation et le coût de trajet,
  • ignorer la durée totale de la violation et réduire à la place le coût de trajet de la flotte.

En attribuant un degré d'importance au paramètre Infraction de fenêtre horaire de la couche d'analyse, vous choisissez de fait l'une de ces trois approches. Cependant, le solveur renvoie une erreur si la valeur définie pour MaxViolationTime1 est dépassée.

MaxViolationTime2

Infraction maximale de temps autorisée pour la deuxième fenêtre horaire de l'ordre. Ce champ est identique au champ MaxViolationTime1.

DeliveryQuantities

Taille de la livraison. Vous pouvez spécifier la taille dans la dimension de votre choix, comme le poids, le volume ou la quantité. Vous pouvez même spécifier plusieurs dimensions, par exemple le poids et le volume.

Si l'ordre nécessite 2 000 tonnes de marchandises, le paramètre Nombre de capacités qui figure dans la boîte de dialogue Propriétés de la couche de la couche d'analyse doit être défini sur 1 et DeliveryQuantities doit être défini sur 2000.

En présence de plusieurs capacités indiquées par la propriété Nombre de capacités de la couche d'analyse, les valeurs de DeliveryQuantities sont séparées d'un espace.

Par exemple, lorsque le poids et volume sont connus, le paramètre Nombre de capacités qui figure dans la boîte de dialogue Propriétés de la couche de la couche d'analyse doit être défini sur 2. Si l'ordre nécessite 2 000 tonnes de marchandises qui occupent 100 mètres cube, DeliveryQuantities doit être défini sur 2000 100.

Une chaîne vide ou une valeur Null signifie que toutes les dimensions sont égales à zéro. Si la chaîne contient un nombre insuffisant de valeurs par rapport au nombre de capacités ou aux dimensions faisant l'objet d'un suivi, les valeurs restantes sont considérées comme nulles. Les quantités de livraison ne peuvent pas être négatives.

PickupQuantities

Taille de l'enlèvement. Vous pouvez spécifier la taille dans la dimension de votre choix, comme le poids, le volume ou la quantité. Vous pouvez même spécifier plusieurs dimensions, par exemple le poids et le volume. En revanche, vous ne pouvez pas utiliser de valeurs négatives. Ce champ est identique au champ DeliveryQuantities de la classe Ordres.

RemarqueRemarque :
dans le cas d'une visite d'échange, un ordre peut avoir à la fois des quantités de livraison et de collecte.

Revenue

Chiffre d'affaires généré si l'ordre est inclus dans une solution. Ce champ peut contenir une valeur Null, qui indique un chiffre d'affaires égal à zéro, mais il ne peut pas contenir de valeur négative.

Le chiffre d'affaires est inclus pour optimiser la valeur de la fonction objective mais il ne fait pas partie du coût de fonctionnement de la solution. Autrement dit, le champ TotalCost de la classe d'itinéraires n'inclut jamais le paramètre Revenue dans sa sortie. Cependant, le chiffre d'affaires pondère l'importance relative de la desserte des ordres.

SpecialtyNames

Chaîne séparée par des espaces contenant les noms des particularités requises pour l'ordre. Une valeur nulle indique que l'ordre n'inclut pas de particularités.

Ce champ est une clé étrangère du champ Nom de la table Particularités. Les objets de particularité doivent exister pour pouvoir apparaître dans la liste déroulante SpecialtyNames. Par exemple, une compagnie d'entretien de pelouses peut avoir besoin de desservir un ordre avec un pesticide nécessitant une licence d'applicateur. L'entreprise peut créer un objet Particularité nommé Licence et affecter à cette propriété la valeur Licence.

AssignmentRule

Ce champ spécifie la règle d'attribution de l'ordre à un itinéraire. Elle est contrainte par un domaine de valeurs répertoriées ci-dessous (leurs valeurs précodées sont indiquées entre parenthèses).

  • Exclure (0) - L'ordre est exclu de l'opération de calcul qui s'ensuit.
  • Conserver la tournée et la séquence définie (1) - Le solveur doit toujours attribuer à l'ordre l'itinéraire et la séquence prédéfinis lors du calcul. Si cette règle d'attribution ne peut pas être respectée, une violation d'ordre s'ensuit.

    Avec ce paramètre, seule la séquence relative est conservée (mais pas la séquence absolue). Par exemple, prenons deux ordres, A et B. Leurs valeurs de séquence sont de 2 et 3, respectivement. Si vous définissez les valeurs du champ AssignmentRule sur Conserver la tournée et la séquence définie, les valeurs de séquence réelles de A et B peuvent changer une fois l'analyse terminée, car d'autres ordres, pauses et passages aux dépôts peuvent encore être insérés avant, entre ou après A et B. Toutefois, B ne peut pas survenir avant A.

  • Conserver la tournée (2) - Le solveur doit toujours attribuer l'ordre à l'itinéraire prédéfini lors du calcul. Une séquence valide doit aussi être définie, même si elle ne peut pas être conservée. Si l'ordre ne peut pas être attribué à l'itinéraire spécifié, une violation d'ordre s'ensuit.
  • Déroger (3) - Le solveur tente de conserver l'itinéraire et la séquence prédéfinis pour l'ordre lors du calcul. Mais un nouvel itinéraire et/ou une nouvelle séquence peut être attribuée à l'ordre si cela permet de réduire la valeur globale de la fonction objective. Il s'agit de la valeur par défaut.

Ce champ ne peut pas contenir une valeur Null.

Champs de localisation réseau

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Ensemble, ces quatre propriétés décrivent le point sur le réseau où se trouve l'objet.

Pour en savoir plus sur les champs de localisation réseau

CurbApproach

La propriété CurbApproach spécifie la direction selon laquelle un véhicule peut atteindre et quitter la localisation réseau. Il existe quatre choix différents (leurs valeurs précodées sont affichées entre parenthèses) :

  • Peu importe le côté (0) - le véhicule peut atteindre ou quitter la localisation réseau dans une direction quelconque. Les demi-tours sont permis. Vous devez sélectionner ce paramètre si votre véhicule peut effectuer un demi-tour à l'arrêt ou s'il peut entrer dans une allée ou un parking et revenir en arrière.
  • Côté droit du véhicule (1) - Lorsque le véhicule atteint et quitte la localisation réseau, le bord du trottoir doit être du côté droit du véhicule. Le demi-tour est interdit.
  • Côté gauche du véhicule (2) - Lorsque le véhicule atteint et quitte la localisation réseau, le bord du trottoir doit être du côté gauche du véhicule. Le demi-tour est interdit.
  • Pas de demi-tour (3) - Lorsque le véhicule atteint la localisation réseau, le bord du trottoir peut être d'un côté quelconque du véhicule ; en revanche, le véhicule doit partir sans revenir en arrière.

Pour en savoir plus sur les règles de demi-tour

RemarqueRemarque :
  • Une fenêtre horaire n'indique que le moment auquel un véhicule peut arriver à un ordre, et non l'heure à laquelle la desserte doit être terminée. Pour tenir compte de la durée de la desserte et partir avant la fin de la fenêtre horaire, vous devez soustraire ServiceTime du champ TimeWindowEnd1.

  • Les champs de fenêtres horaires peuvent contenir soit une valeur d'heure uniquement, soit une valeur de date et d'heure. Si un champ d'heure tel que TimeWindowStart1 a une valeur d'heure uniquement (par exemple, 8h00), il est supposé que la date est celle spécifiée par la propriété Date par défaut de la couche d'analyse. L'utilisation de valeurs de date et d'heure (par exemple, 7/11/2010 8h00) vous permet de définir des fenêtres horaires qui couvrent plusieurs jours.

  • Si vous utilisez des données de trafic, les champs d'heure pour l'emplacement de réseau référencent toujours le même fuseau horaire que le tronçon où se trouve l'emplacement de réseau.

Champs en entrée/sortie des ordres

Champ en entrée/sortie

Description

RouteName

Nom de l'itinéraire auquel l'ordre est attribué.

En tant que champ en entrée, ce champ est utilisé pour préattribuer un ordre à une tournée spécifique. Il peut contenir une valeur Null qui indique que l'ordre n'est préattribué à aucun itinéraire et que le solveur détermine la meilleure attribution d'itinéraire possible pour l'ordre. Si sa valeur est définie sur nul, le champ de séquence doit aussi l'être.

Le champ RouteName est une clé étrangère du champ Nom de la classe Itinéraires. Les objets d'itinéraire doivent exister pour pouvoir apparaître dans la liste RouteName.

Après un calcul, si l'ordre est visité, le champ RouteName contient le nom de l'itinéraire auquel l'ordre est attribué.

Séquence

Ce champ indique la séquence de l'ordre sur son itinéraire attribué.

En tant que champ en entrée, il permet de spécifier la séquence relative d'un ordre sur l'itinéraire. Ce champ peut contenir une valeur Null qui spécifie que l'ordre peut être placé n'importe où le long de l'itinéraire. Une valeur Null peut se produire seulement avec une valeur RouteName Null.

Les valeurs de séquence en entrée sont positives et uniques pour chaque itinéraire (partagées par les passages aux dépôts de relais, les ordres et les pauses), mais elles n'ont pas besoin de commencer à 1 ou d'être contiguës.

Après l'analyse, le champ Sequence contient la valeur de séquence de l'ordre sur son itinéraire attribué. Les valeurs de séquence en sortie pour un itinéraire sont partagées entre les passages aux dépôts, les ordres et les pauses. Elles démarrent à 1 (au dépôt initial) et sont consécutives. Par conséquent, la plus petite valeur de séquence en sortie possible pour un ordre visité est 2, car une tournée commence toujours à un dépôt.

Etat

Ce champ est contraint par un domaine de valeurs répertoriées ci-dessous (leurs valeurs précodées sont affichées entre parenthèses).

  • OK (0) - La localisation réseau est valide.
  • Non localisé (1) - Impossible de déterminer la localisation sur le réseau.
  • Elément de réseau non localisé (2) - L'élément de réseau sur lequel la localisation réseau est supposée figurer est introuvable. Cette situation peut se produire lorsqu'un tronçon de réseau est supprimé et la localisation réseau n'est pas recalculée.

Après une opération de recherche, l'état peut être modifié à l'aide de l'une des valeurs d'état suivantes :

  • OK (0) - La localisation réseau a été évaluée avec succès.
  • Elément non traversable (3) - L'élément de réseau sur lequel figure la localisation réseau n'est pas traversable. Cette situation peut se produire lorsque l'élément de réseau est restreint par un attribut de restriction.
  • Valeurs de champs non valides (4) - Les valeurs de champs de la localisation réseau n'appartiennent pas aux domaines précodés ou par plage de la couche d'analyse. Par exemple, un nombre négatif peut se trouver à l'endroit où des nombres positifs sont requis.
  • Non atteint (5) - La localisation réseau ne peut pas être atteinte par le solveur.

Si des fenêtres horaires sont utilisées et que l'itinéraire arrive trop tôt ou trop tard, la valeur est modifiée en Violation de fenêtre horaire (6).

RemarqueRemarque :

si une valeur du champ AssignmentRule de l'ordre est définie sur Exclure, les valeurs en entrée des champs Status, RouteName et Sequence ne sont alors pas modifiées pendant le calcul.

Champs en sortie des ordres

Champ en sortie

Description

ViolatedConstraints

Ce champ contient un résumé des contraintes de violation ; il est défini après un calcul. Une combinaison de plusieurs violations répertoriées ci-dessous peut être attribuée à ce champ si l'attribution de l'ordre à l'un des itinéraires doit entraîner la violation d'une contrainte.

ApprofondissementApprofondissement :

La valeur précodée qui représente la description textuelle est affichée dans la liste ci-dessous entre parenthèses. Remarquez que les valeurs précodées font partie d'une séquence géométrique qui augmente en doublant la valeur précédente. Cela permet la codification de différentes combinaisons d'infractions. Par exemple, la combinaison de "La valeur de capacités est dépassée" (2) et "Zone de tournée stricte" (128) est codée sous la forme 130 (2+128).

  • Valeur MaxOrderCount excédée (1) - L'ordre ne peut pas être attribué à un itinéraire, car cette attribution dépasserait la valeur du champ MaxOrderCount de l'itinéraire. En cas de dépassement du nombre maximal d'ordres, la solution est tout de même générée, mais certains ordres ne seront pas desservis. Dans ce cas, le solveur de tournées de véhicules inclut le plus grand nombre d'ordres possible par rapport aux contraintes.
  • La valeur de capacités est dépassée. (2) - L'ordre ne peut pas être attribué à un itinéraire, car cette attribution dépasserait la valeur du champ Capacities de l'itinéraire.
  • Valeur MaxTotalTime excédée (4) - L'ordre ne peut pas être attribué à un itinéraire, car cette attribution dépasserait la valeur du champ MaxTotalTime de l'itinéraire.
  • Valeur MaxTotalTravelTime excédée (8) - L'ordre ne peut pas être attribué à un itinéraire, car cette attribution dépasserait la valeur du champ MaxTotalTravelTime de l'itinéraire.
  • Valeur MaxTotalDistance excédée (16) - L'ordre ne peut pas être attribué à un itinéraire, car cette attribution dépasserait la valeur du champ MaxTotalDistance de l'itinéraire.
  • Fenêtre horaire stricte (32) - L'ordre possède une fenêtre horaire stricte et ne peut pas être attribué à un itinéraire qui risque de provoquer une infraction de fenêtre horaire. (Pour spécifier une fenêtre horaire stricte, attribuez la valeur 0 au champ MaxViolationTime1 ou MaxViolationTime2.)
  • Particularité sans correspondance (64) - Les particularités liées à l'ordre sont introuvables sur l'itinéraire cible.
  • Zone de tournée stricte (128) - L'ordre ne coïncide pas avec une zone de tournée stricte. Si tous les itinéraires possèdent des zones de tournée strictes et qu'un ordre ne coïncide pas avec une zone, l'ordre reçoit cette contrainte de violation.
  • Paire d'ordres : valeur MaxTransitTime excédée (256) - L'ordre fait partie d'une paire d'ordres et l'attribution de l'ordre dépasserait le temps de transit maximal indiqué par la valeur du champ MaxTransitTime de la paire d'ordres.
  • Violation de paire d'ordres (512) - L'ordre appartient à une paire d'ordres et ne peut pas être attribué à un itinéraire, car l'autre ordre présente une violation quelconque. Supposons par exemple, que les ordres O1 et O2 forment une paire, et que l'ordre O1 se trouve sur un élément de réseau doté d'impédances négatives, mais qu'il n'existe aucun problème de violation avec l'ordre O2. Le solveur renvoie Inaccessible pour l'ordre O1 et Violation de paire d'ordres pour O2, car les deux ordres ne peuvent pas être attribués à un itinéraire.
  • Inaccessible (1024) - L'ordre se trouve sur un élément de réseau qui ne peut être atteint par aucun itinéraire. Tel est souvent le cas lorsqu'un ordre se trouve sur une portion discontinue du réseau.
  • Impossible d'insérer l'interruption requise (2048) - Une interruption pour l'itinéraire a une valeur de séquence nulle en présence d'ordres prédéfinis et l'interruption ne peut pas être insérée n'importe où sans provoquer d'autres violations.
  • Impossible d'insérer le relais requis (4096) - Un itinéraire dépasse sa capacité et doit visiter un relais de tournée de véhicules. Le relais de tournée associé a une valeur de séquence nulle en présence d'ordres prédéfinis et ne peut pas être inséré n'importe où sans provoquer d'autres violations.
  • Nombre MaxTravelTimeBetweenBreaks dépassé (8192) - Le solveur n'a pas pu insérer de pause pendant le laps de temps spécifié par le champ MaxTravelTimeBetweenBreaks de la pause. Tel est souvent le cas lorsqu'une séquence est prédéfinie pour une pause et qu'elle reste inaccessible pendant le temps de trajet maximal.

  • Pause MaxCumulWorkTime dépassée (16384) - Le solveur n'a pas pu insérer de pause pendant le laps de temps spécifié par le champ MaxCumulWorkTime de la pause. Tel est souvent le cas lorsqu'une séquence est prédéfinie pour une pause et qu'elle reste inaccessible pendant le temps de travail maximal.

Pour en savoir plus sur le dépannage des analyses de réseau

RemarqueRemarque :

La valeur du champ ViolatedConstraints d'un ordre non visité peut ou non décrire toutes ses violations. Si la violation est suffisamment grave pour exclure immédiatement l'ordre de toute prise en compte, le solveur l'exclut, ce qui empêche la détection d'autres violations pour cet ordre. En cas de détection d'une violation qui n'arrête pas automatiquement la génération d'une solution, celle-ci est consignée dans le champ ViolatedConstraints et le solveur continue de prendre en compte l'ordre. Toute autre violation de ce type est ajoutée au champ ViolatedConstraints jusqu'à ce que (a) le solveur détecte une violation qui arrête prématurément le calcul pour cet ordre en particulier ou (b) le solveur trouve une solution globale au problème.

FromPrevTravelTime

Temps de trajet entre la visite précédente sur l'itinéraire et l'ordre.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

FromPrevDistance

Distance de trajet entre la visite précédente sur l'itinéraire et l'ordre.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

CumulTravelTime

Temps de trajet cumulé de l'itinéraire jusqu'à l'arrivée à l'ordre.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulDistance

Distance de trajet cumulé de l'itinéraire jusqu'à l'arrivée à l'ordre.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

CumulTime

Durée cumulée de la tournée jusqu'à l'ordre, celui-ci étant inclus. La durée cumulée englobe le temps de trajet ainsi que la durée de desserte et le temps d'attente aux ordres.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

ArriveCurbApproach

Indique de quel côté du véhicule se trouve le bord du trottoir lorsque le véhicule atteint la localisation réseau. Si la valeur CurbApproach de la localisation réseau est définie sur Côté droit du véhicule, la valeur ArriveCurbApproach après la recherche est Côté droit du véhicule. Toutefois, si la valeur CurbApproach est définie sur Peu importe le côté ou sur Pas de demi-tour, la propriété ArriveCurbApproach peut correspondre au côté droit ou gauche selon la valeur impliquant le plus court chemin total.

DepartCurbApproach

Indique de quel côté du véhicule se trouve le bord du trottoir lorsque le véhicule quitte la localisation réseau. Si la valeur CurbApproach de la localisation réseau est définie sur Côté droit du véhicule, la valeur DepartCurbApproach après la recherche est Côté droit du véhicule. Toutefois, si la valeur CurbApproach est définie sur Peu importe le côté ou sur Pas de demi-tour, la propriété DepartCurbApproach peut correspondre au côté droit ou gauche selon la valeur impliquant le plus court chemin total.

ArriveTime

Valeur de date et heure indiquant l'heure d'arrivée à l'ordre.

La tournée peut arriver à l'ordre avant le commencement de l'une des fenêtres horaires de l'ordre, auquel cas il y a un temps d'attente à l'ordre. Dans le cas d'un ordre doté de fenêtres horaires souples, la tournée peut aussi arriver à l'ordre après la fin de l'une des fenêtres horaires, auquel cas il y a une infraction de temps à l'ordre.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, le fuseau horaire de cette valeur de l'heure est extraite de l'élément de réseau sur lequel se trouve l'ordre.

DepartTime

Valeur de date et heure indiquant l'heure de départ de l'ordre. L'itinéraire part de l'ordre une fois la desserte terminée.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, le fuseau horaire de cette valeur de l'heure est extraite de l'élément de réseau sur lequel se trouve l'ordre.

WaitTime

Temps d'attente ou escale à l'ordre. Vous pouvez par exemple avoir une valeur de temps d'attente si une tournée doit attendre l'ouverture d'une fenêtre horaire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

ViolationTime

Laps de temps écoulé entre la fin de la fenêtre horaire de l'ordre et l'arrivée de la tournée du véhicule.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulWaitTime

Temps d'attente cumulé depuis le début de la tournée jusqu'à l'ordre, celui-ci étant inclus.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulViolationTime

Infraction de temps cumulée depuis le début de la tournée jusqu'à l'ordre, celui-ci étant inclus.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Classe Depots

Cette classe d'analyse de réseau enregistre les dépôts qui font partie d'une couche d'optimisation des tournées de véhicules donnée. Un dépôt est un emplacement d'où part un véhicule au début de sa journée de travail et à laquelle il retourne à la fin de la journée. Les dépôts sont également des lieux où les véhicules sont chargés (en cas de livraison) ou déchargés (en cas de collecte). Dans certains cas, un dépôt peut aussi jouer le rôle d'emplacement de relais où un véhicule peut être déchargé ou rechargé avant de poursuivre les livraisons ou les collectes. Un dépôt possède des heures d'ouverture et de fermeture, spécifiées par une fenêtre horaire stricte. Les véhicules ne peuvent pas arriver à un dépôt en-dehors de cette fenêtre horaire.

Propriétés des dépôts

Champs en entrée des dépôts

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

Forme

Champ de géométrie qui indique l'emplacement géographique de l'objet d'analyse de réseau.

Nom

Nom de l'objet d'analyse de réseau.

Ce champ est une clé primaire. Il est utilisé en tant que clé étrangère dans la couche d'entités Itinéraires, la table Relais de tournée et la couche d'entités Passages aux dépôts pour faire référence aux dépôts. Les noms de dépôts ne respectent pas la casse, ils doivent être non vides et uniques.

Description

Informations décrivant l'objet d'analyse de réseau. Ce champ peut contenir toute information textuelle, sans restriction en matière d'unicité.

Si vous voulez noter par exemple dans quelle région se trouve un dépôt ou l'adresse et le numéro de téléphone du dépôt, vous pouvez saisir ces informations ici, plutôt que dans le champ Name.

TimeWindowStart1

Heure de début de la première fenêtre horaire pour la localisation réseau. Ce champ peut contenir une valeur Null, ce qui indique aucune heure de début.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

TimeWindowEnd1

Heure de fin de la première fenêtre pour la localisation réseau. Ce champ peut contenir une valeur Null, ce qui indique aucune heure de fin.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

TimeWindowStart2

Heure de début de la deuxième fenêtre horaire pour la localisation réseau. Ce champ peut contenir une valeur Null, ce qui indique l'absence de deuxième fenêtre horaire.

Si la première fenêtre horaire spécifiée par les champs TimeWindowStart1 et TimeWindowEnd1 est nulle, la deuxième doit l'être également.

Si les deux fenêtres horaires sont non nulles, elles ne peuvent pas se chevaucher. En outre, la deuxième fenêtre horaire doit survenir après la première.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

TimeWindowEnd2

Heure de fin de la deuxième fenêtre horaire pour la localisation réseau. Ce champ peut contenir une valeur Null.

Lorsque les deux valeurs TimeWindowStart2 et TimeWindowEnd2 sont nulles, il n'existe aucune deuxième fenêtre horaire.

Lorsque TimeWindowStart2 est non nul mais TimeWindowEnd2 est nul, il existe une deuxième fenêtre horaire ayant une heure de début mais aucune heure de fin. Cette situation est valide.

(Reportez-vous à la remarque sous cette table de propriétés pour plus d'informations.)

Champs de localisation réseau

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

Ensemble, ces quatre propriétés décrivent le point sur le réseau où se trouve l'objet.

Pour en savoir plus sur les champs de localisation réseau

CurbApproach

La propriété CurbApproach spécifie la direction à partir de laquelle un véhicule peut arriver au dépôt et en repartir. Cette propriété s'avère utile pour les véhicules qui doivent arriver à un dépôt et en repartir à partir d'une direction spécifique ou qui doivent éviter de faire des demi-tours. Vous pouvez tenir compte de ces exigences en choisissant l'une des quatre valeurs suivantes pour CurbApproach :

  • Peu importe le côté (0) - le véhicule peut atteindre ou quitter la localisation réseau dans une direction quelconque. Les demi-tours sont permis. Vous devez sélectionner ce paramètre si votre véhicule peut effectuer un demi-tour à l'arrêt ou s'il peut entrer dans une allée ou un parking et revenir en arrière.
  • Côté droit du véhicule (1) - Lorsque le véhicule atteint et quitte la localisation réseau, le bord du trottoir doit être du côté droit du véhicule. Le demi-tour est interdit.
  • Côté gauche du véhicule (2) - Lorsque le véhicule atteint et quitte la localisation réseau, le bord du trottoir doit être du côté gauche du véhicule. Le demi-tour est interdit.
  • Pas de demi-tour (3) - Cette option n'est pas autorisée avec les dépôts. Un message d'erreur est renvoyé pendant le calcul en cas d'utilisation de l'option Pas de demi-tour. Les demi-tours peuvent toutefois encore être évités en choisissant Côté droit du véhicule ou Côté gauche du véhicule.

Pour en savoir plus sur les règles de demi-tour

RemarqueRemarque :
  • Les champs de fenêtres horaires peuvent contenir soit une valeur d'heure uniquement, soit une valeur de date et d'heure. Si un champ d'heure tel que TimeWindowStart1 a une valeur d'heure uniquement (par exemple, 8h00), il est supposé que la date est celle spécifiée par la propriété Date par défaut de la couche d'analyse. L'utilisation de valeurs de date et d'heure (par exemple, 7/11/2010 8h00) vous permet de définir des fenêtres horaires qui couvrent plusieurs jours.

  • Si vous utilisez des données de trafic, les champs d'heure pour l'emplacement de réseau référencent toujours le même fuseau horaire que le tronçon où se trouve l'emplacement de réseau.

Champs en entrée/sortie des dépôts

Champ en entrée/sortie

Description

Etat

Ce champ est contraint par un domaine de valeurs répertoriées ci-dessous (leurs valeurs précodées sont affichées entre parenthèses).

  • OK (0) - La localisation réseau est valide.
  • Non localisé (1) - Impossible de déterminer la localisation sur le réseau.
  • Elément de réseau non localisé (2) - L'élément de réseau sur lequel la localisation réseau est supposée figurer est introuvable. Cette situation peut se produire lorsqu'un tronçon de réseau est supprimé et la localisation réseau n'est pas recalculée.

Après une opération de recherche, l'état peut être modifié à l'aide de l'une des valeurs d'état suivantes :

  • OK (0) - La localisation réseau a été évaluée avec succès.
  • Elément non traversable (3) - L'élément de réseau sur lequel figure la localisation réseau n'est pas traversable. Cette situation peut se produire lorsque l'élément de réseau est restreint par un attribut de restriction.
  • Valeurs de champs non valides (4) - Les valeurs de champs de la localisation réseau n'appartiennent pas aux domaines précodés ou par plage de la couche d'analyse. Par exemple, un nombre négatif peut se trouver à l'endroit où des nombres positifs sont requis.
  • Non atteint (5) - La localisation réseau ne peut pas être atteinte par le solveur.

Si des fenêtres horaires sont utilisées et que le véhicule arrive trop tôt ou trop tard, la valeur est modifiée en Infraction de fenêtre horaire (6).

Classe Itinéraires

Cette classe d'analyse de réseau enregistre les itinéraires qui font partie d'une couche d'optimisation des tournées de véhicules donnée. Un itinéraire spécifie les caractéristiques des véhicules et des chauffeurs et représente le parcours entre les dépôts et les ordres. Dans ArcGIS Network Analyst, les véhicules, les itinéraires et les chauffeurs sont synonymes, et le terme itinéraire englobe ces trois éléments.

RemarqueRemarque :

le solveur de tournées de véhicules n'est pas conçu pour prendre en compte un même véhicule utilisé sur plusieurs postes dans la journée dans la même solution de tournées ni le changement de chauffeur au cours d'une journée.

Un itinéraire peut passer du temps en chargement ou déchargement aux dépôts initial et final. Le laps de temps passé à un dépôt est déterminé pour l'itinéraire et spécifié sous forme de durées de desserte de dépôt initial et final.

Un itinéraire peut commencer à une heure fixe ou il peut avoir une heure de début souple, c'est-à-dire une plage d'heures de début minimale et maximale. La plage d'heures de début et la fenêtre horaire du dépôt initial sont prises en considération lors de la détermination de l'heure de début réelle de la tournée.

Le coût de fonctionnement d'un itinéraire individuel peut être composé de coûts basés sur le temps, de coûts basés sur la distance et/ou de coûts fixes indépendants du temps travaillé ou de la distance parcourue. Il peut par exemple y avoir un coût fixe associé à l'utilisation d'un véhicule si des véhicules supplémentaires doivent être loués pour les jours à forte charge de travail. De la même façon, le chauffeur peut être payé pour le nombre d'heures travaillé, en incluant ou en excluant les heures supplémentaires et les pauses déjeuner. Ce type de coûts peut permettre de spécifier des coûts basés sur le temps. Les coûts de combustible peuvent permettre de spécifier des coûts de distance.

Le véhicule effectuant une tournée donnée peut également avoir une capacité, qui limite la quantité qu'il peut transporter.

Il peut exister des contraintes sur la journée de travail d'un chauffeur, par exemple la distance totale effectuée ou le nombre d'heures qu'un chauffeur peut travailler ou conduire en fonction des réglementations gouvernementales ou des conventions collectives.

L'itinéraire peut inclure des pauses. Le chauffeur peut être payé ou ne pas être payé pendant ces pauses.

Un véhicule peut avoir certaines capacités : un monte-charge, un blindage spécifique ou des techniciens possédant des compétences particulières, par exemple. Les ordres ayant ces particularités définies doivent être attribués aux tournées adéquates.

Un itinéraire peut être associé à une zone s'il est restreint de manière à être valable dans une région géographique prédéfinie.

Les itinéraires sont des entités lignes. Il est possible de les importer à partir d'autres couches d'optimisation des tournées de véhicules, d'autres entités linéaires, ou de tables. Ils peuvent également être créés à l'aide de la commande Ajouter un élément.

Propriétés des itinéraires

Champs en entrée des itinéraires

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

Nom

Nom de l'objet d'analyse de réseau.

Ce champ est la clé primaire. Il est utilisé en tant que clé étrangère de la couche d'entités Ordres, de la table Interruptions, des couches d'entités Zones de tournées et Points d'origine de tournée, de la table Relais de tournée et de la couche d'entités Passages aux dépôts. Le nom des itinéraires ne respectent pas la casse et ne peuvent pas être vides, même si l'itinéraire ne fait pas partie du calcul. Le nom doit être unique.

Description

Informations décrivant l'objet d'analyse de réseau. Ce champ peut contenir toute information textuelle, sans restriction en matière d'unicité.

StartDepotName

Nom du dépôt initial de l'itinéraire. Ce champ est une clé étrangère du champ Nom de la classe Dépôts. Les objets de dépôts doivent exister pour pouvoir apparaître dans la liste déroulante StartDepotName.

Si la valeur de StartDepotName est Null, l'itinéraire commence au premier ordre affecté. Omettre le dépôt initial est utile lorsque le point de départ du véhicule est inconnu ou sans rapport à votre problème. Cependant, si la valeur de StartDepotName est Null, EndDepotName ne peut pas l'être également.

Si des livraisons sont prévues le long de l'itinéraire et que la valeur de StartDepotName est Null, la cargaison est supposée avoir été chargée sur le véhicule à un dépôt virtuel avant le début de l'itinéraire. Dans le cas d'un itinéraire sans passage à des relais, les ordres de livraison (ceux dont les valeurs DeliveryQuantities sont différentes de zéro dans la classe Ordres) sont chargés au dépôt initial ou au dépôt virtuel. Pour un itinéraire doté de passages à des relais, seuls les ordres de livraison avant le premier passage à un relais sont chargés au dépôt initial ou au dépôt virtuel.

EndDepotName

Nom du dépôt final de l'itinéraire. Ce champ est une clé étrangère du champ Nom de la classe Dépôts. Les objets de dépôts doivent exister pour pouvoir apparaître dans la liste déroulante EndDepotName.

StartDepotServiceTime

Durée de desserte au dépôt initial. Cette valeur peut servir à modéliser le temps passé à charger le véhicule. Ce champ peut contenir une valeur Null qui indique un temps de service égal à zéro.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

RemarqueRemarque :

Les périodes de service aux dépôts finaux et initiaux sont des valeurs fixes (fournies par les champs StartDepotServiceTime et EndDepotServiceTime) et ne prennent pas en considération la charge réelle d'un itinéraire. Par exemple, le temps de chargement d'un véhicule au dépôt initial peut dépendre de la taille des ordres. Par conséquent, les périodes de service au dépôt peuvent être dotées de valeurs correspondant à une cargaison pleine ou une cargaison moyenne, ou vous pouvez effectuer vos propres estimations de temps.

EndDepotServiceTime

Durée de desserte au dépôt final. Cette valeur peut servir à modéliser le temps passé à décharger le véhicule. Ce champ peut contenir une valeur Null qui indique un temps de service égal à zéro.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

RemarqueRemarque :

Les périodes de service aux dépôts finaux et initiaux sont des valeurs fixes (fournies par les champs StartDepotServiceTime et EndDepotServiceTime) et ne prennent pas en considération la charge réelle d'un itinéraire. Par exemple, le temps de chargement d'un véhicule au dépôt initial peut dépendre de la taille des ordres. Par conséquent, les périodes de service au dépôt peuvent être dotées de valeurs correspondant à une cargaison pleine ou une cargaison moyenne, ou vous pouvez effectuer vos propres estimations de temps.

EarliestStartTime

Première heure de début admissible pour l'itinéraire. Ce champ est utilisé par le solveur conjointement avec la fenêtre horaire du dépôt initial pour déterminer des heures de départ d'itinéraire faisables.

Ce champ ne peut pas contenir de valeur Null et sa valeur horaire uniquement est par défaut 8h00. Cette valeur par défaut est interprétée comme étant 8h00 à la date indiquée par la propriété Date par défaut de la couche d'analyse.

Lorsque des jeux de données réseau sont utilisés avec des données de trafic sur plusieurs fuseaux horaires, le fuseau horaire de EarliestStartTime est le même que le fuseau horaire du tronçon ou de la jonction où se trouve le dépôt initial.

LatestStartTime

Dernière heure de début admissible pour l'itinéraire. Ce champ ne peut pas contenir de valeur Null et sa valeur horaire uniquement est par défaut 10h00. Cette valeur par défaut est interprétée comme étant 10h00 à la date indiquée par la propriété Date par défaut de la couche d'analyse.

Lorsque des jeux de données réseau sont utilisés avec des données de trafic sur plusieurs fuseaux horaires, le fuseau horaire de LatestStartTime est le même que le fuseau horaire du tronçon ou de la jonction où se trouve le dépôt initial.

ArriveDepartDelay

Ce champ enregistre le temps de trajet nécessaire pour accélérer le véhicule à des vitesses de déplacement normales, le décélérer à un arrêt et le retirer du réseau et l'y replacer (entrée et sortie d'un parking, par exemple). Si vous incluez une valeur ArriveDepartDelay, le solveur de tournées de véhicules est dissuadé d'envoyer de nombreux itinéraires pour desservir physiquement des ordres coïncidents.

Le coût de cette propriété est supporté entre des visites à des dépôts, des relais de tournée et des ordres non coïncidents. Par exemple, lorsqu'un itinéraire commence à un dépôt et visite le premier ordre, le retard d'arrivée/de départ total est ajouté au temps de trajet. Cela est également valable pour le déplacement du premier ordre au deuxième ordre. Si les deuxième et troisième ordres sont coïncidents, la valeur ArriveDepartDelay n'est pas ajoutée entre eux, car le véhicule n'a pas besoin de se déplacer. Si l'itinéraire mène à un relais de tournée, la valeur est de nouveau ajoutée au temps de trajet. Même si un véhicule doit ralentir et s'arrêter pendant une pause et accélérer par la suite, le solveur de tournées de véhicules ne peut pas ajouter la valeur ArriveDepartDelay aux pauses. Cela signifie que si un itinéraire quitte un ordre, effectue une pause et continue jusqu'à l'ordre suivant, le retard d'arrivée/de départ est ajouté une seule fois, et non deux.

Prenons l'exemple de cinq ordres coïncidents dans une tour très haute qui sont desservis par trois itinéraires différents. Trois retards d'arrivée/de départ sont alors concernés, car trois chauffeurs doivent trouver des places de parking et entrer dans le même bâtiment. Si toutefois les ordres pouvaient être desservis par un seul itinéraire au lieu de trois, un seul chauffeur aurait à se garer et à entrer dans le bâtiment (un seul retard d'arrivée/de départ serait concerné). Comme le solveur de tournées de véhicules essaie de réduire le coût, il tentera de limiter les retards d'arrivée/de départ et choisira donc l'option à un seul itinéraire. (Notez que plusieurs itinéraires peuvent être envoyés lorsque d'autres contraintes, comme des particularités, des fenêtres horaires ou des capacités, l'exigent.)

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Capacities

Quantité maximale (par exemple, volume, poids, quantité) pouvant être transportée par le véhicule. Si un véhicule peut transporter un maximum de 40 000 livres, le paramètre Nombre de capacités qui figure dans la boîte de dialogue Propriétés de la couche de la couche d'analyse doit être défini sur 1 et la valeur Capacities doit être définie sur 40000. De la même manière, si un véhicule peut transporter 1 000 pieds cubes, le paramètre Nombre de capacités doit être défini sur 1 et la valeur Capacities doit être définie sur 1000.

AttentionAttention :

Le solveur de tournées de véhicules effectue un test booléen simple pour déterminer si les capacités sont dépassées. Si la valeur de capacité d'un itinéraire est supérieure ou égale à la quantité totale transportée, le solveur de tournées de véhicules suppose que la cargaison tient dans le véhicule. Cela peut toutefois s'avérer inexact, en fonction de la forme réelle de la cargaison et du véhicule. Par exemple, le solveur de tournées de véhicules autorise une sphère de 30 mètres cube dans un camion de 30 mètres cube qui mesure 2,40 mètres de large. Mais en réalité, comme la sphère mesure 3,85 mètres de diamètre, elle ne peut pas passer dans ce camion de 2,40 mètres de large.

En présence de plusieurs capacités indiquées par le paramètre Nombre de capacités de la couche d'analyse, les valeurs Capacities sont séparées par un espace. Par exemple, lorsque le poids et le volume maximum du véhicule sont utilisés, le paramètre Nombre de capacités qui figure dans la boîte de dialogue Propriétés de la couche de la couche d'analyse doit être défini sur 2. Si le véhicule peut transporter un poids de 40 000 livres et un volume de 2 000 pieds cubes, la valeur Capacities doit être définie sur 40000 2000.

Une chaîne vide ou une valeur Null signifie que toutes les valeurs sont égales à zéro. Les valeurs de capacité ne peuvent pas être négatives.

Si la chaîne Capacities contient un nombre insuffisant de valeurs par rapport au nombre de capacités, les valeurs restantes sont traitées comme étant égales à zéro.

FixedCost

Coût monétaire fixe encouru seulement si l'itinéraire est utilisé dans une solution (autrement dit, si des ordres lui sont attribués). Ce champ peut contenir des valeurs Null, ce qui indique un coût fixe de zéro. Ce coût fait partie du coût de fonctionnement total de l'itinéraire.

CostPerUnitTime

Coût monétaire encouru (par unité de temps de travail) pour la durée totale de l'itinéraire, y compris les temps de trajet, ainsi que le temps de service et le temps d'attente aux ordres, aux dépôts et les pauses. Ce champ ne peut pas contenir de valeur Null et sa valeur par défaut est 1.0.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CostPerUnitDistance

Coût monétaire encouru (par unité de distance parcourue) pour la longueur de l'itinéraire (distance de trajet totale). Ce champ peut contenir des valeurs Null, ce qui indique un coût de zéro.

L'unité de distance est spécifiée par la propriété Unités du champ de distance de la couche d'analyse.

Le solveur renvoie une erreur lorsqu'une valeur est attribuée à ce champ et qu'aucune propriété Attribut de distance n'est spécifiée pour la couche d'analyse.

OvertimeStartTime

Durée du temps de travail standard, avant le calcul des heures supplémentaires. Ce champ peut contenir des valeurs Null, ce qui indique que les heures supplémentaires ne s'appliquent pas.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Par exemple, si le chauffeur doit percevoir des heures supplémentaires lorsque la durée totale de la tournée dépasse huit heures, la valeur OvertimeStartTime est alors 8 si la propriété Unités du champ temporel de la couche d'analyse est définie sur Heures.

CostPerUnitOvertime

Coût monétaire encouru par unité de temps d'heures supplémentaires. Ce champ peut contenir des valeurs Null, ce qui indique que la valeur de CostPerUnitOvertime est la même que celle de CostPerUnitTime.

MaxOrderCount

Nombre maximal d'ordres autorisé sur l'itinéraire. Ce champ ne peut pas contenir de valeur Null et sa valeur par défaut est 30.

MaxTotalTime

Durée d'itinéraire maximale autorisée. La durée de l'itinéraire englobe le temps de trajet ainsi que la durée de desserte et le temps d'attente aux ordres, aux dépôts et les pauses. Ce champ peut contenir des valeurs Null, ce qui indique qu'aucune contrainte n'est présente sur la durée de la tournée.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

MaxTotalTravelTime

Temps de trajet maximal admissible pour l'itinéraire. Le temps de trajet inclut uniquement le temps passé au volant sur le réseau, à l'exclusion de la durée de desserte ou du temps d'attente.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Ce champ peut contenir des valeurs Null. Une valeur Null indique l'absence de contrainte sur le temps de trajet maximal autorisé. La valeur de ce champ ne peut pas être supérieure à la valeur du champ MaxTotalTime.

MaxTotalDistance

Distance de trajet maximale admissible pour l'itinéraire.

L'unité de distance totale est spécifiée par la propriété Unités du champ de distance de la couche d'analyse.

Ce champ peut contenir des valeurs Null, ce qui indique qu'aucune contrainte n'est présente sur la distance de trajet maximale autorisée.

Le solveur renvoie une erreur lorsqu'une valeur est attribuée à ce champ et qu'aucune propriété Attribut de distance n'est spécifiée pour la couche d'analyse.

SpecialtyNames

Chaîne séparée par des espaces contenant les noms des particularités prises en charge par l'itinéraire. Une valeur Null indique que l'itinéraire ne prend pas en charge de particularités. Ce champ est une clé étrangère du champ Nom de la table Particularités. Les objets de particularité doivent exister pour pouvoir apparaître dans la liste SpecialtyNames.

AssignmentRule

Ce champ spécifie si l'itinéraire peut être utilisé ou non lors du calcul. Ce champ est contraint par un domaine de valeurs. Les valeurs possibles sont les suivantes :

  • Inclure - L'itinéraire est inclus dans l'analyse. Il s'agit de la valeur par défaut.
  • Exclure - L'itinéraire est exclu de l'analyse.

Champs en sortie des itinéraires

Champ en sortie

Description

Forme

Géométrie de ligne de l'itinéraire. Si la propriété Type de forme en sortie de la couche d'analyse est définie sur Aucun, aucune forme n'est renvoyée. Si la propriété Type de forme en sortie est définie sur Ligne droite, les lignes droites qui connectent chaque paire de visites consécutives sont renvoyées. Les propriétés Géométrie réelle avec mesures et Géométrie réelle renvoient toutes les deux des lignes qui tracent leurs itinéraires correspondants sur le réseau, la différence entre les deux étant que Géométrie réelle avec mesures renvoie une ligne qui est déjà référencée de manière linéaire par le temps.

ViolatedConstraints

Ce champ contient un résumé des contraintes de violation ; il est défini après un calcul. Si un itinéraire entraîne la violation d'une contrainte, une combinaison de plusieurs des violations répertoriées ci-dessous peut être attribuée au champ.

ApprofondissementApprofondissement :

La valeur précodée qui représente la description textuelle est affichée dans la liste ci-dessous entre parenthèses. Remarquez que les valeurs précodées font partie d'une séquence géométrique qui augmente en doublant la valeur précédente. Cela permet la codification de différentes combinaisons d'infractions. Par exemple, la combinaison de "La valeur de capacités est dépassée" (2) et "Zone de tournée stricte" (128) est codée sous la forme 130 (2+128).

  • Valeur MaxOrderCount excédée (1) - Les ordres prédéfinis ne peuvent pas être attribués à l'itinéraire, car cette attribution dépasserait le nombre maximal d'ordres pouvant être attribué à l'itinéraire indiqué par la valeur du champ MaxOrderCount de l'itinéraire.
  • La valeur de capacités est dépassée (2) - Les ordres prédéfinis ne peuvent pas être attribués à l'itinéraire, car cette attribution dépasserait la capacité totale de l'itinéraire indiquée par la valeur du champ Capacities de l'itinéraire.
  • Valeur MaxTotalTime excédée (4) – Le temps de trajet entre le dépôt initial et le dépôt final, plus la durée de desserte et le temps d'attente aux deux dépôts et les éventuelles pauses, dépassent la durée totale de l'itinéraire indiquée par la valeur du champ MaxTotalTime de l'itinéraire.
  • Valeur MaxTotalTravelTime excédée (8) - Le temps de trajet entre le dépôt initial et le dépôt final dépasse le temps de trajet total de l'itinéraire indiqué par la valeur du champ MaxTotalTravelTime de l'itinéraire.
  • Valeur MaxTotalDistance excédée (16) - La distance de trajet entre le dépôt initial et le dépôt final dépasse la distance de trajet totale de l'itinéraire indiquée par la valeur du champ MaxTotalDistance de l'itinéraire.
  • Fenêtre horaire stricte (32) – Infraction de fenêtre horaire stricte au dépôt initial, au dépôt final ou pendant les pauses associées à l'itinéraire.
  • Particularité sans correspondance (64) - Les particularités liées à un ordre sont introuvables sur l'itinéraire cible.
  • Zone de tournée stricte (128) – Un ordre qui a été prédéfini pour l'itinéraire ne coïncide pas avec une zone de tournée stricte.
  • Paire d'ordres ; valeur MaxTransitTime excédée (256) – En présence d'une paire d'ordres prédéfinie pour l'itinéraire, l'attribution des ordres de la paire d'ordres dépasserait le temps de transit maximal de la paire d'ordres indiqué par la valeur du champ MaxTransitTime de la paire d'ordres.
  • Violation de paire d'ordres (512) - Un ordre appartient à une paire d'ordres et ne peut pas être attribué à l'itinéraire prédéfini.
  • Inaccessible (1024) - Un ordre prédéfini se trouve sur un élément de réseau qui ne peut pas être atteint par l'itinéraire.
  • Impossible d'insérer l'interruption requise (2048) - Une interruption pour l'itinéraire a une valeur de séquence nulle en présence d'ordres prédéfinis et l'interruption ne peut pas être insérée n'importe où sans provoquer d'autres violations.
  • Impossible d'insérer le relais requis (4096) - Un itinéraire dépasse sa capacité et doit visiter un relais de tournée de véhicules. Le relais de tournée associé a une valeur de séquence nulle en présence d'ordres prédéfinis et ne peut pas être inséré n'importe où sans provoquer d'autres violations.
  • Nombre MaxTravelTimeBetweenBreaks dépassé (8192) - Le solveur n'a pas pu insérer de pause pendant le laps de temps spécifié par le champ MaxTravelTimeBetweenBreaks de la pause. Tel est souvent le cas lorsqu'une séquence est prédéfinie pour une pause et qu'elle reste inaccessible pendant le temps de trajet maximal.

  • Pause MaxCumulWorkTime dépassée (16384) - Le solveur n'a pas pu insérer de pause pendant le laps de temps spécifié par le champ MaxCumulWorkTime de la pause. Tel est souvent le cas lorsqu'une séquence est prédéfinie pour une pause et qu'elle reste inaccessible pendant le temps de travail maximal.

OrderCount

Nombre d'ordres attribués à l'itinéraire.

TotalCost

Coût de fonctionnement total de l'itinéraire, qui correspond à la somme des valeurs des champs suivants :

  • FixedCost
  • RegularTimeCost
  • OvertimeCost
  • DistanceCost

RegularTimeCost

Coût de la durée normale du travail, à l'exclusion des pauses non rémunérées.

OvertimeCost

Coût des heures supplémentaires, à l'exclusion des pauses non rémunérées.

DistanceCost

Composant de coût de distance obtenu en multipliant les valeurs des champs TotalDistance et CostPerUnitDistance. La valeur de ce champ est nulle si la propriété Attribut de distance n'est pas spécifiée pour la couche d'analyse.

TotalTime

Durée totale de l'itinéraire. Ce champ englobe le temps de trajet, ainsi que la durée de desserte et le temps d'attente aux ordres, aux dépôts et les pauses. La valeur TotalTime correspond à la somme des valeurs des champs suivants :

  • StartDepotServiceTime
  • EndDepotServiceTime
  • TotalOrderServiceTime
  • TotalBreakServiceTime
  • TotalRenewalServiceTime
  • TotalWaitTime
  • TotalTravelTime

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TotalOrderServiceTime

Durée totale de desserte passée à tous les ordres de l'itinéraire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TotalBreakServiceTime

Durée totale de desserte passée à toutes les pauses de l'itinéraire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TotalTravelTime

Temps de trajet total de l'itinéraire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TotalDistance

Distance totale de trajet de l'itinéraire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

StartTime

Heure de début de l'itinéraire. L'itinéraire peut commencer avant le début de la fenêtre horaire de son dépôt initial. Cela fait alors l'objet d'un temps d'attente au dépôt initial.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, le fuseau horaire correspondant à la valeur horaire est extrait de l'élément de réseau sur lequel se trouve le dépôt initial.

EndTime

Heure de fin de l'itinéraire. L'itinéraire prend fin une fois la desserte terminée au dépôt final.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, le fuseau horaire correspondant à la valeur horaire est extrait de l'élément de réseau sur lequel se trouve le dépôt final.

TotalWaitTime

Temps d'attente total à tous les ordres, dépôts et aux pauses sur l'itinéraire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TotalViolationTime

Temps de violation total à tous les ordres et pauses sur l'itinéraire.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

RenewalCount

Pour un itinéraire doté de relais, la valeur de ce champ est égale au nombre de passages aux dépôts de relais.

TotalRenewalServiceTime

Dans le cas d'un itinéraire comptant des relais, durée totale de desserte passée aux passages aux relais.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Couche d'entités Passages aux dépôts

Lorsqu'un itinéraire démarre, passe à un relais (pour décharger ou recharger) ou prend fin à un dépôt, un passage au dépôt est créé. Les objets de passage au dépôt donnent des informations sur les raisons pour lesquelles un itinéraire a visité un dépôt et les événements qui s'y sont produits. La quantité de marchandises chargée dans un véhicule ou déchargée d'un véhicule au dépôt est enregistrée dans les propriétés d'un passage au dépôt. D'autres informations, qui s'avèrent utiles pour interpréter une solution de tournée de véhicules, sont également incluses.

Il s'agit d'une classe d'analyse de réseau en sortie uniquement. Comme les entités de passage au dépôt sont uniquement créées pendant l'opération de calcul, la classe d'analyse est toujours vide avant le calcul.

Propriétés des passages aux dépôts

Champs en sortie des passages aux dépôts

Champ en sortie

Description

IdObjet

Champ d'ID géré par le système.

Forme

Champ de géométrie qui indique l'emplacement géographique de l'objet d'analyse de réseau.

DepotName

Nom du dépôt visité. Ce champ est une clé étrangère pour le champ Nom dans la classe d'analyse de réseau Dépôts.

Si l'itinéraire utilise un dépôt virtuel, ce qui signifie que l'itinéraire commence ou prend fin à un ordre et non à un dépôt, DepotName a la valeur Null.

RouteName

Nom de l'itinéraire contenant cette visite. Ce champ est une clé étrangère du champ Nom de la couche d'entités Itinéraires.

Séquence

Indique la séquence du dépôt visité sur l'itinéraire. Les valeurs de séquence en sortie d'un itinéraire sont partagées entre les passages aux dépôts, les ordres et les pauses. Elles démarrent à 1 (au dépôt initial) et sont consécutives.

VisitType

Raison du passage à ce dépôt. Ce champ est contraint par un domaine de valeurs :

  • Dépôt initial
  • Dépôt final
  • Dépôt de relais

ServiceTime

Durée de desserte (chargement ou déchargement, par exemple) au dépôt.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

FromPrevTravelTime

Temps de trajet entre la visite précédente sur l'itinéraire et le dépôt.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

FromPrevDistance

Distance de trajet entre la visite précédente sur l'itinéraire et le dépôt.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

CumulTravelTime

Temps de trajet cumulé de l'itinéraire jusqu'à l'arrivée à ce dépôt.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulDistance

Distance de trajet cumulé de l'itinéraire jusqu'à l'arrivée à ce dépôt.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

CumulTime

Durée cumulée de la tournée jusqu'au dépôt, celui-ci étant inclus. La durée cumulée englobe le temps de trajet, ainsi que la durée de la desserte et le temps d'attente aux ordres, aux dépôts et les pauses.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

ArriveTime

Heure d'arrivée au dépôt. L'itinéraire peut arriver au dépôt avant le commencement de la fenêtre horaire du dépôt. Cela fait alors l'objet d'un temps d'attente au dépôt.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, le fuseau horaire correspondant à la valeur horaire est le même que celui de l'élément de réseau sur lequel se trouve le dépôt.

DepartTime

Heure de départ du dépôt.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, le fuseau horaire correspondant à la valeur horaire est le même que celui de l'élément de réseau sur lequel se trouve le dépôt.

WaitTime

Durée d'attente au dépôt.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulWaitTime

Temps d'attente cumulé depuis le début de la tournée jusqu'au dépôt, celui-ci étant inclus.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulViolationTime

Infraction de temps cumulée depuis le début de la tournée jusqu'au dépôt, celui-ci étant inclus.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

TotalLoadedQuantities

Quantité (par exemple, volume, poids, quantité) chargée au dépôt. Si plusieurs capacités sont spécifiées par la propriété Nombre de capacités de la couche d'analyse, elles sont séparées par un espace. Par exemple, dans le cas de livraisons, la valeur du champ TotalLoadedQuantities indique la quantité réelle de marchandises livrée par le véhicule avant de retourner à un dépôt. Cette valeur est inférieure ou égale à la valeur du champ Capacities pour un itinéraire donné, ce qui indique que la tournée effectue la livraison d'une cargaison.

TotalUnloadedQuantities

Quantité (par exemple, volume, poids, quantité) déchargée au dépôt. Si plusieurs capacités sont spécifiées par la propriété Nombre de capacités de la couche d'analyse, elles sont séparées par un espace. Par exemple, dans le cas d'enlèvements ou de tournées avec relais, la valeur du champ TotalUnloadedQuantities indique la quantité réelle de marchandises enlevée par le véhicule et transportée au dépôt. Cette valeur est inférieure ou égale à la valeur du champ Capacities pour un itinéraire donné, ce qui indique que la tournée effectue l'enlèvement d'une cargaison.

RemarqueRemarque :

il n'y a aucun champ ViolationTime en sortie sur la couche d'entités Passages aux dépôts, puisque les dépôts ont des fenêtres horaire strictes.

Classe Interruptions

Il s'agit d'une classe d'analyse de réseau non spatiale qui enregistre les périodes de repos (ou pauses ou interruptions) des itinéraires dans une tournée de véhicules. Une pause est précisément associée à un itinéraire et elle peut être prise une fois un ordre terminé, en cours de route vers un ordre ou avant de desservir un ordre. Elle possède une heure de début et une durée, pendant laquelle le chauffeur peut être rémunéré ou pas. Vous disposez de trois options pour définir le début d'une pause : en entrant une fenêtre horaire, un temps de trajet maximal ou un temps de travail maximal.

  • Pause en fonction d'une fenêtre horaire - Pour définir une pause en fonction d'une fenêtre horaire, vous devez entrer deux valeurs horaires pour délimiter une plage de temps au cours de laquelle la pause doit commencer. Les champs TimeWindowStart et TimeWindowEnd contiennent les valeurs horaires limites. La durée, ou durée de desserte, de la pause ne dépend pas de la fenêtre horaire et, par conséquent, peut se prolonger au-delà de la fin de la fenêtre horaire. Par exemple, si la fenêtre horaire d'une pause d'une durée d'une heure s'étend de 10h00 à 10h15, la pause doit commencer après 10h00, mais avant 10h15. Si la pause commence à 10h10, elle se terminera à 11h10.

  • Pause en fonction d'un temps de trajet maximal - Ce type de pause vous permet de spécifier le temps de conduite d'une personne avant une pause. (Notez que seul le temps de trajet est limité, et non les autres durées comme la durée de desserte ou le temps d'attente.) Si vous définissez la propriété MaxTravelTimeBetweenBreaks de la première pause sur quatre heures, par exemple, le chauffeur pourra prendre une pause avant que le temps de trajet cumulé depuis le début de l'itinéraire ne dépasse quatre heures. Pour les pauses suivantes, le temps de trajet est cumulé à partir de la précédente pause. Si vous définissez la propriété MaxTravelTimeBetweenBreaks d'une deuxième pause sur deux heures, cette deuxième pause devra être prise avant que deux heures de temps de trajet ne soient cumulés à partir de la pause précédente (et non du dépôt initial).

    Une pause en fonction du temps de trajet maximal d'un itinéraire limite non seulement le temps de trajet cumulé à partir de la pause précédente ou du début de l'itinéraire, mais elle limite aussi le temps de trajet à partir de la dernière pause jusqu'au dépôt final. Ceci est également valable en présence d'une seule pause. Le solveur de tournées de véhicules est conçu de manière à éviter qu'un itinéraire ne prenne toutes ses pauses, en conduisant donc pendant une période prolongée sans prendre une autre pause. Dans le dernier exemple, MaxTravelTimeBetweenBreaks a été défini sur deux heures. S'il s'agit de la dernière pause de l'itinéraire, l'itinéraire doit pouvoir rejoindre le dépôt final dans les deux heures de temps de trajet qui suivent la dernière pause ; sinon, le solveur renverra une erreur.

  • Pause en fonction d'un temps de travail maximal - Cette pause spécifie le temps de travail d'une personne avant une pause. A la différence des pauses en fonction d'un temps de trajet maximal, qui peuvent cumuler le temps de trajet à partir de la fin de la dernière pause, les pauses en fonction d'un temps de travail maximal cumulent toujours le temps de travail depuis le début de l'itinéraire, y compris la durée de desserte au dépôt initial.

    Notez que cette pause limite le temps de travail cumulé, qui comprend le temps de trajet et toutes les durées de desserte. Le temps d'attente en est toutefois exclu.

Une couche d'optimisation des tournées de véhicules ne peut être résolue que si toutes les pauses sont du même type. Autrement dit, le calcul échoue en présence de différents types de pauses (en fonction d'une fenêtre horaire, d'un temps de trajet maximal et d'un temps de travail maximal).

Vous pouvez spécifier jusqu'à cinq pauses pour un seul itinéraire. Par exemple, partons du principe que vous utilisez des pauses en fonction d'un temps de trajet maximal pour une analyse. Vous pouvez affecter deux pauses à un itinéraire de sorte que le chauffeur puisse se reposer pendant 15 minutes après deux heures de temps de trajet cumulées et s'arrêter ensuite pour déjeuner pendant une heure après deux autres heures de trajet. Vous pourriez avoir d'autres itinéraires auxquels des pauses ont été affectées (de zéro à cinq).

Les pauses possèdent un champ Precedence qui permet de les classer dans une séquence. Si vous souhaitez ainsi qu'une interruption de 15 minutes survienne avant une interruption d'une heure, la valeur de précédence de l'interruption de 15 minutes doit être 1 et la valeur de précédence de l'autre interruption doit être 2. Le champ Précédence est obligatoire pour toutes les interruptions, même si les interruptions en fonction d'un temps de travail maximal et d'une fenêtre horaire possèdent intrinsèquement un ordre chronologique.

Si un itinéraire atteint la dernière destination avant que toutes les pauses en fonction du temps de trajet maximal ou du temps de travail maximal aient été prises, les pauses restantes sont ignorées. S'il reste des pauses en fonction d'une fenêtre horaire à la fin d'un itinéraire, l'itinéraire attendra que toutes les pauses aient été prises avant de terminer au lieu de terminer plus tôt.

Propriétés des pauses

Champs en entrée des pauses

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

TimeWindowStart

Heure de début de la fenêtre horaire de la pause.

Si la valeur de ce champ est nulle et qu'une valeur horaire valide est affectée à TimeWindowEnd, la pause peut démarrer à tout moment avant la valeur TimeWindowEnd.

Si ce champ possède une valeur, la valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit être nulle. La valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit également être nulle pour toutes les autres pauses de la couche d'analyse.

Une erreur est renvoyée au moment du calcul si leurs fenêtres horaires d'un itinéraire qui possède plusieurs pauses se chevauchent.

Les champs de fenêtres horaires des pauses peuvent contenir soit une valeur d'heure seulement, soit une valeur de date et d'heure. Si un champ horaire, comme TimeWindowStart, possède une valeur horaire seulement (12h00, par exemple), la date est censée être celle indiquée par la propriété Date par défaut de la couche d'analyse. L'utilisation de valeurs de date et d'heure (le 11/07/2010 à 24h00, par exemple) vous permet de spécifier des fenêtres horaires qui couvrent au moins deux jours. Cela s'avère particulièrement utile lorsqu'une pause doit être prise avant et après minuit.

Lorsque vous utilisez des jeux de données réseau avec des données de trafic sur plusieurs fuseaux horaires, le fuseau horaire de TimeWindowStart et de TimeWindowEnd est censé être le même que le fuseau horaire du tronçon ou de la jonction où se trouve le dépôt initial.

TimeWindowEnd

Heure de fin de la fenêtre horaire de la pause.

Si la valeur de ce champ est nulle et qu'une valeur horaire valide est affectée à TimeWindowStart, la pause peut démarrer à tout moment après la valeur TimeWindowStart.

Si ce champ possède une valeur, la valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit être nulle. La valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit également être nulle pour toutes les autres pauses de la couche d'analyse.

Reportez-vous à la description de TimeWindowStart (ci-dessus) pour obtenir plus d'informations.

MaxTravelTimeBetweenBreaks

Temps de trajet maximal pouvant être cumulé avant que la pause ne soit prise. Le temps de trajet est cumulé à partir de la fin de la pause précédente ou, si aucune pause n'a encore été prise, à partir du début de l'itinéraire.

S'il s'agit de la dernière pause de l'itinéraire, MaxTravelTimeBetweenBreaks indique également le temps de trajet maximal pouvant être cumulé de la dernière pause jusqu'au dépôt final.

Cette propriété est conçue pour limiter le temps de conduite d'une personne avant une pause. Par exemple, si la propriété Unités du champ temporel de la couche d'analyse est définie sur Minutes et que MaxTravelTimeBetweenBreaks a pour valeur 120, le chauffeur pourra prendre une pause après deux heures de conduite. Pour affecter une deuxième pause au bout de deux autres heures de conduite, la propriété MaxTravelTimeBetweenBreaks de cette deuxième pause doit avoir pour valeur 120.

Si ce champ possède une valeur, la valeur de TimeWindowStart, TimeWindowEnd, MaxViolationTime et MaxCumulWorkTime doit être nulle pour pouvoir calculer correctement une analyse.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

MaxCumulWorkTime

Temps de travail maximal pouvant être cumulé avant que la pause ne soit prise. Le temps de travail est toujours cumulé à partir du début de l'itinéraire.

Le temps de travail correspond à la somme du temps de trajet et de la durée de desserte aux ordres, dépôts et pendant les pauses. Notez toutefois que le temps d'attente en est exclu, à savoir le temps passé par un itinéraire (ou un chauffeur) à attendre qu'une fenêtre horaire ne commence à un ordre ou à un dépôt.

Cette propriété est conçue pour limiter le temps de travail d'une personne avant une pause. Par exemple, si la propriété Unités du champ temporel de la couche d'analyse est définie sur Minutes et que MaxCumulWorkTime a pour valeur 120 et que ServiceTime a pour valeur 15, le chauffeur pourra prendre une pause de 15 minutes au bout de deux heures de travail.

Reprenons le dernier exemple et partons du principe qu'une deuxième pause s'avère nécessaire au bout de trois autres heures de travail. Pour spécifier cette pause, vous affecteriez la valeur 315 (cinq heures et 15 minutes) à la propriété MaxCumulWorkTime de la deuxième pause. Ce nombre comprend les valeurs de MaxCumulWorkTime et ServiceTime de la pause précédente, ainsi que les trois heures de temps de travail supplémentaires avant d'accorder la deuxième pause. Pour éviter de prendre prématurément des pauses en fonction d'un temps de travail maximal, n'oubliez pas qu'elles cumulent le temps de travail à partir du début de l'itinéraire et que ce temps de travail comprend le temps de service aux précédents dépôts et ordres et pendant les précédentes pauses.

Si ce champ possède une valeur, la valeur de TimeWindowStart, TimeWindowEnd, MaxViolationTime et MaxTravelTimeBetweenBreaks doit être nulle pour pouvoir calculer correctement une analyse.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

RouteName

Nom de l'itinéraire auquel la pause s'applique. Même si une pause est précisément affectée à un itinéraire, de nombreuses pauses peuvent être affectées à un même itinéraire.

Ce champ, qui est une clé étrangère du champ Nom de la classe Itinéraires, ne peut pas contenir de valeur nulle.

Les objets d'itinéraire doivent exister pour pouvoir apparaître dans la liste déroulante RouteName.

Precedence

Les valeurs de Precedence permettent de classer les pauses d'un itinéraire donné. Les pauses dont la valeur de précédence est définie sur 1 surviennent avant celles dont la valeur est définie sur 2, etc.

Toutes les pauses doivent avoir une valeur de précédence, que ce soient des pauses en fonction d'une fenêtre horaire, d'un temps de trajet maximal ou d'un temps de travail maximal.

ServiceTime

Durée de la pause. Ce champ peut contenir des valeurs nulles. Une valeur nulle indique l'absence de durée de desserte.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

MaxViolationTime

Ce champ indique la durée de violation maximale autorisée pour une pause en fonction d'une fenêtre horaire. Une fenêtre horaire fait l'objet d'une violation lorsque l'heure d'arrivée ne coïncide pas avec la plage horaire.

Une valeur nulle indique qu'une fenêtre horaire ne peut pas faire l'objet d'une violation. Autrement dit, la fenêtre horaire est stricte. Une valeur différente de zéro indique le retard maximal autorisé ; par exemple, la pause peut commencer jusqu'à 30 minutes après la fin de sa fenêtre horaire, mais le retard est pénalisé conformément à la propriété Violations des fenêtres horaires de la couche d'analyse.

La valeur de cette propriété peut être nulle ; une valeur nulle avec TimeWindowStart et TimeWindowEnd indique que la durée de violation autorisée n'est pas limitée. Si MaxTravelTimeBetweenBreaks ou MaxCumulWorkTime possède une valeur, la valeur de MaxViolationTime doit alors être nulle.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

IsPaid

Valeur booléenne indiquant si la pause est payée ou non. Une valeur True indique que le temps passé en pause est inclus dans le calcul de coût d'itinéraire et dans la détermination des heures supplémentaires. Une valeur False indique le contraire. La valeur par défaut est True.

Champs en entrée/sortie des pauses

Champ en entrée/sortie

Description

Séquence

En tant que champ en entrée, il indique la séquence de la pause sur son itinéraire. Ce champ peut contenir des valeurs nulles. Les valeurs de séquence en entrée sont positives et uniques pour chaque itinéraire (partagées par les passages aux dépôts de relais, les ordres et les pauses), mais elles n'ont pas besoin de commencer à 1 ni d'être contiguës.

Le solveur modifie le champ de séquence. Une fois le calcul terminé, ce champ contient la valeur de séquence de la pause sur son itinéraire. Les valeurs de séquence en sortie pour un itinéraire sont partagées entre les passages aux dépôts, les ordres et les pauses. Elles démarrent à 1 (au dépôt initial) et sont consécutives.

Champs en entrée des pauses

Champ en sortie

Description

RelativePosition

Position relative de la pause. Les pauses sont prises quelque part entre deux localisations de réseau (ordres ou dépôts). Une valeur de 0,0 indique que la pause est prise juste après la fin de la desserte à la localisation de réseau précédente. Une valeur de 1,0 indique que la pause est prise juste avant de commencer la desserte à la localisation de réseau suivante. Une valeur entre les deux indique l'endroit le long de l'itinéraire où la pause est prise entre la première et la deuxième localisation de réseau. Par exemple, 0,25 indique que la pause est prise au quart du trajet qui mène de la localisation de réseau précédente à la localisation de réseau suivante.

Quel que soit le nombre de pauses entre deux localisations de réseau, la position relative est toujours indiquée par rapport aux localisations de réseau, et non aux autres pauses.

FromPrevTravelTime

Temps de trajet à partir de l'ordre, du dépôt ou de la pause qui précède jusqu'à cette pause.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

FromPrevDistance

Distance de trajet à partir de l'ordre, du dépôt ou de la pause qui précède jusqu'à cette pause.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

CumulTravelTime

Temps de trajet cumulé de l'itinéraire jusqu'à l'arrivée à la pause.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulDistance

Distance de trajet cumulé de l'itinéraire jusqu'à l'arrivée à la pause.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ de distance de la couche d'analyse. Ce champ est nul si la propriété Attribut de distance n'est pas spécifiée dans les paramètres d'analyse.

CumulTime

Durée cumulée de la tournée jusqu'à la pause, celle-ci étant incluse. La durée cumulée englobe le temps de trajet, ainsi que la durée de desserte et le temps d'attente aux ordres, aux dépôts et les pauses.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

ArriveTime

Temps d'arrivée réel de la pause. La tournée peut arriver à la pause avant le commencement de sa fenêtre horaire, auquel cas il y a un temps d'attente à la pause. Dans le cas d'une pause dotée de fenêtres horaire souples, la tournée peut aussi arriver à la pause après la fin de la fenêtre horaire, auquel cas il y a une violation de temps à la pause.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, l'heure est indiquée dans le fuseau du dépôt initial de l'itinéraire qui y est associé.

DepartTime

Heure à laquelle la pause se termine.

Lors de l'utilisation de données de trafic couvrant plusieurs fuseaux horaires, l'heure est indiquée dans le fuseau du dépôt initial de l'itinéraire qui y est associé.

WaitTime

Durée d'attente à la pause.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

ViolationTime

Temps de violation à la pause.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulWaitTime

Temps d'attente cumulé depuis le début de la tournée jusqu'à la pause, celle-ci étant incluse.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

CumulViolationTime

Infraction de temps cumulée depuis le début de la tournée jusqu'à la pause, celle-ci étant incluse.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Classe Zones de tournées

Les zones de tournées spécifient un territoire de travail pour un itinéraire donné. Une zone de tournée est une entité surfacique qui permet de limiter des itinéraires de manière à ne desservir que les ordres qui se trouvent dans une zone ou à proximité. Voici quelques exemples de cas dans lesquels les zones de tournées peuvent être utiles :

  • Certains de vos employés n'ont pas les permis nécessaires pour travailler dans certaines régions ou communautés. Vous pouvez créer une zone de tournée stricte pour qu'ils ne visitent des ordres que dans des zones où ils remplissent les conditions requises.
  • L'un de vos véhicules tombe souvent en panne et vous souhaitez réduire le temps de réponse en faisant en sorte qu'il ne visite que les ordres proches de votre garage. Vous pouvez créer une zone de tournée souple ou stricte pour faire en sorte que le véhicule reste proche.

Si vous utilisez des zones de tournée dans votre analyse, vous ne pouvez pas utiliser aussi des points d'origine de tournée.

Propriétés des zones de tournées

Champs en entrée des zones de tournées

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

Forme

Champ de géométrie qui indique l'emplacement géographique de l'objet d'analyse de réseau.

RouteName

Nom de l'itinéraire auquel cette zone s'applique. Une zone de tournée peut avoir un itinéraire associé au maximum. Ce champ ne peut pas contenir de valeur nulle. Il s'agit d'une clé étrangère pour le champ Nom de la classe d'entités Itinéraires.

Les objets d'itinéraire doivent exister pour pouvoir apparaître dans la liste RouteName.

IsHardZone

Valeur booléenne indiquant une zone de tournée stricte ou souple. Une valeur True indique que la zone de tournée est stricte, c'est-à-dire qu'un ordre se trouvant en dehors du polygone de zone de tournée ne peut pas être attribué à l'itinéraire. La valeur par défaut est True (1). Une valeur False (0) indique que ces ordres peuvent encore être attribués, mais que leur coût de desserte est pondéré par une fonction basée sur la distance euclidienne depuis la zone de tournée. Cela signifie qu'à mesure que la distance en ligne droite entre la zone souple et l'ordre augmente, la probabilité que l'ordre soit attribué à l'itinéraire décroît.

RemarqueRemarque :

  • la distance euclidienne étant utilisée pour mesurer la distance entre la zone de tournée et les ordres, l'attribut de distance basé sur le réseau n'est pas requis.
  • Même si un itinéraire associé à une zone de tournée stricte ne peut desservir que les ordres au sein de la zone de tournée, d'autres itinéraires peuvent s'ajouter et desservir les ordres au sein de cette même zone. Cela s'explique par le fait que les zones de tournées restreignent l'itinéraire, pas les ordres. (Pour attribuer tous les ordres d'une zone exclusivement à un itinéraire, n'utilisez pas de zones de tournées mais sélectionnez les ordres qui figurent dans une zone, modifiez le champ RouteName de ces ordres en itinéraire de votre choix, puis affectez la valeur Conserver la tournée au champ AssignmentRule.)

Classe Points d'origine de tournée

Cette classe d'analyse de réseau enregistre les points d'origine de tournée qui font partie d'une couche d'optimisation des tournées de véhicules donnée. Les points d'origine de tournée permettent de spécifier l'agrégation basée sur des points pour les itinéraires. En règle générale, plus un ordre est proche du point d'origine d'une tournée, plus il est susceptible d'être attribué à cette tournée, dans la mesure où d'autres critères sont respectés (comme les particularités et les capacités). L'agrégation d'ordres peut faire en sorte que des tournées couvrent une zone plus réduite et ne croisent pas beaucoup d'autres itinéraires, mais le coût total de la solution risque d'être plus élevé. Vous pouvez utiliser des points d'origine de tournée pour faire en sorte que les chauffeurs restent dans des quartiers ou régions qu'ils connaissent bien ou vous pouvez compartimenter les tournées si cela facilite la gestion par votre organisation.

Voici quelques règles et options à prendre en compte lors de l'utilisation de points d'origine de tournée :

  • Un itinéraire peut avoir un point d'origine de tournée prédéfini ou calculé par le solveur de tournées de véhicules.
  • Si vous utilisez des points d'origine de tournée dans votre analyse, vous ne pouvez pas utiliser de zones de tournées.
  • Si vous faites appel à des points d'origine de tournée, un point d'origine de tournée doit être attribué à chaque itinéraire.
  • Les types de points d'origine de tournée ne peuvent pas être combinés. La classe d'analyse de réseau doit contenir exclusivement des points d'origine dynamiques ou des points d'origine statiques.

Les points d'origine de tournée sont des entités points ; il ne s'agit toutefois pas de localisations de réseau. Ils ne possèdent par conséquent pas de champs de localisation de réseau.

Classe Points d'origine de tournée

Champs en entrée des points d'origine de tournée

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

RouteName

Nom de l'itinéraire auquel ce point d'origine s'applique. Il y a au maximum un point d'origine de tournée par itinéraire. Ce champ ne peut pas contenir de valeur nulle. C'est une clé étrangère du champ Nom de la classe Itinéraires. Les objets d'itinéraire doivent exister pour pouvoir apparaître dans la liste RouteName.

SeedPointType

Type de point d'origine. Ce champ est limité par un domaine de valeurs. Les valeurs possibles sont Statique et Dynamique. La valeur par défaut de ce champ est Statique.

Dans le cas de points d'origine statiques, vous pouvez spécifier l'emplacement du point d'origine de la tournée et le solveur tente de grouper l'itinéraire autour de ce point d'origine. Dans le cas de points d'origine dynamiques, vous pouvez ajouter le point d'origine à l'emplacement de votre choix sur la carte. Les ordres sont regroupés pendant le calcul, puis le point d'origine est replacé au niveau du centroïde des ordres de l'itinéraire.

Champs d'entrée/sortie des points d'origine de tournée

Champ en entrée/sortie

Description

Forme

En tant que champ en entrée, il indique la localisation d'un point d'origine de tournée. Dans le cas d'un point d'origine statique, sa forme de pointe en entrée est intouchée tout au long du calcul.

En revanche, la forme en entrée est ignorée dans le cas d'un point d'origine dynamique et le solveur modifie le champ Forme pendant le calcul de manière à afficher son nouvel emplacement.

RemarqueRemarque :

la distance euclidienne permet de mesurer la distance entre les points d'origine de tournée et les ordres. L'Attribut de distance basé sur le réseau qui figure dans les propriétés de la couche n'est par conséquent pas obligatoire.

Classe Relais de tournée

La classe Relais de tournée indique les dépôts intermédiaires que les itinéraires d'une optimisation des tournées de véhicules peuvent visiter pour recharger et décharger des marchandises qu'ils livrent ou collectent.

Un objet d'analyse de relais de tournée relie spécifiquement un objet d'itinéraire à un objet de dépôt. La relation indique que l'itinéraire peut passer à un relais (pour recharger ou décharger) au dépôt qui y est associé.

Dans certaines industries, chaque itinéraire consiste en un ou plusieurs trajets au cours desquels le véhicule livre ou collecte une cargaison complète. Les relais de tournée peuvent permettre de modéliser des scénarios dans lesquels un véhicule enlève une cargaison complète de livraisons au dépôt initial, dessert les ordres, retourne au dépôt pour renouveler sa charge de livraisons et continue à desservir d'autres ordres. Par exemple, dans le cas d'une livraison de gaz propane, le véhicule peut effectuer plusieurs livraisons jusqu'à ce que sa cuve soit presque vide, visiter un point de ravitaillement, puis poursuivre ses livraisons.

Voici quelques règles et options à prendre en compte lors de l'utilisation de points d'origine de tournée :

  • Le point de rechargement/déchargement, ou la localisation de relais, peut être différent du dépôt initial ou final.
  • Chaque itinéraire peut avoir une ou plusieurs localisations de relais.
  • Une localisation de relais peut être utilisée plusieurs fois par un même itinéraire.
  • Lorsque plusieurs dépôts de relais sont disponibles pour un itinéraire, le plus proche est sélectionné par le solveur.

Propriétés des relais de tournée

Champs en entrée des relais de tournée

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

DepotName

Nom du dépôt où ce relais a lieu. Ce champ ne peut pas contenir de valeur nulle. C'est une clé étrangère du champ Nom de la classe d'entités Dépôts.

Les objets de dépôts doivent exister pour pouvoir apparaître dans la liste DepotName.

RouteName

Nom de l'itinéraire auquel ce relais s'applique. Ce champ ne peut pas contenir de valeur nulle. C'est une clé étrangère du champ Nom de la classe d'entités Itinéraires.

Les objets d'itinéraire doivent exister pour pouvoir apparaître dans la liste RouteName.

ServiceTime

Durée de desserte du relais. Ce champ peut contenir une valeur Null qui indique un temps de service égal à zéro.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

RemarqueRemarque :

La durée de chargement d'un véhicule à un dépôt de relais peut dépendre de la taille du véhicule et de son degré de chargement. La durée de desserte d'un relais de tournée est toutefois une valeur fixe et elle ne prend pas en considération la charge réelle. Il est possible d'attribuer à une durée de desserte relais une valeur correspondant à une cargaison complète, une cargaison moyenne ou une autre estimation en temps de votre choix.

Champs en entrée/sortie des relais de tournée

Champ en entrée/sortie

Description

Sequences

En tant que champ en entrée, spécifie une chaîne séparée par des espaces de valeurs de séquences de passages au dépôt de relais. Ce champ peut contenir une valeur nulle. Il permet de prédéfinir des passages au dépôt de relais.

En tant que champ en sortie, le solveur peut modifier et stocker la séquence ici. Une fois le calcul terminé, ce champ contient les valeurs de séquence des passages à ce dépôt de relais pour l'itinéraire concerné. Si plusieurs visites de relais se produisent à ce dépôt sur un même itinéraire, les valeurs de séquence sont séparées par un espace. Les valeurs de séquence en sortie pour un itinéraire sont partagées par les passages aux dépôts, les ordres et les pauses. Elles démarrent à 1 (au dépôt initial) et sont consécutives. Si un itinéraire commence à un dépôt, visite deux ordres, fait un passage à des relais et continue, la valeur de séquence au relais est alors 4.

Classe Particularités

Cette table répertorie les particularités pouvant être requises par les ordres et prises en charge par les itinéraires. Un itinéraire peut desservir un ordre uniquement s'il prend en charge toutes les particularités requises pour cet ordre.

Un ordre peut nécessiter un technicien possédant certaines compétences ou un véhicule doté de certaines fonctions. Vous pouvez modéliser ces compétences, fonctions, etc., en commençant par les ajouter à la classe Particularités. Vous pouvez ensuite ajouter les particularités qui sont prises en charge par un itinéraire à sa propriété SpecialtyNames. Et enfin, vous pouvez ajouter les particularités requises par un ordre à sa propriété SpecialtyNames. Une fois l'optimisation des tournées de véhicules résolue, les ordres qui requièrent certaines particularités sont mises en correspondances avec les itinéraires qui peuvent les fournir.

Propriétés des particularités

Champs en entrée des particularités

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

Nom

Nom de l'objet d'analyse de réseau.

Ce champ est la clé primaire. Il est utilisé en tant que clé étrangère dans les couches d'entités Ordres et Itinéraires pour faire référence aux particularités.

Le nom des particularités doit être unique et ne peut pas être vide. Ils ne peuvent pas non plus contenir d'espaces. Par exemple, une particularité de technicien confirmé doit être entrée sous la forme TechnicienConfirmé.

L'absence d'espace est impérative, car les ordres et les itinéraires qui sont associés à plusieurs particularités listent le nom des particularités en les séparant par des espaces (TechnicienConfirmé grutier, par exemple).

Description

Informations décrivant l'objet d'analyse de réseau. Ce champ peut contenir toute information textuelle, sans restriction en matière d'unicité.

Classe Paires d'ordres

Cette classe d'analyse de réseau est une table d'enregistrements qui permet de mettre en correspondance les ordres de livraison et de collecte de sorte qu'ils soient desservis par le même itinéraire.

Il est quelquefois nécessaire que l'enlèvement et la livraison soient appariés pour les ordres. Par exemple, pour une société de coursiers, une livraison d'un document peut impliquer deux arrêts : un premier pour collecter le document à la source et un second pour le remettre à destination. Ces arrêts associés sont attribués au même itinéraire avec la séquence adéquate. Il est interdit d'attribuer un seul des ordres à un itinéraire : les deux ordres doivent être attribués au même itinéraire ou aucun ordre ne doit être attribué.

Il peut y avoir des restrictions sur le laps de temps que le paquet peut rester dans le véhicule. Par exemple, un prélèvement sanguin doit être transporté du cabinet médical au laboratoire d'analyses en moins de deux heures.

Certaines situations peuvent nécessiter deux paires d'ordres. Par exemple, partons du principe que vous souhaitez transporter une personne âgée de son domicile au cabinet de son médecin, puis la ramener chez elle. Le trajet de son domicile au cabinet correspond à une paire d'ordres dotée d'une heure d'arrivée souhaitée chez le médecin. Le trajet de retour, quant à lui, correspond à une seconde paire dotée d'une heure de collecte souhaitée.

Propriétés des paires d'ordres

Champs en entrée des paires d'ordres

Champ en entrée

Description

IdObjet

Champ d'ID géré par le système.

FirstOrderName

Nom du premier ordre de la paire. Ce champ est une clé étrangère du champ Nom de la couche d'entités Ordres.

Les objets d'ordres doivent exister pour pouvoir apparaître dans la liste FirstOrderName.

SecondOrderName

Nom du second ordre de la paire. Ce champ est une clé étrangère du champ Nom de la couche d'entités Ordres.

Les objets d'ordres doivent exister pour pouvoir apparaître dans la liste SecondOrderName.

Le premier ordre de la paire doit être un ordre d'enlèvement, à savoir que la valeur de son champ DeliveryQuantities est nulle. Le second ordre de la paire doit être un ordre de livraison, à savoir que la valeur de son champ PickUpQuantities est nulle. La quantité enlevée au premier ordre doit correspondre à la quantité livrée au second ordre. Dans les cas où aucune capacité n'est utilisée, les deux ordres peuvent avoir des quantités égales à zéro.

RemarqueRemarque :

Les quantités des ordres ne sont pas chargées ou déchargées à des dépôts.

MaxTransitTime

Temps de transit maximal pour la paire. Le temps de transit correspond au laps de temps s'écoulant entre l'heure de départ du premier ordre et l'heure d'arrivée au second. Cette contrainte limite le temps passé dans le véhicule, ou temps de trajet, entre les deux ordres. Lorsqu'un véhicule transporte des personnes ou des denrées périssables, le temps de trajet est généralement plus court que celui d'un véhicule transportant des paquets ou des denrées non périssables. Ce champ peut contenir des valeurs nulles, ce qui indique qu'aucune contrainte n'est présente sur le temps de trajet.

L'unité de cette valeur de champ est spécifiée par la propriété Unités du champ horaire de la couche d'analyse.

Le temps de transit excessif (mesuré en fonction du temps de trajet direct entre des paires d'ordres) peut être suivi et pondéré par le solveur. Vous pouvez par conséquent orienter le solveur de tournées de véhicules vers une des trois solutions suivantes : (1) réduire le temps de transit excessif global, quelle que soit l'augmentation du coût de trajet de la flotte ; 2) trouver une solution équilibrée entre la durée totale de la violation et le coût de trajet ; 3) ignorer le temps de transit excessif global et réduire à la place le coût de trajet de la flotte. En attribuant un niveau d'importance au paramètre Temps de transit excessif de la couche d'analyse, vous choisissez en fait l'une de ces trois solutions. Quel que soit le niveau d'importance, le solveur renvoie toujours une erreur en cas de dépassement de la valeur MaxTransitTime.

Interruptions ponctuelles, linéaires et polygonales

Les barrières servent à restreindre temporairement, ajouter une impédance, et proportionner l'impédance de parties du réseau. Lorsqu'une nouvelle couche d'analyse de réseau est créée, les classes de barrières sont vides. Elles sont remplies uniquement lorsque vous leur ajoutez des objets, mais l'ajout de barrières n'est pas requis.

Les barrières sont disponibles dans toutes les couches d'analyse de réseau ; par conséquent, elles sont décrites dans une rubrique distincte.

Pour en savoir plus sur les interruptions

Paramètres d'optimisation des tournées de véhicules

Les paramètres d'analyse sont définis dans la boîte de dialogue Propriétés de la couche de la couche d'analyse. La boîte de dialogue est accessible de différentes manières :

En savoir plus sur l'ouverture de la boîte de dialogue Propriétés de la couche d'analyse de réseau

Onglet Paramètres d'analyse

Les sous-sections suivantes répertorient les paramètres que vous pouvez définir sur la couche d'analyse. Ils figurent dans l'onglet Paramètres d'analyse de la boîte de dialogue Propriétés de la couche de la couche d'analyse.

Onglet Paramètres d'analyse
Paramètres d'analyse pour une couche d'optimisation des tournées de véhicules

Attribut de temps

Attribut de coût de temps utilisé pour définir le temps de traversée le long des éléments du réseau. L'attribut de coût de temps est obligatoire, car le solveur de tournées de véhicules réduit le temps.

Pour en savoir plus sur les attributs de coût

Attribut de distance

Attribut de coût de distance utilisé pour définir la longueur le long des éléments du réseau. Cet attribut est facultatif.

Pour en savoir plus sur les attributs de coût

Date par défaut

Date implicite pour les valeurs de champs de temps dont la date n'est pas spécifiée avec l'heure. Si le champ d'heure d'un ordre (TimeWindowStart1, par exemple) possède une valeur d'heure uniquement, la date est censée être celle indiquée par la propriété Date par défaut. Par exemple, si TimeWindowStart1 a pour valeur 9h00 et que Date par défaut a pour valeur le 06 mars 2011 pour un ordre, la valeur de temps complète de ce champ est alors 9h00 le 06 mars 2011. En cas de modification du paramètre Date par défaut, la date implicite de toutes les valeurs de champs de temps dont la date n'est pas spécifiée devient la nouvelle date par défaut. La date par défaut n'a aucune incidence sur les valeurs de champs horaires déjà dotées d'une heure et d'une date particulières.

Si votre jeu de données réseau inclut des données de circulation, les résultats de l'analyse peuvent varier en fonction de la date que vous spécifiez ici. Par exemple, si l'on compare une tournée qui commence à 8h00 le dimanche, lorsqu'il n'y a pas beaucoup de circulation, à une tournée commençant à 8h00 le lundi, aux heures de pointe, la tournée du lundi prendra plus de temps. De plus, le meilleur trajet peut varier en fonction des conditions de circulation.

Vous pouvez choisir de sélectionner un jour « flottant » ou une date de calendrier. Une date de calendrier a un jour du mois, un mois et une année spécifiques. Un jour flottant peut être Aujourd'hui ou un jour quelconque de la semaine (de Dimanche à Samedi). Les jours flottants permettent de définir une couche d'analyse réutilisable, sans avoir à se souvenir de modifier la date.

Les jours flottants sont particulièrement utiles lorsqu'ils sont utilisés avec des données de circulation, car la circulation change de minute en minute et de jour en jour. Par exemple, si vous calculez les mêmes itinéraires chaque jour et que vous avez besoin d'heures précises ou des meilleurs itinéraires en fonction des conditions de circulation données, vous pouvez choisir les paramètres Jour de la semaine et Aujourd'hui. Le solveur générera des résultats basés sur la circulation du jour même, lequel est déterminé à partir du système d'exploitation de votre ordinateur. Si vous renvoyez le jour suivant (par exemple, le 5 mai) pour mettre à jour les itinéraires pour ce jour, vous pouvez effectuer de nouveau la même couche d'analyse. La solution sera basée automatiquement sur le trafic du 5 mai puisque Jour de la semaine a été défini sur Aujourd'hui.

AttentionAttention :

Si vous choisissez Jour de la semaine, les champs temporels d'objet d'analyse de réseau sont autorisés uniquement à avoir des valeurs temporelles. Ils ne peuvent pas avoir des valeurs de date et d'heure.

Pour en savoir plus sur les données de trafic historique

Nombre de capacités

Nombre de dimensions de contrainte de capacité requises pour décrire les limites pertinentes des véhicules. Dans le cas d'une livraison d'ordre, chaque véhicule peut avoir une quantité limitée en poids et volume à transporter dans le cadre de limites physiques et légales. Dans ce cas, si vous effectuez le suivi du poids et du volume des ordres, vous pouvez utiliser ces deux capacités pour empêcher la surcharge des véhicules. Le nombre de capacités pour ce scénario est de deux (poids et volume). Selon le problème, vous pouvez avoir besoin d'effectuer le suivi de différents types ou quantités de capacités. Les capacités saisies dans les champs de capacité (DeliveryQuantities et PickupQuantities pour la classe Ordres et Capacities pour la classe Itinéraires) sont des chaînes de nombres séparés par des espaces, qui peuvent contenir le nombre maximal de valeurs spécifiées dans Nombre de capacités. Chaque dimension de capacité doit apparaître dans le même ordre de position pour toutes les valeurs des champs de capacités au sein de la même couche d'optimisation des tournées de véhicules. Les capacités étant elles-mêmes anonymes pour éviter de transposer accidentellement des dimensions de capacité, assurez-vous que les listes de capacités séparées par des espaces sont toujours saisies dans le même ordre pour toutes les valeurs de champs de capacité.

Unités du champ temporel

Unités de temps utilisées par les champs temporels des sous-couches et des tables de la couche d'analyse (classes d'analyse de réseau). Ces unités n'ont pas besoin d'être les mêmes que celles de l'attribut de coût de temps.

Unités du champ de distance

Unités de distance utilisées par les champs de distance des sous-couches et des tables de la couche d'analyse (classes d'analyse de réseau). Ces unités n'ont pas besoin d'être les mêmes que celles de l'attribut de coût de distance facultatif.

Demi-tours aux jonctions

ArcGIS Network Analyst peut autoriser les demi-tours partout, nulle part, uniquement au niveau des voies sans issue (culs-de-sac) ou uniquement au niveau des intersections et des voies sans issue. L'autorisation des demi-tours implique que l'itinéraire puisse faire demi-tour au niveau d'une jonction et revenir en arrière par la même rue.

Pour en savoir plus sur les règles de demi-tour

Type de forme en sortie

Les entités itinéraires générées en sortie par l'analyse peuvent être représentées de quatre manières différentes :

  • La Géométrie réelle donne la forme exacte de l'itinéraire résultant.

    Itinéraire comme géométrie réelle

  • La Géométrie réelle avec mesures donne la forme exacte de l'itinéraire résultant. En outre, la sortie comprend des mesures d'itinéraire pour le référencement linéaire. Les mesures augmentent à partir du premier arrêt et enregistrent l'impédance cumulée.

    Pour en savoir plus sur le référencement linéaire

  • La Ligne droite affiche une seule ligne droite entre les arrêts.

    Géométrie de ligne droite pour l'itinéraire

  • Lorsque le type de forme en sortie est défini sur Aucun, aucune forme n'est retournée.

Dans tous ces cas, les coûts basés sur le temps et la distance dans la solution sont les mêmes, et les attributs de la couche d'entités Itinéraires sont aussi les mêmes. La seule différence réside dans la forme de la sortie d'Itinéraires ou si le référencement linéaire est configuré automatiquement ou non.

Utiliser la hiérarchie

Si le jeu de données réseau comporte un attribut de hiérarchie, vous pouvez utiliser la hiérarchie pendant l'analyse. L'utilisation d'une hiérarchie implique une préférence du solveur pour les tronçons d'ordre supérieur par rapport aux tronçons d'ordre inférieur. Les recherches hiérarchiques sont plus rapides et permettent de simuler la préférence du chauffeur de circuler sur des autoroutes au lieu de routes locales, même si cela implique un trajet plus long. En revanche, si vous n'utilisez aucune hiérarchie, vous obtenez un itinéraire exact pour le jeu de données réseau.

Pour en savoir plus sur la définition d'itinéraires à l'aide d'une hiérarchie

Restrictions

Vous pouvez sélectionner les attributs de restriction à respecter lors du calcul de l'analyse. Dans la plupart des cas, les restrictions sont utilisées pour interdire certaines routes, mais elles peuvent également servir à les éviter ou les préférer. Un attribut de restriction, tel que Oneway, doit être utilisé lors de la recherche de solutions pour les véhicules devant respecter les rues à sens unique (comme les véhicules autres que les véhicules d'urgence). Parmi les autres attributs de restriction courants, on compte les limites de hauteur ou de poids qui interdisent à certains véhicules de traverser certaines routes ou certains ponts, les restrictions relatives aux matières dangereuses stipulant que les chauffeurs qui en transportent doivent totalement les ignorer ou du moins essayer de les éviter ou encore les itinéraires pour camions que les chauffeurs de poids-lourds devraient essayer de suivre. Vous pouvez sélectionner les attributs de restriction à respecter lors du calcul de l'analyse. Vous pouvez spécifier si les éléments qui utilisent la restriction doivent être interdits, évités ou préférés dans l'onglet Paramètres d'attributs.

Feuille de route

Grâce à ces propriétés, vous pouvez définir les unités d'affichage de la distance et, le cas échéant, du temps. Vous pouvez également choisir d'ouvrir automatiquement la feuille de route après la génération d'un itinéraire. (si vous choisissez de ne pas afficher automatiquement la feuille de route, vous pouvez cliquer sur le bouton Feuille de route Feuille de route pour afficher des directions.)

Onglet Paramètres avancés

L'onglet Paramètres avancés d'une couche de tournée de véhicules

Les propriétés suivantes s'affichent pour la couche d'optimisation des tournées de véhicules sous l'onglet Paramètres avancés de la boîte de dialogue Propriétés de la couche. Les paramètres que vous y définissez ont une incidence sur les priorités du solveur en termes de gestion des violations de fenêtre horaire pour les itinéraires et les temps de transit excessif des ordres appariés. Vous pouvez attribuer l'une des valeurs suivantes : Basse, Moyenne ou Elevée. Plus le degré d'importance est élevé, plus le solveur tente de réduire ou d'éliminer les violations de fenêtre horaire ou le temps de transit excessif associés.

Infraction de fenêtre horaire

Infraction de fenêtre horaire - Cette propriété vous permet d'évaluer l'importance du respect des fenêtres horaire sans entraîner de violations. Une infraction de fenêtre horaire se produit quand un itinéraire arrive à un ordre, un dépôt ou une borne après la fermeture d'une fenêtre horaire. La violation est le laps de temps écoulé entre la fin de la fenêtre horaire et l'heure d'arrivée d'une tournée.

Diagramme d'une infraction de fenêtre horaire

La solution de tournées de véhicules peut varier en fonction de la valeur que vous choisissez pour la propriété Infraction de fenêtre horaire. La liste suivante présente la signification des valeurs et les variations de la solution de tournées de véhicules :

  • Elevée - Le solveur tente de trouver une solution qui réduit les violations de fenêtre horaire mais augmente le temps de trajet total. Sélectionnez cette option s'il est plus important d'arriver à l'heure aux ordres que de réduire le coût global de la solution. Ce peut être le cas si vous rencontrez des clients à vos ordres et que vous ne voulez pas les importuner par des arrivées tardives (une autre option consiste à utiliser des fenêtres horaire strictes qui ne peuvent pas du tout être violées).

    En raison d'autres contraintes d'une tournée de véhicules, il peut s'avérer impossible de visiter tous les ordres dans leur fenêtre horaire. Dans ce cas, même l'option Elevée peut entraîner des violations.

  • Moyenne - Il s'agit de la valeur par défaut. Le solveur cherche un équilibre entre le respect des fenêtres horaires et la réduction du coût total de la solution.

  • Basse - Le solveur tente de trouver une solution qui réduit le temps de trajet total, quelle que soit la fenêtre horaire. Sélectionnez cette option si le respect des fenêtres horaire est moins important que la réduction du coût global de votre solution. Vous pouvez utiliser ce paramètre si vous avez un retard croissant de traitement des demandes de service. Si vous souhaitez desservir un plus grand nombre d'ordres au cours d'une journée ou rattraper un retard, vous pouvez sélectionner l'option Min., même si les clients risquent d'être gênés par l'arrivée tardive de votre flotte.

Les deux graphiques suivants représentent le même ensemble d'ordres et de dépôts. Cependant, les itinéraires sont différents car différents paramètres d'infraction de fenêtre horaire ont été utilisés. Le graphique de gauche montre l'itinéraire résultant de la définition de l'importance de la violation de fenêtre horaire sur Min. L'itinéraire est court, mais il présente une infraction de fenêtre horaire. Si l'importance est définie sur Elevée, l'itinéraire respecte toutes les fenêtres horaires, mais il est plus long, car il dessert d'abord les ordres dotés d'une fenêtre horaire.

Importance basse
Importance basse
Importance élevée
Importance élevée

Temps de trajet en excès

Cette propriété vous permet d'estimer l'importance de la réduction du temps de transit excessif. Le temps de transit excessif correspond à la quantité de temps dépassant le temps nécessaire pour effectuer le trajet direct entre une paire d'ordres. Le temps excessif découle de pauses ou de trajets vers d'autres ordres ou dépôts entres des visites à des ordres appariés.

Calcul du temps de transit excessif
Calcul du temps de transit excessif

La solution de tournées de véhicules peut varier en fonction de la valeur que vous choisissez pour le champ Temps de transit excessif. La liste suivante présente la signification des valeurs et les variations de la solution de tournées de véhicules :

  • Elevée - Le solveur tente de trouver une solution présentant moins de temps de transit excessif entre des ordre appariés, mais augmente les coûts de trajet globaux. Ce paramètre est utile si vous transportez des personnes entre des paires d'ordres et que voulez raccourcir le temps de trajet. Il est caractéristique des services de taxi.
  • Moyenne - Il s'agit de la valeur par défaut. Le solveur cherche un équilibre entre la réduction du temps de transit excessif et la réduction du coût total de la solution.
  • Basse - Le solveur tente de trouver une solution qui réduit le coût global de la solution, quel que soit le temps de transit excessif. Ce paramètre est fréquemment utilisé par les messageries privées. Ces sociétés transportant des paquets plutôt que des personnes, elles ne se préoccupent pas du temps de trajet. Cette option permet aux messageries de desservir les paires d'ordres dans le bon ordre et de réduire le coût global de la solution.

Les deux graphiques suivants représentent le même ensemble d'ordres et de dépôts. Cependant, les itinéraires sont différents car différents paramètres de temps de transit excessif ont été utilisés. Le graphique de gauche montre l'itinéraire résultant de la définition de l'importance du temps de transit excessif sur Min. L'itinéraire total est court, mais le temps de trajet entre le premier ordre et son ordre apparié, l'aéroport, est long. Si l'importance est définie sur Elevée, l'itinéraire réduit le temps entre le premier ordre et l'aéroport tout en conservant le même temps de trajet pour l'aéroport que l'ordre sur la droite. Cependant, le coût total de l'itinéraire augmente.

Importance basse
Importance basse (courrier)
Importance élevée (taxi)

Onglet Localisations du réseau

Les paramètres de l'onglet Localisations du réseau servent à rechercher des localisations réseau et à définir les valeurs de leurs propriétés.

Pour en savoir plus sur les localisations du réseau

Calcul et interprétation des résultats d'une tournée de véhicules

Après avoir créé une couche d'optimisation des tournées de véhicules, renseigné les objets d'analyse de réseau requis et défini les propriétés d'analyse appropriées, vous pouvez obtenir la solution pour la couche d'optimisation des tournées de véhicules en cliquant sur le bouton Rechercher Rechercher dans la barre d'outils Network Analyst.

Une fois la recherche effectuée, si la propriété Type de forme en sortie est définie sur Géométrie réelle, le solveur de tournées de véhicules trace des lignes sur le réseau en connectant les dépôts initiaux, les ordres, les dépôts de relais et les dépôts finaux de chaque itinéraire.

La fenêtre Network Analyst actualise aussi la classe Ordres de manière à regrouper tous les ordres en fonction des itinéraires auxquels ils sont attribués. La classe Passages aux dépôts est actualisée pour afficher les dépôts initial, final et de relais de chaque itinéraire.

Lors du calcul, le solveur de tournées de véhicules ignore tout itinéraire et tout ordre dont la valeur du champ AssignmentRule est définie sur Exclure.

Le solveur de tournées de véhicules calcule alors une matrice de coût origine-destination (OD) gérée en interne entre chacun des ordres et des emplacement de dépôt en utilisant le paramètre Attribut de temps comme impédance et le paramètre Attribut de distance (s'il est spécifié) comme attribut accumulé.

Pour en savoir plus sur l'analyse de la matrice de coût OD

Le solveur de tournées de véhicules crée une solution initiale composée d'ordres, de pauses et de passages aux relais prédéfinis si l'un de ces objets d'analyse de réseau est prédéfini pour des itinéraires. Si aucune solution initiale valide ne peut être trouvée sur la base de cette prédéfinition (autrement dit, si certaines contraintes sont violées), le solveur échoue.

Tant qu'il reste des ordres sans itinéraire, le solveur de tournées de véhicules tente d'insérer l'ordre sans itinéraire le plus économique dans l'itinéraire le plus compatible. Le solveur tente de séquencer de nouveau les ordres attribués à un itinéraire si cette opération améliore l'analyse, mais il ne déplace pas la séquence relative des ordres dont la valeur du champ AssignmentRule est définie sur Conserver la tournée et la séquence définie.

Après avoir visité tous les ordres possibles, le solveur de tournées de véhicules affiche les résultats dans les champs en sortie des objets d'analyse de réseau. Si certains ordres ne peuvent pas être visités, les contraintes violées sont présentées en sortie dans les champs ViolatedConstraints de la couche d'entités Ordres. Si un itinéraire n'est pas utilisé dans une analyse, ses champs en sortie sont définis sur la valeur Null.

Pour en savoir plus sur les contraintes de violation des ordres et itinéraires

Interprétation des résultats d'une optimisation des tournées de véhicules

Après avoir calculé une couche d'optimisation des tournées de véhicules, les solutions de routage de tous les itinéraires peuvent être assemblées en lisant les champs en entrée et en sortie de la table Interruptions, de la couche d'entités Passages aux dépôts, de la couche d'entités Ordres et de la couche d'entités Itinéraires. Pour chaque itinéraire, effectuez une recherche dans le champ RouteName et examinez les valeurs de séquence pour les entités Interruptions, Passages aux dépôts et Ordres pour obtenir l'itinéraire de la tournée. Vous pouvez générer des directions pour compiler un itinéraire semblable. La couche d'entités Itinéraires fournit un résumé de chaque itinéraire calculé.

Thèmes connexes

9/18/2013