Résoudre le problème de tournées des véhicules (Network Analyst)

Synthèse

Crée une couche d’analyse de réseau de tournées de véhicules, définit les propriétés d’analyse et résout l’analyse. Cet outil est idéal pour configurer un service Web de tournées de véhicules. Une couche d’analyse de tournées des véhicules recherche les meilleurs itinéraires pour une flotte de véhicules.

En savoir plus sur la sortie de l’outil Résoudre le problème de tournées des véhicules

Héritage :

Cet outil est obsolète. Cette fonction a été remplacée par l’outil Créer une couche d’analyse de tournée de véhicules et le bouton Tournée de véhicules dans le menu déroulant Analyse de réseau du ruban Analyse.

Utilisation

  • La boîte de dialogue de cet outil regroupe divers paramètres facultatifs dans les six catégories suivantes pour vous permettre de mieux les gérer :

    • Analyse avancée
    • Interruptions
    • Mode de déplacement personnalisé
    • Localisations du réseau
    • Sortie
    • Fonctionnalités de service

Paramètres

ÉtiquetteExplicationType de données
Ordres

Ordre que les itinéraires de l’analyse VRP doivent visiter. Un ordre peut représenter une livraison (livraison d’un meuble, par exemple), une collecte (navette d’aéroport collectant un passager, par exemple) ou tout autre type de service ou d’inspection (élagage d’arbres ou inspection d’un bâtiment, par exemple).

Le jeu d’entités d’ordres est associé à une table attributaire. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l’ordre. Le nom doit être unique. Si le nom n’est pas spécifié (champ vide), un nom est automatiquement généré pendant le processus de résolution.

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 le paramètre Unités du champ temporel (time_units dans Python).

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.

Remarque :
  • 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 desserte et partir avant la fin de la fenêtre horaire, vous devez soustraire la valeur du champ ServiceTime de celle du champ TimeWindowEnd1.

  • Les champs de fenêtres horaires peuvent contenir une valeur horaire uniquement ou une valeur de date et d’heure dans un champ de date et ne peuvent pas être exprimés en tant qu’entiers représentant les millisecondes depuis l’heure Epoch. Le fuseau horaire des champs de fenêtres horaires est spécifié à l’aide du paramètre time_zone_usage_for_time_fields. Si un champ temporel tel que TimeWindowStart1 inclut une valeur d’heure uniquement (8 h 00 du matin, par exemple), on suppose que la date est celle spécifiée par la propriété Default Date (Date par défaut) de la couche d’analyse. L’utilisation de valeurs de date et d’heure (par exemple, 11/07/2010 8 h 00) vous permet de définir des fenêtres horaires qui couvrent plusieurs jours.

  • La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

  • 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.

TimeWindowEnd1:

Heure de fin 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 fin.

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.

TimeWindowEnd2:

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

Lorsque TimeWindowStart2 et TimeWindowEnd2 ont tous deux une valeur nulle, il n’existe pas de deuxième fenêtre horaire.

Lorsque TimeWindowStart2 n’a pas de valeur nulle, mais que TimeWindowEnd2 a une valeur nulle, il existe une deuxième fenêtre horaire avec une heure de début mais pas d’heure de fin. Cette situation est valide.

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 indique le retard maximal autorisé ; par exemple, un itinéraire peut arriver jusqu’à 30 minutes après la fin de sa première fenêtre horaire pour un ordre.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

Les violations de fenêtre horaire peuvent être suivies et pondérées par le solveur. Vous pouvez donc faire en sorte que le solveur de tournées de véhicules adopte 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 Importance de la violation des fenêtres horaires (time_window_factor dans Python), vous choisissez de fait l’une de ces trois approches. Dans tous les cas, 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.

InboundArriveTime:

Définit le moment où l'élément à livrer à l'ordre sera prêt au dépôt de départ.

L'ordre peut être attribué à un itinéraire uniquement si l'heure d'arrivée entrante précède la valeur de la dernière heure de départ de l'itinéraire. Ainsi, l'itinéraire ne peut pas quitter le dépôt avant que l'élément ne soit prêt à y être chargé.

Ce champ permet de modéliser des scénarios qui impliquent des transbordements entrants. Par exemple, supposons qu'une tâche d'un ordre nécessite des matériaux spéciaux qui ne sont actuellement pas disponibles au dépôt. Les matériaux sont expédiés d’un autre emplacement et arriveront au dépôt à 11 h 00. Pour veiller à ce qu'aucun itinéraire sortant ne soit affecté à l'ordre avant l’arrivée de la livraison, l’heure d’arrivée entrante de l’ordre est fixée à 11 h 00. Les matériaux spéciaux arrivent à 11 h 00, ils sont chargés sur le véhicule, et le véhicule quitte le dépôt pour visiter les ordres qui lui sont affectés.

Remarque :

  • L'heure de départ de l'itinéraire, qui inclut la durée de desserte, doit suivre l'heure d'arrivée entrante. Si un itinéraire commence avant l'heure d'arrivée entrante d'un ordre, ce dernier ne peut pas être attribué à l'itinéraire. L'attribution est incorrecte même si l'itinéraire a une durée de desserte au dépôt de départ qui dépasse l'heure d'arrivée entrante.

  • Ce champ temporel peut contenir une valeur d'heure uniquement ou une valeur de date et d'heure. Si une valeur d'heure uniquement est définie (par exemple, 11:00 AM), la date est censée être celle spécifiée par la propriété Date par défaut de la couche d'analyse. La date par défaut est toutefois ignorée lorsqu'un champ temporel Dépôts, Itinéraires, Ordres ou Interruptions inclut une date avec l'heure. Dans ce cas, renseignez tous ces champs avec une date et une heure (par exemple, 7/11/2015 11:00 AM).

  • Le solveur VRP respecte InboundArriveTime, quelle que soit la valeur DeliveryQuantities.

  • Si une heure de départ sortante est également précisée, sa valeur temporelle doit suivre l'heure d'arrivée entrante.

  • Le solveur de tournées de véhicules n’est pas conçu pour résoudre les problèmes sur plus d’un an. Par conséquent toutes les durées de desserte et fenêtres horaires doivent être inférieures à une année.

OutboundDepartTime:

Définit le moment où l'élément à collecter à l'ordre doit arriver au dépôt d'arrivée.

L'ordre peut être attribué à un itinéraire uniquement si l'itinéraire peut parvenir à l'ordre et atteindre son dépôt final avant l'heure de départ sortante spécifiée.

Ce champ permet de modéliser des scénarios qui impliquent des transbordements sortants. Par exemple, une société de transport envoie des camions de livraison pour collecter des colis aux différents ordres et les ramener dans un dépôt où ils sont transférés vers d'autres ressources, en route vers leur destination finale. A 15 h 00 chaque jour, un semi-remorque s'arrête au dépôt pour collecter les colis hautement prioritaires et les emmener directement dans un centre de traitement. Pour éviter que les colis hautement prioritaires ne soient retardés et doivent attendre jusqu'à 15 h 00 le jour suivant, la société de transport envoie des camions de livraison collecter les colis hautement prioritaires aux ordres et pour les amener au dépôt avant 15 h 00. Pour ce faire, l'heure de départ sortante doit être réglée sur 15 h 00.

Remarque :
  • L'heure d'arrivée de l'itinéraire, notamment la durée de desserte, doit précéder l'heure de départ sortante. Si un itinéraire parvient à un dépôt, mais qu'elle ne termine pas sa durée de desserte au dépôt final avant l'heure de départ sortante de l'ordre, l'ordre ne peut pas être attribué à l'itinéraire.

  • Ce champ temporel peut contenir une valeur d'heure uniquement ou une valeur de date et d'heure. Si une valeur d'heure uniquement est définie (par exemple, 11:00 AM), la date est censée être celle spécifiée par la propriété Date par défaut de la couche d'analyse. La date par défaut est toutefois ignorée lorsqu'un champ temporel Dépôts, Itinéraires, Ordres ou Interruptions inclut une date avec l'heure. Dans ce cas, renseignez tous ces champs avec une date et une heure (par exemple, 7/11/2015 11:00 AM).

  • Le solveur VRP respecte OutboundDepartTime, quelle que soit la valeur PickupQuantities.

  • Si une heure d'arrivée entrante est également précisée, sa valeur temporelle doit précéder l'heure de départ sortante.

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.

Entrez les quantités de livraison sans préciser d’unités. Par exemple, si un objet pesant 150 kilos doit être livré à un ordre, entrez 150. Vous devez vous souvenir que la valeur est exprimée en kilos.

Si vous effectuez le suivi de plusieurs dimensions, séparez chaque valeur numérique par un espace. Par exemple, si vous enregistrez le poids et le volume d’une livraison de 1 000 kilos et 3 mètres cube, respectivement, entrez 1000 3. Là encore, vous devez vous souvenir des unités utilisées, à savoir les kilos et les mètres cube dans ce cas. Vous devez également mémoriser l’ordre dans lequel vous saisissez les valeurs et leurs unités correspondantes.

Veillez à ce que Capacities pour Routes (Itinéraires) et DeliveryQuantities et PickupQuantities pour Orders (Ordres) soient spécifiés de la même manière : les valeurs doivent être exprimées dans les mêmes unités et, si vous utilisez plusieurs dimensions, ces dernières doivent être répertoriées dans la même séquence pour tous les paramètres. Ainsi, si vous spécifiez le poids en kilos, puis le volume en mètres cubes pour DeliveryQuantities, la capacité de vos itinéraires et les quantités d’enlèvement de vos ordres doivent être spécifiées de la même manière, à savoir le poids en kilos et le volume en mètres cubes. Si vous combinez des unités ou modifiez l'ordre, des résultats indésirables se produiront sans que vous en ayez été averti.

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 Orders (Ordres).

Remarque :
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. En d’autres termes, le champ TotalCost dans la classe d’itinéraires n’inclut jamais le chiffre d’affaires dans sa sortie ; cependant, le chiffre d’affaires pondère l’importance relative du traitement des ordres.

SpecialtyNames:

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

L’orthographe des particularités répertoriées dans les classes Ordres et Itinéraires doit correspondre exactement pour que le solveur de tournées de véhicules puisse les associer entre elles.

Pour décrire les particularités et leur fonctionnement, prenons l'exemple d'une société d'entretien des pelouses et d'élagage dont une partie de ses ordres nécessite l'usage d'un camion nacelle pour élaguer les grands arbres. L'entreprise saisit CamionNacelle dans le champ SpecialtyNames de ces ordres pour indiquer leur besoin spécifique. SpecialtyNames n’est pas renseigné pour les autres ordres. De la même manière, l’entreprise saisit également CamionNacelle dans le champ SpecialtyNames des itinéraires empruntés par des camions munis de flèches hydrauliques. Le champ n'est pas renseigné pour les autres itinéraires. Lors de l'analyse, le solveur de tournées de véhicules attribue des ordres sans besoin spécifique à n'importe quel itinéraire, mais il attribue les ordres nécessitant des camions nacelle uniquement aux itinéraires empruntés par ces derniers.

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).

  • Exclude (Exclure) (0) : l’ordre est exclu de l’opération de calcul qui s’ensuit.
  • Preserve route and relative sequence (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). Pour illustrer cela, prenons deux ordres, A et B. Leur valeur de séquence respective est 2 et 3. Si vous définissez les valeurs du champ AssignmentRule sur Preserve route and relative sequence (Conserver la tournée et la séquence définie), les valeurs de séquence réelles de A et B peuvent changer après la résolution, 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.

  • Preserve route (Conserver la tournée) (2) : le solveur doit toujours attribuer l’ordre à l’itinéraire préattribué lors de l’opération de 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.
  • Override (Déroger) (4) : le solveur ignore l’itinéraire et la séquence prédéfinis (le cas échéant) pour l’ordre lors de l’opération de calcul. Il attribue un itinéraire et une séquence à l'ordre afin de limiter la valeur globale de la fonction objective. Il s'agit de la valeur par défaut.
  • Anchor first (Premier ancrage) (4) : le solveur ignore l’itinéraire et la séquence prédéfinis (le cas échéant) pour l’ordre lors de l’opération de calcul. Il attribue un itinéraire à l'ordre qu'il place en premier sur cet itinéraire, afin de limiter la valeur globale de la fonction objective.
  • Anchor last (Dernier ancrage) (5) : le solveur ignore l’itinéraire et la séquence prédéfinis (le cas échéant) pour l’ordre lors de l’opération de calcul. Il attribue un itinéraire à l'ordre qu'il place en dernier sur cet itinéraire, afin de limiter la valeur globale de la fonction objective.

Ce champ ne peut pas contenir une valeur Null.

CurbApproach:

La propriété CurbApproach spécifie la direction d’un véhicule lorsqu’il approche ou quitte la localisation réseau. Il existe quatre choix différents (leurs valeurs précodées sont affichées entre parenthèses) :

  • Either side of vehicle (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.
  • Right side of vehicle (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.
  • Left side of vehicle (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.
  • No U-Turn (Pas de demi-tour) (3) - Lorsque le véhicule s’approche de l’arrêt, le trottoir peut être d’un côté quelconque du véhicule ; en revanche, le véhicule doit partir sans faire demi-tour.

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.

Après une opération de résolution, si l’ordre est acheminé, le champ RouteName contient le nom de l’itinéraire auquel l’ordre est affecté.

Sequence:

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 nulle peut se produire seulement avec une valeur RouteName nulle.

Les valeurs de séquence en entrée sont non négatives et uniques pour chaque itinéraire (partagé par les passages aux dépôts, les ordres et les pauses), mais elles ne doivent pas commencer à 0 ou être contiguës.

Après une opération de résolution, le champ Sequence contient la valeur de séquence de l’ordre sur itinéraire qui lui est affecté. 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 de 2, car une tournée commence toujours à un dépôt.

Feature Set
Dépôts

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 véhicules sont chargés (en cas de livraison) ou déchargés (en cas de collecte) aux dépôts en début de tournée. 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.

Le jeu d’entités des dépôts est associé à une table attributaire. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom du dépôt. Les champs StartDepotName et EndDepotName du jeu d’enregistrements des itinéraires font référence aux noms que vous spécifiez ici. Le dépôt est également référencé par le jeu d’enregistrements de relais de tournée lorsqu’il est utilisé.

Les noms de dépôts ne respectent pas la casse ; ils doivent être non vides et uniques.

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.

Remarque :
  • 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 temporel inclut une valeur d’heure uniquement (8 h 00 du matin, par exemple), on suppose que la date est celle spécifiée par le paramètre Default Date (Date par défaut) de la couche d’analyse. L’utilisation de valeurs de date et d’heure (par exemple, 11/07/2010 8 h 00) vous permet de définir des fenêtres horaires qui couvrent plusieurs jours.

  • La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

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

TimeWindowEnd1:

Heure de fin 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 fin.

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.

TimeWindowEnd2:

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

Lorsque TimeWindowStart2 et TimeWindowEnd2 ont tous deux une valeur nulle, il n’existe pas de deuxième fenêtre horaire.

Lorsque TimeWindowStart2 n’a pas de valeur nulle, mais que TimeWindowEnd2 a une valeur nulle, il existe une deuxième fenêtre horaire avec une heure de début mais pas d’heure de fin. Cette situation est valide.

CurbApproach:

La propriété CurbApproach spécifie la direction d’un véhicule lorsqu’il approche ou quitte la localisation réseau. Il existe quatre choix différents (leurs valeurs précodées sont affichées entre parenthèses) :

  • Either side of vehicle (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.
  • Right side of vehicle (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.
  • Left side of vehicle (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.
  • No U-Turn (Pas de demi-tour) (3) - Lorsque le véhicule s’approche de l’arrêt, le trottoir peut être d’un côté quelconque du véhicule ; en revanche, le véhicule doit partir sans faire demi-tour.

Bearing:

Direction de déplacement d'un point. Les unités sont exprimées en degrés et sont mesurées dans le sens horaire, à partir du nord vrai. Ce champ est utilisé avec le champ BearingTol.

En règle générale, les données de relèvement sont automatiquement envoyées à partir d'un périphérique mobile équipé d'un récepteur GPS. Essayez d'inclure des données de relèvement si vous chargez un ordre qui se déplace, par exemple un piéton ou un véhicule.

L'utilisation de ce champ vous évite d'ajouter des emplacements sur des tronçons incorrects, par exemple lorsqu'un véhicule se rapproche d'une intersection ou d'un passage supérieur. Le relèvement permet également à Network Analyst de déterminer plus facilement quel côté de la rue se trouve le point.

Pour plus d'informations, reportez-vous à la rubrique Relèvement et BearingTol.

BearingTol:

La valeur de tolérance de relèvement crée une plage de valeurs de relèvement acceptables lors de la localisation de points qui se déplacent sur un tronçon à l’aide du champ Bearing. Si la valeur du champ Bearing est comprise dans la plage de valeurs acceptables générée à partir de la tolérance de relèvement sur un tronçon, le point peut être ajouté à cet endroit en tant que localisation réseau. Sinon, le point le plus proche sur le prochain tronçon le plus proche est évalué.

Les unités sont exprimées en degrés et la valeur par défaut est 30. Les valeurs doivent être supérieures à zéro et inférieures à 180.

Si la valeur est égale à 30 lorsque Network Analyst essaie d’ajouter une localisation réseau sur un tronçon, une plage de valeurs de relèvement acceptables est générée à 15º de chaque côté du tronçon (gauche et droite) et dans les deux directions numérisées du tronçon.

Pour plus d'informations, reportez-vous à la rubrique Relèvement et BearingTol.

NavLatency:

Ce champ n’est utilisé au cours du processus de calcul que si les champs Bearing et BearingTol contiennent également des valeurs ; toutefois, vous n’êtes pas obligé d’entrer une valeur NavLatency, même si les champs Bearing et BearingTol sont renseignés. NavLatency indique le temps censé s’écouler entre le moment où un véhicule se déplaçant envoie des informations GPS à un serveur et le moment où le dispositif de navigation du véhicule reçoit l’itinéraire traité. Les unités de temps du champ NavLatency sont identiques à celles de l’attribut de coût spécifiées par le paramètre Attribut de temps.

Feature Set
Itinéraires

Itinéraires disponibles pour la tournée de véhicules spécifiée. Un itinéraire spécifie les caractéristiques des véhicules et des chauffeurs et représente également le chemin entre les dépôts et les ordres une fois l’analyse terminée.

Un itinéraire peut être défini par des temps de service aux dépôts initial et final, une heure de début fixe ou souple, des coûts opérationnels basés sur le temps ou sur la distances, de nombreuses capacités, diverses contraintes sur la journée de travail d’un chauffeur, etc.

Le jeu d’enregistrements des itinéraires comporte plusieurs attributs. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

Name:

Nom de l’itinéraire. Le nom doit être unique.

Network Analyst génère un nom unique au moment du calcul si cette valeur de champ est nulle. Par conséquent, la saisie d’une valeur est facultative dans la plupart des cas. Toutefois, vous devez obligatoirement entrer un nom si votre analyse inclut des pauses, des relais de tournée, des zones de tournée ou des ordres qui sont préattribués à un itinéraire, car le nom de l’itinéraire est utilisé comme clé étrangère dans ces circonstances. Les noms d’itinéraires ne respectent pas la casse.

StartDepotName:

Nom du dépôt initial de l’itinéraire. Ce champ est une clé étrangère du champ Name dans Depots.

Si la valeur de StartDepotName est nulle, 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 nulle, celle de EndDepotName ne peut pas être nulle.

Les dépôts de départ virtuels ne sont pas autorisés si les ordres ou les dépôts se situent dans plusieurs fuseaux horaires.

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 de DeliveryQuantities sont différentes de zéro dans la classe Orders [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 Name du paramètre Dépôts.

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 le paramètre Unités du champ temporel (time_units dans Python).

Remarque :

Les durées de traitement aux dépôts initial et final sont des valeurs fixes (fournies par les valeurs des 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 le paramètre Unités du champ temporel (time_units dans Python).

Remarque :

Les durées de traitement aux dépôts initial et final sont des valeurs fixes (fournies par les valeurs des 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 valeurs nulles et affiche par défaut une valeur horaire égale à 8 h 00. Cette valeur par défaut est interprétée comme 8 h 00 à la date fournie par le paramètre Date par défaut) (default_date dans Python).

La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

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 valeurs Null et affiche par défaut une valeur horaire de 10:00. 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 traiter 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 coïncident, la valeur de 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 de ArriveDepartDelaypour les 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 très haute tour, 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 chacun une place 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 le paramètre Unités du champ temporel (time_units dans Python).

Capacities:

Capacité maximale du véhicule. Vous pouvez spécifier une capacité de n’importe quelle dimension, comme le poids, le volume ou la quantité. Vous pouvez même spécifier plusieurs dimensions, par exemple le poids et le volume.

Entrez les capacités sans préciser d’unités. Par exemple, si votre véhicule peut transporter 20 000 kilos, entrez 20000. Vous devez vous souvenir que la valeur est exprimée en kilos.

Si vous effectuez le suivi de plusieurs dimensions, séparez chaque valeur numérique par un espace. Si, par exemple, vous enregistrez le poids et le volume et que votre véhicule peut transporter un poids de 20 000 kilos et un volume de 56 mètres cube, le champ Capacities doit être défini sur 20000 56. Là encore, vous devez vous souvenir des unités utilisées. Vous devez également mémoriser l’ordre dans lequel vous saisissez les valeurs et leurs unités correspondantes (kilos suivis de mètres cube dans ce cas).

Il est important de mémoriser les unités et l’ordre dans lequel vous les saisissez pour deux raisons : d’abord pour pouvoir réinterpréter les informations ultérieurement, ensuite pour entrer correctement les valeurs dans les champs DeliveryQuantities et PickupQuantities de la classe Ordres. En ce qui concerne le deuxième point, notez que le solveur de tournées de véhicules traite simultanément les champs Capacities, DeliveryQuantities et PickupQuantities pour éviter toute surcharge. Comme aucune unité ne peut être entrée dans le champ, Network Analyst ne peut pas effectuer de conversions. Par conséquent, vous devez entrer les valeurs des trois champs en utilisant les mêmes unités et en respectant le même ordre afin que les valeurs soient correctement interprétées. Si vous combinez des unités ou modifiez l’ordre dans l’un des trois champs, des résultats indésirables se produiront sans que vous en soyez averti. Nous vous conseillons donc de prédéfinir des unités et l’ordre dans lequel les saisir pour pouvoir vous y référer à tout moment lorsque vous entrez des valeurs dans ces trois champs.

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 aux champs DeliveryQuantities ou PickupQuantities de la classe des ordres, les valeurs restantes sont traitées comme étant égales à zéro.

Attention :

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.

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 le paramètre Unités du champ temporel (time_units dans Python).

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é pour la valeur de ce champ est spécifiée par le paramètre Distance Field Units (Unités du champ de distance) (distance_units pour Python).

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 le paramètre Unités du champ temporel (time_units dans Python).

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 480 (8 heures * 60 minutes/heure), puisque le paramètre Unités du champ temporel est défini sur Minutes.

CostPerUnitOvertime:

Coût monétaire encouru par unité de temps d'heures supplémentaires. Ce champ peut contenir uniquement une valeur nulle si OvertimeStartTime a également une valeur nulle. Sinon, sa valeur doit être positive et supérieure à 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 le paramètre Unités du champ temporel (time_units dans Python).

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.

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 à celle du champ MaxTotalTime.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

MaxTotalDistance:

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

L’unité pour la valeur de ce champ est spécifiée par le paramètre Distance Field Units (Unités du champ de distance) (distance_units pour Python).

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.

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 aucune particularité en charge.

Ce champ est une clé étrangère du champ SpecialtyNames du paramètre Ordres.

Pour décrire les particularités et leur fonctionnement, prenons l'exemple d'une société d'entretien des pelouses et d'élagage dont une partie de ses ordres nécessite l'usage d'un camion nacelle pour élaguer les grands arbres. L'entreprise saisit CamionNacelle dans le champ SpecialtyNames de ces ordres pour indiquer leur besoin spécifique. SpecialtyNames n’est pas renseigné pour les autres ordres. De la même manière, l’entreprise saisit également CamionNacelle dans le champ SpecialtyNames des itinéraires empruntés par des camions munis de flèches hydrauliques. Le champ n'est pas renseigné pour les autres itinéraires. Lors de l'analyse, le solveur de tournées de véhicules attribue des ordres sans besoin spécifique à n'importe quel itinéraire, mais il attribue les ordres nécessitant des camions nacelle uniquement aux itinéraires empruntés par ces derniers.

AssignmentRule:

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

  • Include (Inclure) - L’itinéraire est inclus dans l’opération de calcul. Il s'agit de la valeur par défaut.
  • Exclude (Exclure) : l’itinéraire est exclu de l’opération de calcul.

Record Set
Interruptions

Périodes de repos, ou pauses, pour les itinéraires d’une tournée de véhicules spécifiée. 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 utilisant une fenêtre horaire, un temps de trajet maximal ou un temps de travail maximal.

Le jeu d’enregistrements des pauses comporte des attributs associés. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

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 vis-à-vis du champ Name de la classe Routes (Itinéraires), ne peut pas contenir de valeur nulle.

Precedence:

Les valeurs de Precedence permettent de classer les pauses d'un itinéraire donné. Les pauses ayant une valeur de priorité de 1 interviennent avant celles dont la valeur est 2, et ainsi de suite.

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 ne peut pas contenir de valeur nulles et sa valeur par défaut est 60.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

TimeWindowStart:

Heure de début de la fenêtre horaire de la pause. Les fenêtres horaires partiellement ouvertes ne sont pas valides pour les pauses.

Si ce champ contient une valeur, MaxTravelTimeBetweenBreaks et MaxCumulWorkTime doivent avoir une valeur nulle ; de plus, la valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit ê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 dans les interruptions peuvent contenir une valeur horaire uniquement ou une valeur de date et d’heure dans un champ de date et ne peuvent pas être exprimés en tant qu’entiers représentant les millisecondes depuis l’heure Epoch. Le fuseau horaire des champs de fenêtres horaires est spécifié à l’aide du paramètre time_zone_usage_for_time_fields. Si un champ temporel, tel que TimeWindowStart, contient une valeur d’heure uniquement (24 h 00, par exemple), on suppose que la date est celle spécifiée par le paramètre Date par défaut) (default_date dans Python). L’utilisation de valeurs de date et d’heure (le 11/07/2012 à 24 h 00, par exemple) vous permet de spécifier des fenêtres horaires qui couvrent deux jours ou plus. Cela s’avère utile lorsqu’une pause doit être prise avant et après minuit.

La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

TimeWindowEnd:

Heure de fin de la fenêtre horaire de la pause. Les fenêtres horaires partiellement ouvertes ne sont pas valides pour les pauses.

Si ce champ contient une valeur, MaxTravelTimeBetweenBreaks et MaxCumulWorkTime doivent avoir une valeur nulle ; de plus, la valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit être nulle pour toutes les autres pauses 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 spécifie 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é selon le paramètre Importance de la violation des fenêtres horaires) (time_window_factor dans Python).

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

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

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.

Ce champ est conçu pour limiter le temps de conduite d’une personne avant une pause. Si, par exemple, le paramètre Unités du champ temporel) (time_units dans Python) de l’analyse est défini sur Minutes et que MaxTravelTimeBetweenBreaks a pour valeur 120, le chauffeur peut prendre une pause au bout de deux heures de conduite. Pour affecter une deuxième pause après deux autres heures de conduite, le champ MaxTravelTimeBetweenBreaks de cette deuxième pause doit avoir pour valeur 120.

Si ce champ comporte une valeur, la valeur de TimeWindowStart, TimeWindowEnd, MaxViolationTime et MaxCumulWorkTime doit être nulle pour que la résolution d’une analyse aboutisse.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

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 d’attente d’un ordre ou à un dépôt d’un itinéraire (ou d’un chauffeur) avant le début d’une fenêtre horaire.

Ce champ est conçu pour limiter le temps de travail d’une personne avant une pause. Si, par exemple, le paramètre Unités du champ temporel) (time_units dans Python) est défini sur Minutes et que MaxCumulWorkTime a pour valeur 120 et ServiceTime 15, le chauffeur peut 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, il convient ici d’affecter 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 comporte une valeur, la valeur de TimeWindowStart, TimeWindowEnd, MaxViolationTime et MaxTravelTimeBetweenBreaks doit être nulle pour que la résolution d’une analyse aboutisse.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

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.

Sequence:

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 ou 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.

Record Set
Unités du champ temporel

Spécifie les unités de temps pour toutes les valeurs de champ basées sur le temps dans l’analyse.

Nombre d’entités et d’enregistrements d’une analyse VRP ont des champs qui permettent de stocker des valeurs de temps, comme ServiceTime pour les ordres et CostPerUnitTime pour les itinéraires. Pour optimiser la saisie des données, ces valeurs de champ n’incluent pas d’unités. Toutes les valeurs de champ basées sur une distance doivent être entrées dans les mêmes unités, et ce paramètre sert à spécifier les unités de ces valeurs.

Notez que les champs temporels en sortie utilisent les mêmes unités que celles spécifiées par ce paramètre.

Cette unité de temps ne doit pas nécessairement correspondre à celle du paramètre Attribut de temps réseau (time_attribute dans Python).

  • SecondesSecondes
  • MinutesMinutes
  • HeuresHeures
  • JoursJours
String
Unités du champ de distance

Spécifie les unités de distance pour toutes les valeurs de champ basées sur une distance dans l’analyse.

Nombre d’entités et d’enregistrements d’une analyse VRP ont des champs qui permettent de stocker des valeurs de distance, comme MaxTotalDistance et CostPerUnitDistance pour les itinéraires. Pour optimiser la saisie des données, ces valeurs de champ n’incluent pas d’unités. Toutes les valeurs de champ basées sur une distance doivent être entrées dans les mêmes unités, et ce paramètre sert à spécifier les unités de ces valeurs.

Notez que les champs de distance en sortie utilisent les mêmes unités que celles spécifiées par ce paramètre.

Cette unité de distance ne doit pas nécessairement correspondre à celle du paramètre Attribut de distance réseau (distance attribute dans Python).

  • MilesMiles
  • KilomètresKilomètres
  • PiedsPieds
  • YardsYards
  • MètresMètres
  • Milles nautiquesMilles nautiques
String
Jeu de données réseau

Le jeu de données réseau sur lequel l’analyse de la tournée de véhicules est effectuée. Le jeu de données réseau doit avoir un attribut de coût basé sur le temps puisque le solveur de tournées de véhicules réduit le temps.

Network Dataset Layer
Espace de travail Géodatabase en sortie

Géodatabase fichier ou espace de travail temporaire où seront créées les classes d’entités en sortie. Cet espace de travail doit déjà exister. L’espace de travail en sortie par défaut est temporaire.

Workspace
Nom des arrêts non attribués en sortie

Nom du champ ajouté à la classe d’entités en sortie qui contient les dépôts inaccessibles ou les ordres non attribués.

String
Nom des arrêts en sortie

Nom de la classe d’entités qui contiendra les arrêts visités par les itinéraires. Cette classe d’entités inclut les arrêts aux dépôts, aux ordres et pendant les pauses.

String
Nom des itinéraires en sortie

Nom de la classe d’entités qui contiendra les itinéraires de l’analyse.

String
Nom des feuilles de route en sortie

Nom de la classe d’entités qui contiendra les feuilles de route pour les itinéraires.

String
Date par défaut
(Facultatif)

Date par défaut pour les valeurs de champs temporels qui spécifient un heure de la journée sans inclure de date.

Date
Règle de demi-tour
(Facultatif)

Spécifie la règle de demi-tour qui sera utilisée aux jonctions. L’autorisation des demi-tours implique que le solveur puisse faire demi-tour au niveau d’une jonction et revenir en arrière par la même rue. Étant donné que les jonctions représentent des intersections de rues et des voies sans issue, différents véhicules peuvent être en mesure de faire demi-tour à certaines jonctions mais pas à d’autres – selon que la jonction représente une intersection ou une voie sans issue. Pour en tenir compte, le paramètre de règle de demi-tour est spécifié implicitement par le nombre de tronçons connectés à la jonction, également connu sous le nom de « valence de jonction ». Les valeurs acceptables pour ce paramètre sont répertoriées ci-dessous ; chacune est suivie d'une description de sa signification en termes de valence de jonction.

Si la définition de votre règle de demi-tour n’est pas suffisamment précise, envisagez d’ajouter un évaluateur de délai de tournant global à un attribut de coût de réseau ou de modifier ses paramètres, le cas échéant, en veillant tout particulièrement à la configuration des tournants inversés. Vous pouvez également définir la propriété CurbApproach de vos localisations de réseau.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

  • AutoriséLes demi-tours sont autorisés aux jonctions comportant un nombre quelconque de tronçons connectés. Il s’agit de la valeur par défaut.
  • Non autoriséLes demi-tours sont interdits à toutes les jonctions, indépendamment de la valence de jonction. Les demi-tours restent toutefois autorisés aux localisations de réseau même lorsque ce paramètre est sélectionné ; vous pouvez cependant configurer la propriété CurbApproach de chaque localisation de réseau pour y interdire les demi-tours.
  • Autorisé au niveau des voies sans issue uniquementLes demi-tours sont interdits au niveau de toutes les jonctions, sauf celles ayant un seul tronçon adjacent (voie sans issue).
  • Autorisé au niveau des voies sans issue et des intersections uniquementLes demi-tours sont interdits au niveau des jonctions où exactement deux tronçons adjacents se rencontrent mais sont autorisés au niveau des intersections (jonctions ayant trois tronçons adjacents ou plus) et des voies sans issue (jonctions comportant exactement un tronçon adjacent). Souvent, les réseaux comportent des jonctions superflues au milieu de segments de route. Cette option empêche des véhicules de faire des demi-tours à ces emplacements.
String
Importance de la violation des fenêtres horaires
(Facultatif)

Spécifie l’importance de respecter les fenêtres horaires. Les trois options proposées sont décrites ci-dessous.

  • FaibleAccorde plus d’importance à la réduction du temps de conduite qu’au respect de l’heure d’arrivée aux arrêts. 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 ce paramètre, même si les clients risquent d’être gênés par votre arrivée tardive.
  • MoyenneAccorde autant d’importance à la réduction du temps de conduite qu’au respect de l’arrivée dans la fenêtre horaire définie. Il s’agit de la valeur par défaut.
  • ElevéeAccorde plus d’importance au respect de l’heure d’arrivée aux arrêts qu’à la réduction du temps de conduite. Les organisations qui doivent impérativement respecter l’heure de livraison ou qui placent le service clientèle au rang de leurs principales préoccupations doivent choisir ce paramètre.
String
Grouper les itinéraires spatialement
(Facultatif)

Indique si l’agrégation spatiale doit être utilisée.

  • Coché : les ordres affectés à un itinéraire individuel sont agrégés spatialement. L’agrégation des ordres permet de regrouper les itinéraires dans des zones plus petites et de réduire le nombre d’intersections entre lignes d’itinéraires, mais elle peut augmenter le temps de trajet total. Il s’agit de l’option par défaut.
  • Non coché : le solveur ne hiérarchise pas les ordres d’agrégation spatiale et les lignes d’itinéraires peuvent s’intersecter. Utilisez cette option si des zones d’itinéraire sont spécifiées.
Boolean
Zones de tournées
(Facultatif)

Délimite les territoires de travail pour des itinéraires donnés. Une zone de tournée est une entité surfacique utilisée pour contraindre des itinéraires à traiter uniquement les ordres se trouvant dans la zone spécifiée ou s’en approchant. Les exemples suivants sont des cas dans lesquels les zones de tournée 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.

Le jeu d’entités des zones de tournée est associé à une table attributaire. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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 vis-à-vis du champ Name dans la couche d’entités Routes (Itinéraires).

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.

Feature Set
Relais de tournée
(Facultatif)

Indique les dépôts intermédiaires que les itinéraires peuvent visiter pour recharger ou décharger la cargaison qu’ils livrent ou collectent. Un relais de tournée relie spécifiquement un itinéraire à un dépôt. La relation indique que la tournée peut passer à un relais (pour recharger ou décharger en cours de route) au dépôt associé.

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.

Les règles et options suivantes sont à 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.

Le jeu d’enregistrements des relais de tournée comporte des attributs associés. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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. Il s’agit d’une clé étrangère vis-à-vis du champ Name de la couche d’entités Depots (Dépôts).

RouteName:

Nom de l'itinéraire auquel ce relais s'applique. Ce champ ne peut pas contenir de valeur nulle. Il s’agit d’une clé étrangère vis-à-vis du champ Name dans la couche d’entités Routes (Itinéraires).

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.

Remarque :

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.

Record Set
Paires d’ordres
(Facultatif)

Apparie les ordres de collecte et de livraison pour qu’ils soient traités par la même tournée.

Il est quelquefois nécessaire que la collecte et la livraison des ordres soient appariées. Par exemple, un coursier peut demander à l’un de ses employés de collecter un colis prioritaire d’un ordre pour le livrer à un autre sans retourner au dépôt, ou au centre de tri, afin de minimiser le temps de livraison. Il est possible d’utiliser des paires d’ordres pour attribuer ces ordres associés à la même tournée avec la séquence adéquate. En outre, vous pouvez également attribuer des restrictions pour limiter le temps d’immobilisation du paquet 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.

Le jeu d’enregistrements des paires d’ordres comporte des attributs associés. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

FirstOrderName:

Nom du premier ordre de la paire. Ce champ est une clé étrangère vis-à-vis du champ Name dans la couche d’entités Orders (Ordres).

SecondOrderName:

Nom du second ordre de la paire. Ce champ est une clé étrangère vis-à-vis du champ Name dans la couche d’entités Orders (Ordres).

Le premier ordre du couple doit être un ordre d’enlèvement. Autrement dit, la valeur de son champ DeliveryQuantities est nulle. Le deuxième ordre du couple doit être un ordre de livraison. Autrement dit, 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.

Remarque :

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 l’une des trois solutions suivantes : réduire le temps de transit excessif global, quelle que soit 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 le temps de transit excessif global et réduire à la place le coût de trajet de la flotte. En attribuant un degré d’importance au paramètre Importance du temps de transit excessif) (excess_transit_factor dans Python), vous choisissez de fait l’une de ces trois approches. Quel que soit le niveau d’importance, le solveur renvoie toujours une erreur en cas de dépassement de la valeur MaxTransitTime.

Record Set
Importance du temps de transit excessif
(Facultatif)

Spécifie l’importance de la réduction du temps de transit excessif des paires d’ordres. 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. Les pauses des chauffeurs ou les trajets aux ordres et aux dépôts intermédiaires peuvent être à l’origine de ces temps excessifs.

  • FaibleAccorde plus d’importance à la réduction du coût global de la solution qu’au temps de transit excessif. Ce paramètre est fréquemment utilisé par les services de coursiers privés. Ces sociétés transportant des paquets plutôt que des personnes, elles ne se préoccupent pas du temps de trajet. Ce paramètre permet aux messageries de servir les paires d’ordres dans le bon ordre et de réduire le coût global de la solution.
  • MoyenneAccorde autant d’importance à la réduction du temps de transit excessif qu’à la réduction du coût global de la solution. Il s’agit de la valeur par défaut.
  • ElevéeAccorde plus d’importance au temps de transit le plus court des ordres associés qu’aux 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.
String
Barrières ponctuelles
(Facultatif)

Spécifie les interruptions ponctuelles qui sont divisées en deux types : les interruptions ponctuelles de restriction et les interruptions ponctuelles à coût ajouté. Elles restreignent temporairement la traversée de points sur le réseau ou leur ajoutent une impédance. Les interruptions ponctuelles sont définies par un jeu d'entités, et les valeurs attributaires que vous spécifiez pour les entités ponctuelles déterminent s'il s'agit d'interruptions de restriction ou d'interruptions à coût ajouté. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l'interruption.

BarrierType :

Spécifie si l'interruption restreint entièrement le trajet ou ajoute un coût de parcours correspondant. Deux options sont disponibles :

  • Restriction (0) : interdit le passage à travers l'interruption. Il s'agit de la valeur par défaut.
  • Coût ajouté (2) : lorsque l’interruption est traversée, le coût du réseau augmente de la valeur spécifiée dans les champs Additional_Time et Additional_Distance.

Additional_Time :

Si BarrierType est défini sur le coût ajouté, la valeur du champ Additional_Time indique le temps qui est ajouté à un itinéraire lorsqu’il passe par l’interruption.

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

Additional_Distance :

Si BarrierType est défini sur le coût ajouté, la valeur du champ Additional_Distance indique l’impédance qui est ajoutée à un itinéraire lorsqu’il passe par l’interruption.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ de distance.

Feature Set
Barrières linéaires
(Facultatif)

Spécifie les interruptions linéaires qui restreignent temporairement leur passage. Les interruptions linéaires sont définies par un jeu d'entités. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l'interruption.

Feature Set
Barrières polygonales
(Facultatif)

Spécifie les interruptions polygonales qui sont divisées en deux types : les interruptions polygonales de restriction et les interruptions polygonales à coût proportionné. Elles restreignent temporairement la traversée des parties du réseau qu'elles couvrent ou proportionnent leur impédance. Les interruptions polygonales sont définies par un jeu d'entités, et les valeurs attributaires que vous spécifiez pour les entités surfaciques déterminent s'il s'agit d'interruptions de restriction ou d'interruptions à coût proportionné. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l'interruption.

BarrierType :

Spécifie si la barrière restreint entièrement le trajet ou proportionne son coût de parcours correspondant. Deux options sont disponibles :

  • Restriction (0) - Interdit le parcours à travers toute partie de la barrière. Il s'agit de la valeur par défaut.
  • Coût proportionné (1) - Proportionne l'impédance des tronçons sous-jacents en les multipliant par la valeur de la propriété Attr_[Impédance]. Si les tronçons sont partiellement couverts par la barrière, l'impédance est répartie et multipliée.

Scaled_Time :

Les valeurs d'impédance basées sur le temps des tronçons sous-jacents à l'interruption sont multipliées par la valeur définie dans ce champ. Ce champ n'est pertinent qu'en présence d'une interruption de coût proportionné.

Scaled_Distance :

Les valeurs d'impédance basées sur la distance des tronçons sous-jacents à l'interruption sont multipliées par la valeur définie dans ce champ. Ce champ n'est pertinent qu'en présence d'une interruption de coût proportionné.

Feature Set
Attribut de temps
(Facultatif)

Attribut de coût de réseau à utiliser lorsque vous déterminez le temps de trajet des éléments de réseau.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
Attribut de distance
(Facultatif)

Attribut de coût de réseau à utiliser lorsque vous déterminez la distance des éléments de réseau.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
Use Hierarchy in Analysis (Utiliser la hiérarchie lors de l’analyse)
(Facultatif)
  • Activé: l’attribut de hiérarchie sera utilisé pour 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 d’un chauffeur de circuler sur des autoroutes au lieu de routes locales si possible, même si cela implique un trajet plus long. Cette option est active uniquement si le jeu de données réseau en entrée comporte un attribut de hiérarchie.
  • Désactivé : l’attribut de hiérarchie n’est pas utilisé pour l’analyse. Si la hiérarchie n’est pas utilisée, un itinéraire exact est obtenu pour le jeu de données réseau.

Le paramètre est désactivé si aucun attribut de hiérarchie n’est défini dans le jeu de données réseau utilisé pour effectuer l’analyse.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

Boolean
Restrictions
(Facultatif)

Indique quels attributs de restriction réseau sont respectés lors de l'analyse.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
Attribute Parameter Values (Valeurs des paramètres d’attributs)
(Facultatif)

Spécifie les valeurs de paramètre des attributs de réseau possédant des paramètres. Le jeu d’enregistrements comporte deux colonnes qui permettent d’identifier les paramètres de manière unique et une autre colonne qui spécifie la valeur du paramètre.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

Le jeu d'enregistrements des valeurs de paramètre est associé à des attributs. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

AttributeName :

Nom de l'attribut de réseau dont le paramètre d'attribut est défini par la ligne de table.

ParameterName :

Nom du paramètre d'attribut dont la valeur est définie par la ligne de table. (Les paramètres de type Objet ne peuvent pas être mis à jour à l’aide de cet outil.)

ParameterValue :

Valeur à utiliser pour le paramètre d'attribut. Si aucune valeur n'est spécifiée, le paramètre d'attribut est défini comme étant Null.

Record Set
Tolérance de capture maximale
(Facultatif)

La tolérance de capture maximale spécifie la distance maximale recherchée par Network Analyst pour placer ou replacer un point sur le réseau. Network Analyst recherche des tronçons ou jonctions appropriés et capture le point sur l'élément le plus proche. Si aucun emplacement approprié n'est trouvé dans la tolérance de capture maximale, l'objet est marqué comme étant non localisé.

Linear Unit
Exclure les portions restreintes du réseau
(Facultatif)

Indique où sont placées les localisations de réseau.

  • Activé : les localisations de réseau sont placées uniquement sur les parties traversables du réseau. Ainsi, vous ne risquez pas de placer des localisations de réseau sur des éléments impossibles à atteindre du fait de restrictions ou d’interruptions. Avant d’ajouter vos localisations de réseau à l’aide de cette option, assurez-vous que vous avez déjà ajouté toutes les interruptions de restriction à la couche d’analyse de réseau en entrée pour obtenir les résultats escomptés. Cette option n’est pas applicable lors de l’ajout d’objets d’interruption.
  • Désactivé : les localisations de réseau sont placées sur tous les éléments du réseau. Les localisations de réseau ajoutées avec cette option peuvent être inaccessibles pendant le processus de calcul si elles sont placées sur des éléments restreints.
Boolean
Clause WHERE du localisateur d’entités
(Facultatif)

Expression SQL utilisée pour sélectionner un sous-ensemble d’entités source qui limite les éléments de réseau sur lesquels les ordres et les dépôts peuvent être placés. Par exemple, pour éviter que les ordres et les dépôts ne soient placés sur des autoroutes à accès limité, écrivez une expression SQL qui exclut ces entités source. (À noter que les autres objets d’analyse de réseau, comme les interruptions, ignorent la clause WHERE du localisateur d’entités lors du chargement.)

Value Table
Charger les lignes d’itinéraires
(Facultatif)

Spécifie si les lignes affichant la forme réelle des itinéraires seront générées.

  • Activé : les champs Shape des entités d’itinéraire seront remplis de lignes.
  • Désactivé : aucune forme ne sera créée pour les itinéraires en sortie.
Boolean
Tolérance de simplification des lignes de tournées
(Facultatif)

Distance de simplification de la géométrie de l’itinéraire.

La simplification conserve les points critiques sur un itinéraire, comme les virages dans les intersections, pour définir la forme globale de l’itinéraire et supprimer d’autres points. La distance de simplification que vous spécifiez est le décalage maximal autorisé de la ligne simplifiée par rapport à la ligne d’origine. La simplification d’une ligne diminue le nombre de sommets et tend à réduire la durée d’affichage.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

Linear Unit
Charger les feuilles de route
(Facultatif)

Spécifie si les feuilles de route seront générées.

  • Activé : les feuilles de route seront générées. La classe d’entités spécifiée dans le paramètre Output Directions Name (Nom des feuilles de route en sortie) est renseignée avec des instructions tournant par tournant pour chacun des itinéraires. Le jeu de données réseau doit prendre en charge les feuilles de route. Si ce n’est pas le cas, une erreur se produit lors de la résolution à l’aide des feuilles de route.
  • Désactivé : les feuilles de route ne seront pas générées.
Boolean
Langue de la feuille de route
(Facultatif)

Langue dans laquelle les feuilles de route seront générées. Les langues disponibles dans la liste déroulante dépendent des modules linguistiques ArcGIS installés sur votre ordinateur.

Si vous envisagez de publier cet outil dans le cadre d’un service sur un serveur distinct, le module linguistique ArcGIS correspondant à la langue que vous choisissez doit être installé sur ce serveur pour que l’outil fonctionne correctement. De plus, si un module linguistique n’est pas installé sur l’ordinateur, la langue n’apparaît pas dans la liste déroulante. Toutefois, vous pouvez saisir un code de langue à la place.

String
Nom de style de la feuille de route
(Facultatif)

Spécifie le style de mise en forme des feuilles de route.

  • NA BureauFeuille de route tournant par tournant imprimable
  • NA NavigationFeuille de route conçue pour un dispositif de navigation dans un véhicule
  • NA CampusFeuille de route à pied tournant par tournant pour les itinéraires piétons
String
Enregistrer la couche d’analyse de réseau en sortie
(Facultatif)

Indique si la sortie doit inclure une couche d’analyse de réseau des résultats.

  • Activé : la sortie inclut une couche d’analyse de réseau des résultats.
  • Désactivé : la sortie n’inclut pas une couche d’analyse de réseau des résultats.

Dans tous les cas, des classes d’entités et des tables autonomes sont renvoyées. Cependant, un administrateur de serveur peut choisir de générer également une couche d’analyse de réseau pour que la configuration et les résultats de l’outil puissent être débogués à l’aide des commandes de Network Analyst dans l’environnement ArcGIS Desktop. Le processus de débogage peut en être facilité.

Dans ArcGIS Desktop, l’emplacement en sortie par défaut de la couche d’analyse de réseau se trouve dans l’espace de travail temporaire, au même niveau que la géodatabase temporaire. Cela signifie qu’il est stocké en tant qu’élément de même niveau que la géodatabase temporaire. La couche d’analyse de réseau en sortie est stockée en tant que fichier .lyr dont le nom commence par _ags_gpna et est suivi d’un GUID alphanumérique.

Boolean
Fonctionnalités de service
(Facultatif)

Spécifie la charge maximale de traitement de l’ordinateur qui se produit lorsque cet outil est exécuté en tant que service de géotraitement. Vous souhaiterez peut-être le faire pour l’une des deux raisons suivantes : soit pour éviter que votre serveur ne résolve les problèmes, procédure requérant plus de ressources ou de temps de traitement que vous ne voulez en accorder, soit pour créer de multiples services avec différentes capacités VRP pour prendre en charge un modèle d’entreprise. Si, par exemple, vous utilisez un modèle d’entreprise proposant plusieurs niveaux de service, vous pourriez fournir un service de tournées de véhicules gratuit prenant en charge un maximum de cinq tournées par analyse et un autre service payant prenant en charge plus de cinq tournées par analyse.

Outre la possibilité de limiter le nombre maximum de tournées, vous pouvez limiter le nombre d’ordres ou d’interruptions ponctuelles pouvant être ajoutées à l’analyse. Pour résoudre les problèmes de charge, vous pouvez également définir un nombre maximum d’entités, généralement des entités de rues, que les interruptions linéaires ou polygonales peuvent intersecter. Enfin, vous pouvez forcer un calcul hiérarchique, même si l’utilisateur choisit de ne pas utiliser de hiérarchie, lorsque les ordres sont géographiquement dispersés sur une distance en ligne droite donnée.

  • MAXIMUM POINT BARRIERSNombre maximal d’interruptions ponctuelles autorisées. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM FEATURES INTERSECTING LINE BARRIERSNombre maximal d’entités source pouvant être intersectées par toutes les interruptions linéaires dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM FEATURES INTERSECTING POLYGON BARRIERSNombre maximal d’entités source pouvant être intersectées par toutes les interruptions linéaires dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM ORDERSNombre maximal d’ordres autorisés dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM ROUTESNombre maximal d’itinéraires autorisés dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • FORCE HIERARCHY BEYOND DISTANCEDistance en ligne droite maximale entre les ordres avant la résolution de la tournée de véhicules à l’aide de la hiérarchie du réseau. Les unités de cette valeur sont les mêmes que celles spécifiées dans le paramètre Unités du champ de distance.Si le réseau n’a pas d’attribut de hiérarchie, cette contrainte est ignorée. Si l’option Utiliser la hiérarchie lors de l’analyse est activée, la hiérarchie est toujours utilisée. Si le paramètre Use Hierarchy in Analysis (Utiliser la hiérarchie dans l’analyse) n’est pas activé et que cette contrainte a une valeur nulle, la hiérarchie n’est pas appliquée.
  • MAXIMUM ORDERS PER ROUTENombre maximal d’ordres pouvant être assignés à chaque itinéraire. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
Value Table
Ignorer les emplacements dont l’ordre est incorrect
(Facultatif)

Spécifie si les ordres non valides sont ignorés pour le calcul de la tournée de véhicules.

  • Activé : le calcul ignore les ordres non valides et renvoie une solution, s’il n’a rencontré aucune autre erreur. Si vous devez générer des itinéraires et les transmettre immédiatement aux chauffeurs, vous pouvez ignorer les ordres non valides, calculer et distribuer les itinéraires à vos chauffeurs. Résolvez ensuite les ordres non valides du dernier calcul et intégrez-les dans l’analyse VRP pour le prochain jour de travail.
  • Désactivé : le calcul échoue si des ordres non valides sont rencontrés. Un ordre non valide est un ordre que le solveur de tournées de véhicules ne peut pas atteindre. Un ordre peut être inatteignable pour différentes raisons, notamment s’il se trouve sur un élément de réseau interdit, s’il ne figure pas du tout sur le réseau ou s’il se situe sur une portion déconnectée du réseau.

Boolean
Mode de déplacement
(Facultatif)

Choisissez le mode de transport pour l’analyse. Custom (Personnalisé) est toujours proposé. Pour que les autres modes de déplacement apparaissent, ils doivent être présents dans le jeu de données réseau spécifié dans le paramètre Network Dataset (Jeu de données réseau).

Un mode de déplacement est défini sur un jeu de données réseau et offre des valeurs de remplacement des paramètres qui, ensemble, modélisent les voitures, les camions, les piétons et d’autres modes de déplacement. En choisissant ici un mode de déplacement, vous n'avez pas besoin de fournir des valeurs pour les paramètres suivants, qui sont remplacés par les valeurs spécifiées dans le jeu de données réseau :

  • UTurn Policy (Règle de demi-tour)

  • Time Attribute (Attribut de temps)

  • Distance Attribute (Attribut de distance)

  • Use Hierarchy in Analysis (Utiliser la hiérarchie lors de l’analyse)

  • Restrictions

  • Attribute Parameter Values (Valeurs des paramètres d’attributs)

  • Route Line Simplification Tolerance (Tolérance de simplification des lignes de tournées)

  • PersonnaliséeDéfinissez le mode de déplacement qui répond à vos besoins. Lorsque Custom (Personnalisé) est sélectionné, l’outil ne remplace pas les paramètres du mode de déplacement répertoriés ci-dessus. Il s'agit de la valeur par défaut.
String
Ignorer les champs de localisation réseau
(Facultatif)

Indique si les champs de localisation de réseau (SourceID, SourceOID, PosAlong et SideOfEdge) seront pris en compte lors de la localisation d’ordres, de dépôts ou d’interruptions sur le réseau.

  • Activé : les champs de localisation réseau ne seront pas pris en compte lors de la localisation des entrées sur le réseau. À la place, les entrées seront toujours localisées en effectuant une recherche spatiale.
  • Non activé : les champs de localisation de réseau seront pris en compte lors de la localisation des entrées sur le réseau. Il s’agit de la valeur par défaut.
Boolean
Utilisation du fuseau horaire pour les champs temporels
(Facultatif)

Spécifie le fuseau horaire pour les champs date-heure en entrée suivants pris en charge par l’outil : TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, TimeWindowEnd2, InboundArriveTime et OutboundDepartTime pour les ordres ; TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 et TimeWindowEnd2 pour les dépôts ; EarliestStartTime et LatestStartTime pour les itinéraires ; et TimeWindowStart et TimeWindowEnd pour les pauses.

Le fait de spécifier les valeurs date-heure en UTC est utile si vous ne connaissez pas le fuseau horaire dans lequel les ordres ou les dépôts se situent ou si vous avez des ordres ou des dépôts dans plusieurs fuseaux horaires et si vous souhaitez que toutes les valeurs date-heures commencent en simultané. L’option UTC s’applique uniquement lorsque votre jeu de données réseau définit un attribut de fuseau horaire. Sinon, toutes les valeurs de date et d’heure sont toujours traitées en tant que Geo local (GEO_LOCAL dans Python).

  • Geo localLes valeurs date-heure associées aux ordres ou dépôts sont dans le fuseau horaire dans lequel les ordres et les dépôts se trouvent. Pour les itinéraires, les valeurs date-heure sont basées sur le fuseau horaire où se trouve le dépôt de début pour l’itinéraire. Si un itinéraire n’a pas de dépôt de départ, tous les ordres et dépôts de l’ensemble des itinéraires doivent être dans un seul et même fuseau horaire. Pour les interruptions, les valeurs date-heure sont basées sur le fuseau horaire des itinéraires. Si, par exemple, le dépôt se situe dans une zone qui suit l’heure normale de l’est et que ses premières valeurs de fenêtre horaire (spécifiées comme TimeWindowStart1 et TimeWindowEnd1) sont 8 h 00 et 17 h 00 respectivement, les valeurs de fenêtre horaire seront traitées comme 8 h 00 et 17 h 00 dans l’heure normale de l’est.
  • UTCLes valeurs date-heure associées aux ordres ou dépôts sont exprimées selon le temps universel coordonné (UTC) et ne sont pas basées sur le fuseau horaire dans lequel les ordres ou les dépôts se trouvent. Si, par exemple, votre dépôt se situe dans une zone qui suit l’heure normale de l’est et que ses premières valeurs de fenêtre horaire (spécifiées comme TimeWindowStart1 et TimeWindowEnd1) sont 8 h 00 et 17 h 00 respectivement, les valeurs de fenêtre horaire seront traitées comme 12 h 00 et 21 h 00 dans l’heure normale de l’est, en tenant compte de l’heure d’été.
String
Contournements
(Facultatif)

Remarque :

Ce paramètre n’est destiné qu’à un usage interne.

String
Enregistrer les données d’itinéraires
(Facultatif)

Spécifie s’il convient d’enregistrer ou non un fichier .zip contenant une géodatabase fichier qui renferme les entrées et sorties de l’analyse dans un format qui peut servir à partager les couches d’itinéraires avec ArcGIS Online ou ArcGIS Enterprise.

Dans ArcGIS Desktop, l’emplacement en sortie par défaut de ce fichier en sortie se trouve dans le dossier temporaire. Vous pouvez déterminer l’emplacement du dossier temporaire en utilisant arcpy.env.scratchFolder ou en vérifiant l’environnement de géotraitement.

  • Activé : L’outil écrit une archive .zip contenant un espace de travail de géodatabase fichier qui renferme les entrées et sorties de l’analyse.
  • Désactivé : Les données d’itinéraires ne sont pas enregistrées. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Résolution de sortie réussie

Un booléen indique si l’optimisation des tournées de véhicules a réussi.

Boolean
Arrêts non attribués en sortie

Table répertoriant les ordres qu’aucune tournée n’a pu atteindre.

Table
Arrêts en sortie

Table fournissant des informations sur les arrêts aux dépôts, aux ordres et pendant les pauses.

Table
Itinéraires en sortie

Classe d’entités représentant les conducteurs, véhicules et itinéraires d’une tournée de véhicules.

Feature Class
Feuilles de route en sortie

Instructions virage par virage aidant les conducteurs à suivre leurs itinéraires.

Feature Class
Couche d’analyse de réseau en sortie

Couche d’analyse de réseau pour laquelle les propriétés configurées dans les paramètres d’outil peuvent être utilisées à des fins d’analyse ou de débogage dans la carte.

File
Données d’itinéraires en sortie

Fichier .zip contenant toutes les informations sur un itinéraire donné.

File

arcpy.na.SolveVehicleRoutingProblem(orders, depots, routes, breaks, time_units, distance_units, network_dataset, output_workspace_location, output_unassigned_stops_name, output_stops_name, output_routes_name, output_directions_name, {default_date}, {uturn_policy}, {time_window_factor}, {spatially_cluster_routes}, {route_zones}, {route_renewals}, {order_pairs}, {excess_transit_factor}, {point_barriers}, {line_barriers}, {polygon_barriers}, {time_attribute}, {distance_attribute}, {use_hierarchy_in_analysis}, {restrictions}, {attribute_parameter_values}, {maximum_snap_tolerance}, {exclude_restricted_portions_of_the_network}, {feature_locator_where_clause}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {save_output_layer}, {service_capabilities}, {ignore_invalid_order_locations}, {travel_mode}, {ignore_network_location_fields}, {time_zone_usage_for_time_fields}, {overrides}, {save_route_data})
NomExplicationType de données
orders

Ordre que les itinéraires de l’analyse VRP doivent visiter. Un ordre peut représenter une livraison (livraison d’un meuble, par exemple), une collecte (navette d’aéroport collectant un passager, par exemple) ou tout autre type de service ou d’inspection (élagage d’arbres ou inspection d’un bâtiment, par exemple).

Le jeu d’entités d’ordres est associé à une table attributaire. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l’ordre. Le nom doit être unique. Si le nom n’est pas spécifié (champ vide), un nom est automatiquement généré pendant le processus de résolution.

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 le paramètre Unités du champ temporel (time_units dans Python).

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.

Remarque :
  • 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 desserte et partir avant la fin de la fenêtre horaire, vous devez soustraire la valeur du champ ServiceTime de celle du champ TimeWindowEnd1.

  • Les champs de fenêtres horaires peuvent contenir une valeur horaire uniquement ou une valeur de date et d’heure dans un champ de date et ne peuvent pas être exprimés en tant qu’entiers représentant les millisecondes depuis l’heure Epoch. Le fuseau horaire des champs de fenêtres horaires est spécifié à l’aide du paramètre time_zone_usage_for_time_fields. Si un champ temporel tel que TimeWindowStart1 inclut une valeur d’heure uniquement (8 h 00 du matin, par exemple), on suppose que la date est celle spécifiée par la propriété Default Date (Date par défaut) de la couche d’analyse. L’utilisation de valeurs de date et d’heure (par exemple, 11/07/2010 8 h 00) vous permet de définir des fenêtres horaires qui couvrent plusieurs jours.

  • La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

  • 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.

TimeWindowEnd1:

Heure de fin 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 fin.

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.

TimeWindowEnd2:

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

Lorsque TimeWindowStart2 et TimeWindowEnd2 ont tous deux une valeur nulle, il n’existe pas de deuxième fenêtre horaire.

Lorsque TimeWindowStart2 n’a pas de valeur nulle, mais que TimeWindowEnd2 a une valeur nulle, il existe une deuxième fenêtre horaire avec une heure de début mais pas d’heure de fin. Cette situation est valide.

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 indique le retard maximal autorisé ; par exemple, un itinéraire peut arriver jusqu’à 30 minutes après la fin de sa première fenêtre horaire pour un ordre.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

Les violations de fenêtre horaire peuvent être suivies et pondérées par le solveur. Vous pouvez donc faire en sorte que le solveur de tournées de véhicules adopte 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 Importance de la violation des fenêtres horaires (time_window_factor dans Python), vous choisissez de fait l’une de ces trois approches. Dans tous les cas, 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.

InboundArriveTime:

Définit le moment où l'élément à livrer à l'ordre sera prêt au dépôt de départ.

L'ordre peut être attribué à un itinéraire uniquement si l'heure d'arrivée entrante précède la valeur de la dernière heure de départ de l'itinéraire. Ainsi, l'itinéraire ne peut pas quitter le dépôt avant que l'élément ne soit prêt à y être chargé.

Ce champ permet de modéliser des scénarios qui impliquent des transbordements entrants. Par exemple, supposons qu'une tâche d'un ordre nécessite des matériaux spéciaux qui ne sont actuellement pas disponibles au dépôt. Les matériaux sont expédiés d’un autre emplacement et arriveront au dépôt à 11 h 00. Pour veiller à ce qu'aucun itinéraire sortant ne soit affecté à l'ordre avant l’arrivée de la livraison, l’heure d’arrivée entrante de l’ordre est fixée à 11 h 00. Les matériaux spéciaux arrivent à 11 h 00, ils sont chargés sur le véhicule, et le véhicule quitte le dépôt pour visiter les ordres qui lui sont affectés.

Remarque :

  • L'heure de départ de l'itinéraire, qui inclut la durée de desserte, doit suivre l'heure d'arrivée entrante. Si un itinéraire commence avant l'heure d'arrivée entrante d'un ordre, ce dernier ne peut pas être attribué à l'itinéraire. L'attribution est incorrecte même si l'itinéraire a une durée de desserte au dépôt de départ qui dépasse l'heure d'arrivée entrante.

  • Ce champ temporel peut contenir une valeur d'heure uniquement ou une valeur de date et d'heure. Si une valeur d'heure uniquement est définie (par exemple, 11:00 AM), la date est censée être celle spécifiée par la propriété Date par défaut de la couche d'analyse. La date par défaut est toutefois ignorée lorsqu'un champ temporel Dépôts, Itinéraires, Ordres ou Interruptions inclut une date avec l'heure. Dans ce cas, renseignez tous ces champs avec une date et une heure (par exemple, 7/11/2015 11:00 AM).

  • Le solveur VRP respecte InboundArriveTime, quelle que soit la valeur DeliveryQuantities.

  • Si une heure de départ sortante est également précisée, sa valeur temporelle doit suivre l'heure d'arrivée entrante.

  • Le solveur de tournées de véhicules n’est pas conçu pour résoudre les problèmes sur plus d’un an. Par conséquent toutes les durées de desserte et fenêtres horaires doivent être inférieures à une année.

OutboundDepartTime:

Définit le moment où l'élément à collecter à l'ordre doit arriver au dépôt d'arrivée.

L'ordre peut être attribué à un itinéraire uniquement si l'itinéraire peut parvenir à l'ordre et atteindre son dépôt final avant l'heure de départ sortante spécifiée.

Ce champ permet de modéliser des scénarios qui impliquent des transbordements sortants. Par exemple, une société de transport envoie des camions de livraison pour collecter des colis aux différents ordres et les ramener dans un dépôt où ils sont transférés vers d'autres ressources, en route vers leur destination finale. A 15 h 00 chaque jour, un semi-remorque s'arrête au dépôt pour collecter les colis hautement prioritaires et les emmener directement dans un centre de traitement. Pour éviter que les colis hautement prioritaires ne soient retardés et doivent attendre jusqu'à 15 h 00 le jour suivant, la société de transport envoie des camions de livraison collecter les colis hautement prioritaires aux ordres et pour les amener au dépôt avant 15 h 00. Pour ce faire, l'heure de départ sortante doit être réglée sur 15 h 00.

Remarque :
  • L'heure d'arrivée de l'itinéraire, notamment la durée de desserte, doit précéder l'heure de départ sortante. Si un itinéraire parvient à un dépôt, mais qu'elle ne termine pas sa durée de desserte au dépôt final avant l'heure de départ sortante de l'ordre, l'ordre ne peut pas être attribué à l'itinéraire.

  • Ce champ temporel peut contenir une valeur d'heure uniquement ou une valeur de date et d'heure. Si une valeur d'heure uniquement est définie (par exemple, 11:00 AM), la date est censée être celle spécifiée par la propriété Date par défaut de la couche d'analyse. La date par défaut est toutefois ignorée lorsqu'un champ temporel Dépôts, Itinéraires, Ordres ou Interruptions inclut une date avec l'heure. Dans ce cas, renseignez tous ces champs avec une date et une heure (par exemple, 7/11/2015 11:00 AM).

  • Le solveur VRP respecte OutboundDepartTime, quelle que soit la valeur PickupQuantities.

  • Si une heure d'arrivée entrante est également précisée, sa valeur temporelle doit précéder l'heure de départ sortante.

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.

Entrez les quantités de livraison sans préciser d’unités. Par exemple, si un objet pesant 150 kilos doit être livré à un ordre, entrez 150. Vous devez vous souvenir que la valeur est exprimée en kilos.

Si vous effectuez le suivi de plusieurs dimensions, séparez chaque valeur numérique par un espace. Par exemple, si vous enregistrez le poids et le volume d’une livraison de 1 000 kilos et 3 mètres cube, respectivement, entrez 1000 3. Là encore, vous devez vous souvenir des unités utilisées, à savoir les kilos et les mètres cube dans ce cas. Vous devez également mémoriser l’ordre dans lequel vous saisissez les valeurs et leurs unités correspondantes.

Veillez à ce que Capacities pour Routes (Itinéraires) et DeliveryQuantities et PickupQuantities pour Orders (Ordres) soient spécifiés de la même manière : les valeurs doivent être exprimées dans les mêmes unités et, si vous utilisez plusieurs dimensions, ces dernières doivent être répertoriées dans la même séquence pour tous les paramètres. Ainsi, si vous spécifiez le poids en kilos, puis le volume en mètres cubes pour DeliveryQuantities, la capacité de vos itinéraires et les quantités d’enlèvement de vos ordres doivent être spécifiées de la même manière, à savoir le poids en kilos et le volume en mètres cubes. Si vous combinez des unités ou modifiez l'ordre, des résultats indésirables se produiront sans que vous en ayez été averti.

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 Orders (Ordres).

Remarque :
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. En d’autres termes, le champ TotalCost dans la classe d’itinéraires n’inclut jamais le chiffre d’affaires dans sa sortie ; cependant, le chiffre d’affaires pondère l’importance relative du traitement des ordres.

SpecialtyNames:

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

L’orthographe des particularités répertoriées dans les classes Ordres et Itinéraires doit correspondre exactement pour que le solveur de tournées de véhicules puisse les associer entre elles.

Pour décrire les particularités et leur fonctionnement, prenons l'exemple d'une société d'entretien des pelouses et d'élagage dont une partie de ses ordres nécessite l'usage d'un camion nacelle pour élaguer les grands arbres. L'entreprise saisit CamionNacelle dans le champ SpecialtyNames de ces ordres pour indiquer leur besoin spécifique. SpecialtyNames n’est pas renseigné pour les autres ordres. De la même manière, l’entreprise saisit également CamionNacelle dans le champ SpecialtyNames des itinéraires empruntés par des camions munis de flèches hydrauliques. Le champ n'est pas renseigné pour les autres itinéraires. Lors de l'analyse, le solveur de tournées de véhicules attribue des ordres sans besoin spécifique à n'importe quel itinéraire, mais il attribue les ordres nécessitant des camions nacelle uniquement aux itinéraires empruntés par ces derniers.

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).

  • Exclude (Exclure) (0) : l’ordre est exclu de l’opération de calcul qui s’ensuit.
  • Preserve route and relative sequence (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). Pour illustrer cela, prenons deux ordres, A et B. Leur valeur de séquence respective est 2 et 3. Si vous définissez les valeurs du champ AssignmentRule sur Preserve route and relative sequence (Conserver la tournée et la séquence définie), les valeurs de séquence réelles de A et B peuvent changer après la résolution, 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.

  • Preserve route (Conserver la tournée) (2) : le solveur doit toujours attribuer l’ordre à l’itinéraire préattribué lors de l’opération de 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.
  • Override (Déroger) (4) : le solveur ignore l’itinéraire et la séquence prédéfinis (le cas échéant) pour l’ordre lors de l’opération de calcul. Il attribue un itinéraire et une séquence à l'ordre afin de limiter la valeur globale de la fonction objective. Il s'agit de la valeur par défaut.
  • Anchor first (Premier ancrage) (4) : le solveur ignore l’itinéraire et la séquence prédéfinis (le cas échéant) pour l’ordre lors de l’opération de calcul. Il attribue un itinéraire à l'ordre qu'il place en premier sur cet itinéraire, afin de limiter la valeur globale de la fonction objective.
  • Anchor last (Dernier ancrage) (5) : le solveur ignore l’itinéraire et la séquence prédéfinis (le cas échéant) pour l’ordre lors de l’opération de calcul. Il attribue un itinéraire à l'ordre qu'il place en dernier sur cet itinéraire, afin de limiter la valeur globale de la fonction objective.

Ce champ ne peut pas contenir une valeur Null.

CurbApproach:

La propriété CurbApproach spécifie la direction d’un véhicule lorsqu’il approche ou quitte la localisation réseau. Il existe quatre choix différents (leurs valeurs précodées sont affichées entre parenthèses) :

  • Either side of vehicle (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.
  • Right side of vehicle (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.
  • Left side of vehicle (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.
  • No U-Turn (Pas de demi-tour) (3) - Lorsque le véhicule s’approche de l’arrêt, le trottoir peut être d’un côté quelconque du véhicule ; en revanche, le véhicule doit partir sans faire demi-tour.

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.

Après une opération de résolution, si l’ordre est acheminé, le champ RouteName contient le nom de l’itinéraire auquel l’ordre est affecté.

Sequence:

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 nulle peut se produire seulement avec une valeur RouteName nulle.

Les valeurs de séquence en entrée sont non négatives et uniques pour chaque itinéraire (partagé par les passages aux dépôts, les ordres et les pauses), mais elles ne doivent pas commencer à 0 ou être contiguës.

Après une opération de résolution, le champ Sequence contient la valeur de séquence de l’ordre sur itinéraire qui lui est affecté. 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 de 2, car une tournée commence toujours à un dépôt.

Feature Set
depots

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 véhicules sont chargés (en cas de livraison) ou déchargés (en cas de collecte) aux dépôts en début de tournée. 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.

Le jeu d’entités des dépôts est associé à une table attributaire. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom du dépôt. Les champs StartDepotName et EndDepotName du jeu d’enregistrements des itinéraires font référence aux noms que vous spécifiez ici. Le dépôt est également référencé par le jeu d’enregistrements de relais de tournée lorsqu’il est utilisé.

Les noms de dépôts ne respectent pas la casse ; ils doivent être non vides et uniques.

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.

Remarque :
  • 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 temporel inclut une valeur d’heure uniquement (8 h 00 du matin, par exemple), on suppose que la date est celle spécifiée par le paramètre Default Date (Date par défaut) de la couche d’analyse. L’utilisation de valeurs de date et d’heure (par exemple, 11/07/2010 8 h 00) vous permet de définir des fenêtres horaires qui couvrent plusieurs jours.

  • La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

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

TimeWindowEnd1:

Heure de fin 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 fin.

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.

TimeWindowEnd2:

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

Lorsque TimeWindowStart2 et TimeWindowEnd2 ont tous deux une valeur nulle, il n’existe pas de deuxième fenêtre horaire.

Lorsque TimeWindowStart2 n’a pas de valeur nulle, mais que TimeWindowEnd2 a une valeur nulle, il existe une deuxième fenêtre horaire avec une heure de début mais pas d’heure de fin. Cette situation est valide.

CurbApproach:

La propriété CurbApproach spécifie la direction d’un véhicule lorsqu’il approche ou quitte la localisation réseau. Il existe quatre choix différents (leurs valeurs précodées sont affichées entre parenthèses) :

  • Either side of vehicle (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.
  • Right side of vehicle (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.
  • Left side of vehicle (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.
  • No U-Turn (Pas de demi-tour) (3) - Lorsque le véhicule s’approche de l’arrêt, le trottoir peut être d’un côté quelconque du véhicule ; en revanche, le véhicule doit partir sans faire demi-tour.

Bearing:

Direction de déplacement d'un point. Les unités sont exprimées en degrés et sont mesurées dans le sens horaire, à partir du nord vrai. Ce champ est utilisé avec le champ BearingTol.

En règle générale, les données de relèvement sont automatiquement envoyées à partir d'un périphérique mobile équipé d'un récepteur GPS. Essayez d'inclure des données de relèvement si vous chargez un ordre qui se déplace, par exemple un piéton ou un véhicule.

L'utilisation de ce champ vous évite d'ajouter des emplacements sur des tronçons incorrects, par exemple lorsqu'un véhicule se rapproche d'une intersection ou d'un passage supérieur. Le relèvement permet également à Network Analyst de déterminer plus facilement quel côté de la rue se trouve le point.

Pour plus d'informations, reportez-vous à la rubrique Relèvement et BearingTol.

BearingTol:

La valeur de tolérance de relèvement crée une plage de valeurs de relèvement acceptables lors de la localisation de points qui se déplacent sur un tronçon à l’aide du champ Bearing. Si la valeur du champ Bearing est comprise dans la plage de valeurs acceptables générée à partir de la tolérance de relèvement sur un tronçon, le point peut être ajouté à cet endroit en tant que localisation réseau. Sinon, le point le plus proche sur le prochain tronçon le plus proche est évalué.

Les unités sont exprimées en degrés et la valeur par défaut est 30. Les valeurs doivent être supérieures à zéro et inférieures à 180.

Si la valeur est égale à 30 lorsque Network Analyst essaie d’ajouter une localisation réseau sur un tronçon, une plage de valeurs de relèvement acceptables est générée à 15º de chaque côté du tronçon (gauche et droite) et dans les deux directions numérisées du tronçon.

Pour plus d'informations, reportez-vous à la rubrique Relèvement et BearingTol.

NavLatency:

Ce champ n’est utilisé au cours du processus de calcul que si les champs Bearing et BearingTol contiennent également des valeurs ; toutefois, vous n’êtes pas obligé d’entrer une valeur NavLatency, même si les champs Bearing et BearingTol sont renseignés. NavLatency indique le temps censé s’écouler entre le moment où un véhicule se déplaçant envoie des informations GPS à un serveur et le moment où le dispositif de navigation du véhicule reçoit l’itinéraire traité. Les unités de temps du champ NavLatency sont identiques à celles de l’attribut de coût spécifiées par le paramètre Attribut de temps.

Feature Set
routes

Itinéraires disponibles pour la tournée de véhicules spécifiée. Un itinéraire spécifie les caractéristiques des véhicules et des chauffeurs et représente également le chemin entre les dépôts et les ordres une fois l’analyse terminée.

Un itinéraire peut être défini par des temps de service aux dépôts initial et final, une heure de début fixe ou souple, des coûts opérationnels basés sur le temps ou sur la distances, de nombreuses capacités, diverses contraintes sur la journée de travail d’un chauffeur, etc.

Le jeu d’enregistrements des itinéraires comporte plusieurs attributs. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

Name:

Nom de l’itinéraire. Le nom doit être unique.

Network Analyst génère un nom unique au moment du calcul si cette valeur de champ est nulle. Par conséquent, la saisie d’une valeur est facultative dans la plupart des cas. Toutefois, vous devez obligatoirement entrer un nom si votre analyse inclut des pauses, des relais de tournée, des zones de tournée ou des ordres qui sont préattribués à un itinéraire, car le nom de l’itinéraire est utilisé comme clé étrangère dans ces circonstances. Les noms d’itinéraires ne respectent pas la casse.

StartDepotName:

Nom du dépôt initial de l’itinéraire. Ce champ est une clé étrangère du champ Name dans Depots.

Si la valeur de StartDepotName est nulle, 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 nulle, celle de EndDepotName ne peut pas être nulle.

Les dépôts de départ virtuels ne sont pas autorisés si les ordres ou les dépôts se situent dans plusieurs fuseaux horaires.

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 de DeliveryQuantities sont différentes de zéro dans la classe Orders [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 Name du paramètre Dépôts.

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 le paramètre Unités du champ temporel (time_units dans Python).

Remarque :

Les durées de traitement aux dépôts initial et final sont des valeurs fixes (fournies par les valeurs des 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 le paramètre Unités du champ temporel (time_units dans Python).

Remarque :

Les durées de traitement aux dépôts initial et final sont des valeurs fixes (fournies par les valeurs des 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 valeurs nulles et affiche par défaut une valeur horaire égale à 8 h 00. Cette valeur par défaut est interprétée comme 8 h 00 à la date fournie par le paramètre Date par défaut) (default_date dans Python).

La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

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 valeurs Null et affiche par défaut une valeur horaire de 10:00. 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 traiter 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 coïncident, la valeur de 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 de ArriveDepartDelaypour les 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 très haute tour, 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 chacun une place 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 le paramètre Unités du champ temporel (time_units dans Python).

Capacities:

Capacité maximale du véhicule. Vous pouvez spécifier une capacité de n’importe quelle dimension, comme le poids, le volume ou la quantité. Vous pouvez même spécifier plusieurs dimensions, par exemple le poids et le volume.

Entrez les capacités sans préciser d’unités. Par exemple, si votre véhicule peut transporter 20 000 kilos, entrez 20000. Vous devez vous souvenir que la valeur est exprimée en kilos.

Si vous effectuez le suivi de plusieurs dimensions, séparez chaque valeur numérique par un espace. Si, par exemple, vous enregistrez le poids et le volume et que votre véhicule peut transporter un poids de 20 000 kilos et un volume de 56 mètres cube, le champ Capacities doit être défini sur 20000 56. Là encore, vous devez vous souvenir des unités utilisées. Vous devez également mémoriser l’ordre dans lequel vous saisissez les valeurs et leurs unités correspondantes (kilos suivis de mètres cube dans ce cas).

Il est important de mémoriser les unités et l’ordre dans lequel vous les saisissez pour deux raisons : d’abord pour pouvoir réinterpréter les informations ultérieurement, ensuite pour entrer correctement les valeurs dans les champs DeliveryQuantities et PickupQuantities de la classe Ordres. En ce qui concerne le deuxième point, notez que le solveur de tournées de véhicules traite simultanément les champs Capacities, DeliveryQuantities et PickupQuantities pour éviter toute surcharge. Comme aucune unité ne peut être entrée dans le champ, Network Analyst ne peut pas effectuer de conversions. Par conséquent, vous devez entrer les valeurs des trois champs en utilisant les mêmes unités et en respectant le même ordre afin que les valeurs soient correctement interprétées. Si vous combinez des unités ou modifiez l’ordre dans l’un des trois champs, des résultats indésirables se produiront sans que vous en soyez averti. Nous vous conseillons donc de prédéfinir des unités et l’ordre dans lequel les saisir pour pouvoir vous y référer à tout moment lorsque vous entrez des valeurs dans ces trois champs.

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 aux champs DeliveryQuantities ou PickupQuantities de la classe des ordres, les valeurs restantes sont traitées comme étant égales à zéro.

Attention :

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.

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 le paramètre Unités du champ temporel (time_units dans Python).

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é pour la valeur de ce champ est spécifiée par le paramètre Distance Field Units (Unités du champ de distance) (distance_units pour Python).

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 le paramètre Unités du champ temporel (time_units dans Python).

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 480 (8 heures * 60 minutes/heure), puisque le paramètre Unités du champ temporel est défini sur Minutes.

CostPerUnitOvertime:

Coût monétaire encouru par unité de temps d'heures supplémentaires. Ce champ peut contenir uniquement une valeur nulle si OvertimeStartTime a également une valeur nulle. Sinon, sa valeur doit être positive et supérieure à 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 le paramètre Unités du champ temporel (time_units dans Python).

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.

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 à celle du champ MaxTotalTime.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

MaxTotalDistance:

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

L’unité pour la valeur de ce champ est spécifiée par le paramètre Distance Field Units (Unités du champ de distance) (distance_units pour Python).

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.

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 aucune particularité en charge.

Ce champ est une clé étrangère du champ SpecialtyNames du paramètre Ordres.

Pour décrire les particularités et leur fonctionnement, prenons l'exemple d'une société d'entretien des pelouses et d'élagage dont une partie de ses ordres nécessite l'usage d'un camion nacelle pour élaguer les grands arbres. L'entreprise saisit CamionNacelle dans le champ SpecialtyNames de ces ordres pour indiquer leur besoin spécifique. SpecialtyNames n’est pas renseigné pour les autres ordres. De la même manière, l’entreprise saisit également CamionNacelle dans le champ SpecialtyNames des itinéraires empruntés par des camions munis de flèches hydrauliques. Le champ n'est pas renseigné pour les autres itinéraires. Lors de l'analyse, le solveur de tournées de véhicules attribue des ordres sans besoin spécifique à n'importe quel itinéraire, mais il attribue les ordres nécessitant des camions nacelle uniquement aux itinéraires empruntés par ces derniers.

AssignmentRule:

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

  • Include (Inclure) - L’itinéraire est inclus dans l’opération de calcul. Il s'agit de la valeur par défaut.
  • Exclude (Exclure) : l’itinéraire est exclu de l’opération de calcul.

Record Set
breaks

Périodes de repos, ou pauses, pour les itinéraires d’une tournée de véhicules spécifiée. 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 utilisant une fenêtre horaire, un temps de trajet maximal ou un temps de travail maximal.

Le jeu d’enregistrements des pauses comporte des attributs associés. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

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 vis-à-vis du champ Name de la classe Routes (Itinéraires), ne peut pas contenir de valeur nulle.

Precedence:

Les valeurs de Precedence permettent de classer les pauses d'un itinéraire donné. Les pauses ayant une valeur de priorité de 1 interviennent avant celles dont la valeur est 2, et ainsi de suite.

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 ne peut pas contenir de valeur nulles et sa valeur par défaut est 60.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

TimeWindowStart:

Heure de début de la fenêtre horaire de la pause. Les fenêtres horaires partiellement ouvertes ne sont pas valides pour les pauses.

Si ce champ contient une valeur, MaxTravelTimeBetweenBreaks et MaxCumulWorkTime doivent avoir une valeur nulle ; de plus, la valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit ê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 dans les interruptions peuvent contenir une valeur horaire uniquement ou une valeur de date et d’heure dans un champ de date et ne peuvent pas être exprimés en tant qu’entiers représentant les millisecondes depuis l’heure Epoch. Le fuseau horaire des champs de fenêtres horaires est spécifié à l’aide du paramètre time_zone_usage_for_time_fields. Si un champ temporel, tel que TimeWindowStart, contient une valeur d’heure uniquement (24 h 00, par exemple), on suppose que la date est celle spécifiée par le paramètre Date par défaut) (default_date dans Python). L’utilisation de valeurs de date et d’heure (le 11/07/2012 à 24 h 00, par exemple) vous permet de spécifier des fenêtres horaires qui couvrent deux jours ou plus. Cela s’avère utile lorsqu’une pause doit être prise avant et après minuit.

La date par défaut est ignorée lorsqu'un champ de fenêtre horaire inclut une date avec l'heure. Pour éviter toute erreur dans ce cas, configurez toutes les fenêtres horaires des Dépôts, Itinéraires, Ordres et Pauses pour qu'elles comprennent également la date avec l'heure.

TimeWindowEnd:

Heure de fin de la fenêtre horaire de la pause. Les fenêtres horaires partiellement ouvertes ne sont pas valides pour les pauses.

Si ce champ contient une valeur, MaxTravelTimeBetweenBreaks et MaxCumulWorkTime doivent avoir une valeur nulle ; de plus, la valeur de MaxTravelTimeBetweenBreaks et de MaxCumulWorkTime doit être nulle pour toutes les autres pauses 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 spécifie 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é selon le paramètre Importance de la violation des fenêtres horaires) (time_window_factor dans Python).

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

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

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.

Ce champ est conçu pour limiter le temps de conduite d’une personne avant une pause. Si, par exemple, le paramètre Unités du champ temporel) (time_units dans Python) de l’analyse est défini sur Minutes et que MaxTravelTimeBetweenBreaks a pour valeur 120, le chauffeur peut prendre une pause au bout de deux heures de conduite. Pour affecter une deuxième pause après deux autres heures de conduite, le champ MaxTravelTimeBetweenBreaks de cette deuxième pause doit avoir pour valeur 120.

Si ce champ comporte une valeur, la valeur de TimeWindowStart, TimeWindowEnd, MaxViolationTime et MaxCumulWorkTime doit être nulle pour que la résolution d’une analyse aboutisse.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

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 d’attente d’un ordre ou à un dépôt d’un itinéraire (ou d’un chauffeur) avant le début d’une fenêtre horaire.

Ce champ est conçu pour limiter le temps de travail d’une personne avant une pause. Si, par exemple, le paramètre Unités du champ temporel) (time_units dans Python) est défini sur Minutes et que MaxCumulWorkTime a pour valeur 120 et ServiceTime 15, le chauffeur peut 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, il convient ici d’affecter 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 comporte une valeur, la valeur de TimeWindowStart, TimeWindowEnd, MaxViolationTime et MaxTravelTimeBetweenBreaks doit être nulle pour que la résolution d’une analyse aboutisse.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ temporel (time_units dans Python).

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.

Sequence:

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 ou 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.

Record Set
time_units

Spécifie les unités de temps pour toutes les valeurs de champ basées sur le temps dans l’analyse.

  • SecondsSecondes
  • MinutesMinutes
  • HoursHeures
  • DaysJours

Nombre d’entités et d’enregistrements d’une analyse VRP ont des champs qui permettent de stocker des valeurs de temps, comme ServiceTime pour les ordres et CostPerUnitTime pour les itinéraires. Pour optimiser la saisie des données, ces valeurs de champ n’incluent pas d’unités. Toutes les valeurs de champ basées sur une distance doivent être entrées dans les mêmes unités, et ce paramètre sert à spécifier les unités de ces valeurs.

Notez que les champs temporels en sortie utilisent les mêmes unités que celles spécifiées par ce paramètre.

Cette unité de temps ne doit pas nécessairement correspondre à celle du paramètre Attribut de temps réseau (time_attribute dans Python).

String
distance_units

Spécifie les unités de distance pour toutes les valeurs de champ basées sur une distance dans l’analyse.

  • MilesMiles
  • KilometersKilomètres
  • FeetPieds
  • YardsYards
  • MetersMètres
  • NauticalMilesMilles nautiques

Nombre d’entités et d’enregistrements d’une analyse VRP ont des champs qui permettent de stocker des valeurs de distance, comme MaxTotalDistance et CostPerUnitDistance pour les itinéraires. Pour optimiser la saisie des données, ces valeurs de champ n’incluent pas d’unités. Toutes les valeurs de champ basées sur une distance doivent être entrées dans les mêmes unités, et ce paramètre sert à spécifier les unités de ces valeurs.

Notez que les champs de distance en sortie utilisent les mêmes unités que celles spécifiées par ce paramètre.

Cette unité de distance ne doit pas nécessairement correspondre à celle du paramètre Attribut de distance réseau (distance attribute dans Python).

String
network_dataset

Le jeu de données réseau sur lequel l’analyse de la tournée de véhicules est effectuée. Le jeu de données réseau doit avoir un attribut de coût basé sur le temps puisque le solveur de tournées de véhicules réduit le temps.

Network Dataset Layer
output_workspace_location

Géodatabase fichier ou espace de travail temporaire où seront créées les classes d’entités en sortie. Cet espace de travail doit déjà exister. L’espace de travail en sortie par défaut est temporaire.

Workspace
output_unassigned_stops_name

Nom du champ ajouté à la classe d’entités en sortie qui contient les dépôts inaccessibles ou les ordres non attribués.

String
output_stops_name

Nom de la classe d’entités qui contiendra les arrêts visités par les itinéraires. Cette classe d’entités inclut les arrêts aux dépôts, aux ordres et pendant les pauses.

String
output_routes_name

Nom de la classe d’entités qui contiendra les itinéraires de l’analyse.

String
output_directions_name

Nom de la classe d’entités qui contiendra les feuilles de route pour les itinéraires.

String
default_date
(Facultatif)

Date par défaut pour les valeurs de champs temporels qui spécifient un heure de la journée sans inclure de date.

Date
uturn_policy
(Facultatif)

Spécifie la règle de demi-tour qui sera utilisée aux jonctions. L’autorisation des demi-tours implique que le solveur puisse faire demi-tour au niveau d’une jonction et revenir en arrière par la même rue. Étant donné que les jonctions représentent des intersections de rues et des voies sans issue, différents véhicules peuvent être en mesure de faire demi-tour à certaines jonctions mais pas à d’autres – selon que la jonction représente une intersection ou une voie sans issue. Pour en tenir compte, le paramètre de règle de demi-tour est spécifié implicitement par le nombre de tronçons connectés à la jonction, également connu sous le nom de « valence de jonction ». Les valeurs acceptables pour ce paramètre sont répertoriées ci-dessous ; chacune est suivie d'une description de sa signification en termes de valence de jonction.

  • ALLOW_UTURNSLes demi-tours sont autorisés aux jonctions comportant un nombre quelconque de tronçons connectés. Il s’agit de la valeur par défaut.
  • NO_UTURNSLes demi-tours sont interdits à toutes les jonctions, indépendamment de la valence de jonction. Les demi-tours restent toutefois autorisés aux localisations de réseau même lorsque ce paramètre est sélectionné ; vous pouvez cependant configurer la propriété CurbApproach de chaque localisation de réseau pour y interdire les demi-tours.
  • ALLOW_DEAD_ENDS_ONLYLes demi-tours sont interdits au niveau de toutes les jonctions, sauf celles ayant un seul tronçon adjacent (voie sans issue).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYLes demi-tours sont interdits au niveau des jonctions où exactement deux tronçons adjacents se rencontrent mais sont autorisés au niveau des intersections (jonctions ayant trois tronçons adjacents ou plus) et des voies sans issue (jonctions comportant exactement un tronçon adjacent). Souvent, les réseaux comportent des jonctions superflues au milieu de segments de route. Cette option empêche des véhicules de faire des demi-tours à ces emplacements.

Si la définition de votre règle de demi-tour n’est pas suffisamment précise, envisagez d’ajouter un évaluateur de délai de tournant global à un attribut de coût de réseau ou de modifier ses paramètres, le cas échéant, en veillant tout particulièrement à la configuration des tournants inversés. Vous pouvez également définir la propriété CurbApproach de vos localisations de réseau.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
time_window_factor
(Facultatif)

Spécifie l’importance de respecter les fenêtres horaires. Les trois options proposées sont décrites ci-dessous.

  • LowAccorde plus d’importance à la réduction du temps de conduite qu’au respect de l’heure d’arrivée aux arrêts. 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 ce paramètre, même si les clients risquent d’être gênés par votre arrivée tardive.
  • MediumAccorde autant d’importance à la réduction du temps de conduite qu’au respect de l’arrivée dans la fenêtre horaire définie. Il s’agit de la valeur par défaut.
  • HighAccorde plus d’importance au respect de l’heure d’arrivée aux arrêts qu’à la réduction du temps de conduite. Les organisations qui doivent impérativement respecter l’heure de livraison ou qui placent le service clientèle au rang de leurs principales préoccupations doivent choisir ce paramètre.
String
spatially_cluster_routes
(Facultatif)

Indique si l’agrégation spatiale doit être utilisée.

  • CLUSTERLes ordres affectés à un itinéraire individuel sont agrégés spatialement. L’agrégation des ordres permet de regrouper les itinéraires dans des zones plus petites et de réduire le nombre d’intersections entre lignes d’itinéraires, mais elle peut augmenter le temps de trajet total. Il s’agit de l’option par défaut.
  • NO_CLUSTERLe solveur ne hiérarchise pas les ordres d’agrégation spatiale et les lignes d’itinéraires peuvent s’intersecter. Utilisez cette option si des zones d’itinéraire sont spécifiées.
Boolean
route_zones
(Facultatif)

Délimite les territoires de travail pour des itinéraires donnés. Une zone de tournée est une entité surfacique utilisée pour contraindre des itinéraires à traiter uniquement les ordres se trouvant dans la zone spécifiée ou s’en approchant. Les exemples suivants sont des cas dans lesquels les zones de tournée 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.

Le jeu d’entités des zones de tournée est associé à une table attributaire. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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 vis-à-vis du champ Name dans la couche d’entités Routes (Itinéraires).

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.

Feature Set
route_renewals
(Facultatif)

Indique les dépôts intermédiaires que les itinéraires peuvent visiter pour recharger ou décharger la cargaison qu’ils livrent ou collectent. Un relais de tournée relie spécifiquement un itinéraire à un dépôt. La relation indique que la tournée peut passer à un relais (pour recharger ou décharger en cours de route) au dépôt associé.

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.

Les règles et options suivantes sont à 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.

Le jeu d’enregistrements des relais de tournée comporte des attributs associés. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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. Il s’agit d’une clé étrangère vis-à-vis du champ Name de la couche d’entités Depots (Dépôts).

RouteName:

Nom de l'itinéraire auquel ce relais s'applique. Ce champ ne peut pas contenir de valeur nulle. Il s’agit d’une clé étrangère vis-à-vis du champ Name dans la couche d’entités Routes (Itinéraires).

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.

Remarque :

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.

Record Set
order_pairs
(Facultatif)

Apparie les ordres de collecte et de livraison pour qu’ils soient traités par la même tournée.

Il est quelquefois nécessaire que la collecte et la livraison des ordres soient appariées. Par exemple, un coursier peut demander à l’un de ses employés de collecter un colis prioritaire d’un ordre pour le livrer à un autre sans retourner au dépôt, ou au centre de tri, afin de minimiser le temps de livraison. Il est possible d’utiliser des paires d’ordres pour attribuer ces ordres associés à la même tournée avec la séquence adéquate. En outre, vous pouvez également attribuer des restrictions pour limiter le temps d’immobilisation du paquet 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.

Le jeu d’enregistrements des paires d’ordres comporte des attributs associés. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

FirstOrderName:

Nom du premier ordre de la paire. Ce champ est une clé étrangère vis-à-vis du champ Name dans la couche d’entités Orders (Ordres).

SecondOrderName:

Nom du second ordre de la paire. Ce champ est une clé étrangère vis-à-vis du champ Name dans la couche d’entités Orders (Ordres).

Le premier ordre du couple doit être un ordre d’enlèvement. Autrement dit, la valeur de son champ DeliveryQuantities est nulle. Le deuxième ordre du couple doit être un ordre de livraison. Autrement dit, 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.

Remarque :

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 l’une des trois solutions suivantes : réduire le temps de transit excessif global, quelle que soit 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 le temps de transit excessif global et réduire à la place le coût de trajet de la flotte. En attribuant un degré d’importance au paramètre Importance du temps de transit excessif) (excess_transit_factor dans Python), vous choisissez de fait l’une de ces trois approches. Quel que soit le niveau d’importance, le solveur renvoie toujours une erreur en cas de dépassement de la valeur MaxTransitTime.

Record Set
excess_transit_factor
(Facultatif)

Spécifie l’importance de la réduction du temps de transit excessif des paires d’ordres. 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. Les pauses des chauffeurs ou les trajets aux ordres et aux dépôts intermédiaires peuvent être à l’origine de ces temps excessifs.

  • LowAccorde plus d’importance à la réduction du coût global de la solution qu’au temps de transit excessif. Ce paramètre est fréquemment utilisé par les services de coursiers privés. Ces sociétés transportant des paquets plutôt que des personnes, elles ne se préoccupent pas du temps de trajet. Ce paramètre permet aux messageries de servir les paires d’ordres dans le bon ordre et de réduire le coût global de la solution.
  • MediumAccorde autant d’importance à la réduction du temps de transit excessif qu’à la réduction du coût global de la solution. Il s’agit de la valeur par défaut.
  • HighAccorde plus d’importance au temps de transit le plus court des ordres associés qu’aux 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.
String
point_barriers
(Facultatif)

Spécifie les interruptions ponctuelles qui sont divisées en deux types : les interruptions ponctuelles de restriction et les interruptions ponctuelles à coût ajouté. Elles restreignent temporairement la traversée de points sur le réseau ou leur ajoutent une impédance. Les interruptions ponctuelles sont définies par un jeu d'entités, et les valeurs attributaires que vous spécifiez pour les entités ponctuelles déterminent s'il s'agit d'interruptions de restriction ou d'interruptions à coût ajouté. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l'interruption.

BarrierType :

Spécifie si l'interruption restreint entièrement le trajet ou ajoute un coût de parcours correspondant. Deux options sont disponibles :

  • Restriction (0) : interdit le passage à travers l'interruption. Il s'agit de la valeur par défaut.
  • Coût ajouté (2) : lorsque l’interruption est traversée, le coût du réseau augmente de la valeur spécifiée dans les champs Additional_Time et Additional_Distance.

Additional_Time :

Si BarrierType est défini sur le coût ajouté, la valeur du champ Additional_Time indique le temps qui est ajouté à un itinéraire lorsqu’il passe par l’interruption.

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

Additional_Distance :

Si BarrierType est défini sur le coût ajouté, la valeur du champ Additional_Distance indique l’impédance qui est ajoutée à un itinéraire lorsqu’il passe par l’interruption.

L'unité de cette valeur de champ est spécifiée par le paramètre Unités du champ de distance.

Feature Set
line_barriers
(Facultatif)

Spécifie les interruptions linéaires qui restreignent temporairement leur passage. Les interruptions linéaires sont définies par un jeu d'entités. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l'interruption.

Feature Set
polygon_barriers
(Facultatif)

Spécifie les interruptions polygonales qui sont divisées en deux types : les interruptions polygonales de restriction et les interruptions polygonales à coût proportionné. Elles restreignent temporairement la traversée des parties du réseau qu'elles couvrent ou proportionnent leur impédance. Les interruptions polygonales sont définies par un jeu d'entités, et les valeurs attributaires que vous spécifiez pour les entités surfaciques déterminent s'il s'agit d'interruptions de restriction ou d'interruptions à coût proportionné. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

Shape:

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

Name:

Nom de l'interruption.

BarrierType :

Spécifie si la barrière restreint entièrement le trajet ou proportionne son coût de parcours correspondant. Deux options sont disponibles :

  • Restriction (0) - Interdit le parcours à travers toute partie de la barrière. Il s'agit de la valeur par défaut.
  • Coût proportionné (1) - Proportionne l'impédance des tronçons sous-jacents en les multipliant par la valeur de la propriété Attr_[Impédance]. Si les tronçons sont partiellement couverts par la barrière, l'impédance est répartie et multipliée.

Scaled_Time :

Les valeurs d'impédance basées sur le temps des tronçons sous-jacents à l'interruption sont multipliées par la valeur définie dans ce champ. Ce champ n'est pertinent qu'en présence d'une interruption de coût proportionné.

Scaled_Distance :

Les valeurs d'impédance basées sur la distance des tronçons sous-jacents à l'interruption sont multipliées par la valeur définie dans ce champ. Ce champ n'est pertinent qu'en présence d'une interruption de coût proportionné.

Feature Set
time_attribute
(Facultatif)

Attribut de coût de réseau à utiliser lorsque vous déterminez le temps de trajet des éléments de réseau.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
distance_attribute
(Facultatif)

Attribut de coût de réseau à utiliser lorsque vous déterminez la distance des éléments de réseau.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
use_hierarchy_in_analysis
(Facultatif)
  • USE_HIERARCHYAttribut de hiérarchie utilisé pour 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 d’un chauffeur de circuler sur des autoroutes au lieu de routes locales si possible, même si cela implique un trajet plus long. Cette option est valide uniquement si le jeu de données réseau en entrée comporte un attribut de hiérarchie.
  • NO_HIERARCHYL’attribut de hiérarchie ne sera pas utilisée pour l’analyse. Si la hiérarchie n’est pas utilisée, un itinéraire exact est obtenu pour le jeu de données réseau.

Le paramètre n'est pas utilisé si aucun attribut de hiérarchie n'est défini dans le jeu de données réseau utilisé pour effectuer l'analyse.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

Boolean
restrictions
[restriction,...]
(Facultatif)

Indique quels attributs de restriction réseau sont respectés lors de l'analyse.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

String
attribute_parameter_values
(Facultatif)

Spécifie les valeurs de paramètre des attributs de réseau possédant des paramètres. Le jeu d’enregistrements comporte deux colonnes qui permettent d’identifier les paramètres de manière unique et une autre colonne qui spécifie la valeur du paramètre.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

Le jeu d'enregistrements des valeurs de paramètre est associé à des attributs. Les champs de la table attributaire sont répertoriés et décrits ci-dessous.

ObjectID:

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

AttributeName :

Nom de l'attribut de réseau dont le paramètre d'attribut est défini par la ligne de table.

ParameterName :

Nom du paramètre d'attribut dont la valeur est définie par la ligne de table. (Les paramètres de type Objet ne peuvent pas être mis à jour à l’aide de cet outil.)

ParameterValue :

Valeur à utiliser pour le paramètre d'attribut. Si aucune valeur n'est spécifiée, le paramètre d'attribut est défini comme étant Null.

Record Set
maximum_snap_tolerance
(Facultatif)

La tolérance de capture maximale spécifie la distance maximale recherchée par Network Analyst pour placer ou replacer un point sur le réseau. Network Analyst recherche des tronçons ou jonctions appropriés et capture le point sur l'élément le plus proche. Si aucun emplacement approprié n'est trouvé dans la tolérance de capture maximale, l'objet est marqué comme étant non localisé.

Linear Unit
exclude_restricted_portions_of_the_network
(Facultatif)

Indique où sont placées les localisations de réseau.

  • EXCLUDELes localisations de réseau sont placées uniquement sur les parties traversables du réseau. Ainsi, vous ne risquez pas de placer des localisations de réseau sur des éléments impossibles à atteindre du fait de restrictions ou d’interruptions. Avant d’ajouter vos localisations de réseau à l’aide de cette option, assurez-vous que vous avez déjà ajouté toutes les interruptions de restriction à la couche d’analyse de réseau en entrée pour obtenir les résultats escomptés. Cette option n’est pas applicable lors de l’ajout d’objets d’interruption. Dans ces cas, utilisez "#" comme valeur de paramètre.
  • INCLUDELes localisations de réseau sont placées sur tous les éléments du réseau. Les localisations de réseau ajoutées avec cette option peuvent être inaccessibles pendant le processus de calcul si elles sont placées sur des éléments restreints.
Boolean
feature_locator_where_clause
[[dataset_name, SQL_Query],...]
(Facultatif)

Expression SQL utilisée pour sélectionner un sous-ensemble d’entités source qui limite les éléments de réseau sur lesquels les ordres et les dépôts peuvent être placés. Par exemple, pour éviter que les ordres et les dépôts ne soient placés sur des autoroutes à accès limité, écrivez une expression SQL qui exclut ces entités source. (À noter que les autres objets d’analyse de réseau, comme les interruptions, ignorent la clause WHERE du localisateur d’entités lors du chargement.)

Value Table
populate_route_lines
(Facultatif)

Spécifie si les lignes affichant la forme réelle des itinéraires seront générées.

  • NO_ROUTE_LINESAucune forme n’est créée pour les itinéraires en sortie. Vous ne pouvez pas générer de feuilles de route si aucune ligne d’itinéraire n’est créée.
  • ROUTE_LINESLes itinéraires en sortie ont la forme exacte des sources de données du réseau sous-jacentes.
Boolean
route_line_simplification_tolerance
(Facultatif)

Distance de simplification de la géométrie de l’itinéraire.

La simplification conserve les points critiques sur un itinéraire, comme les virages dans les intersections, pour définir la forme globale de l’itinéraire et supprimer d’autres points. La distance de simplification que vous spécifiez est le décalage maximal autorisé de la ligne simplifiée par rapport à la ligne d’origine. La simplification d’une ligne diminue le nombre de sommets et tend à réduire la durée d’affichage.

La valeur de ce paramètre est remplacée lorsque le paramètre Mode de déplacement (travel_mode dans Python) est défini sur une valeur autre que Personnalisé.

Linear Unit
populate_directions
(Facultatif)

Spécifie si les feuilles de route seront générées.

  • DIRECTIONSLes feuilles de route seront générées. La classe d’entité spécifiée dans le paramètre output_directions_name est renseignée avec des instructions tournant par tournant pour chacun des itinéraires. Le jeu de données réseau doit prendre en charge les feuilles de route. Si ce n’est pas le cas, une erreur se produit lors de la résolution à l’aide des feuilles de route.
  • NO_DIRECTIONSLes feuilles de route ne seront pas générées.
Boolean
directions_language
(Facultatif)

Langue dans laquelle les feuilles de route seront générées. Les langues disponibles dans la liste déroulante dépendent des modules linguistiques ArcGIS installés sur votre ordinateur.

Si vous envisagez de publier cet outil dans le cadre d’un service sur un serveur distinct, le module linguistique ArcGIS correspondant à la langue que vous choisissez doit être installé sur ce serveur pour que l’outil fonctionne correctement. De plus, si un module linguistique n’est pas installé sur l’ordinateur, la langue n’apparaît pas dans la liste déroulante. Toutefois, vous pouvez saisir un code de langue à la place.

String
directions_style_name
(Facultatif)

Spécifie le style de mise en forme des feuilles de route.

  • NA DesktopFeuille de route tournant par tournant imprimable
  • NA NavigationFeuille de route conçue pour un dispositif de navigation dans un véhicule
  • NA CampusFeuille de route à pied tournant par tournant pour les itinéraires piétons
String
save_output_layer
(Facultatif)

Indique si la sortie doit inclure une couche d’analyse de réseau des résultats.

  • NO_SAVE_OUTPUT_LAYERLa sortie n’inclut pas une couche d’analyse de réseau des résultats.
  • SAVE_OUTPUT_LAYERLa sortie inclut une couche d’analyse de réseau des résultats.

Dans tous les cas, des classes d’entités et des tables autonomes sont renvoyées. Cependant, un administrateur de serveur peut choisir de générer également une couche d’analyse de réseau pour que la configuration et les résultats de l’outil puissent être débogués à l’aide des commandes de Network Analyst dans l’environnement ArcGIS Desktop. Le processus de débogage peut en être facilité.

Dans ArcGIS Desktop, l’emplacement en sortie par défaut de la couche d’analyse de réseau se trouve dans l’espace de travail temporaire, au même niveau que la géodatabase temporaire. Cela signifie qu’il est stocké en tant qu’élément de même niveau que la géodatabase temporaire. La couche d’analyse de réseau en sortie est stockée en tant que fichier .lyr dont le nom commence par _ags_gpna et est suivi d’un GUID alphanumérique.

Boolean
service_capabilities
[[String, {Long}],...]
(Facultatif)

Spécifie la charge maximale de traitement de l’ordinateur qui se produit lorsque cet outil est exécuté en tant que service de géotraitement. Vous souhaiterez peut-être le faire pour l’une des deux raisons suivantes : soit pour éviter que votre serveur ne résolve les problèmes, procédure requérant plus de ressources ou de temps de traitement que vous ne voulez en accorder, soit pour créer de multiples services avec différentes capacités VRP pour prendre en charge un modèle d’entreprise. Si, par exemple, vous utilisez un modèle d’entreprise proposant plusieurs niveaux de service, vous pourriez fournir un service de tournées de véhicules gratuit prenant en charge un maximum de cinq tournées par analyse et un autre service payant prenant en charge plus de cinq tournées par analyse.

Outre la possibilité de limiter le nombre maximum de tournées, vous pouvez limiter le nombre d’ordres ou d’interruptions ponctuelles pouvant être ajoutées à l’analyse. Pour résoudre les problèmes de charge, vous pouvez également définir un nombre maximum d’entités, généralement des entités de rues, que les interruptions linéaires ou polygonales peuvent intersecter. Enfin, vous pouvez forcer un calcul hiérarchique, même si l’utilisateur choisit de ne pas utiliser de hiérarchie, lorsque les ordres sont géographiquement dispersés sur une distance en ligne droite donnée.

  • MAXIMUM POINT BARRIERSNombre maximal d’interruptions ponctuelles autorisées. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM FEATURES INTERSECTING LINE BARRIERSNombre maximal d’entités source pouvant être intersectées par toutes les interruptions linéaires dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM FEATURES INTERSECTING POLYGON BARRIERSNombre maximal d’entités source pouvant être intersectées par toutes les interruptions linéaires dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM ORDERSNombre maximal d’ordres autorisés dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • MAXIMUM ROUTESNombre maximal d’itinéraires autorisés dans l’analyse. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
  • FORCE HIERARCHY BEYOND DISTANCEDistance en ligne droite maximale entre les ordres avant la résolution de la tournée de véhicules à l’aide de la hiérarchie du réseau. Les unités de cette valeur sont les mêmes que celles spécifiées dans le paramètre Unités du champ de distance.Si le réseau n’a pas d’attribut de hiérarchie, cette contrainte est ignorée. Si l’option Utiliser la hiérarchie lors de l’analyse est activée, la hiérarchie est toujours utilisée. Si le paramètre Use Hierarchy in Analysis (Utiliser la hiérarchie dans l’analyse) n’est pas activé et que cette contrainte a une valeur nulle, la hiérarchie n’est pas appliquée.
  • MAXIMUM ORDERS PER ROUTENombre maximal d’ordres pouvant être assignés à chaque itinéraire. Si cette limite est dépassée, une erreur s’affiche. Une valeur Null indique qu’il n’existe pas de limite.
Value Table
ignore_invalid_order_locations
(Facultatif)

Spécifie si les ordres non valides sont ignorés pour le calcul de la tournée de véhicules.

  • HALTLe calcul échoue si des ordres non valides sont rencontrés. Un ordre non valide est un ordre que le solveur de tournées de véhicules ne peut pas atteindre. Un ordre peut être inatteignable pour différentes raisons, notamment s’il se trouve sur un élément de réseau interdit, s’il ne figure pas du tout sur le réseau ou s’il se situe sur une portion déconnectée du réseau. Il s’agit de la valeur par défaut équivalant au booléen Faux.
  • SKIPLe calcul ignore les ordres non valides et renvoie une solution, s’il n’a rencontré aucune autre erreur.Si vous devez générer des itinéraires et les transmettre immédiatement aux chauffeurs, vous pouvez ignorer les ordres non valides, calculer et distribuer les itinéraires à vos chauffeurs. Résolvez ensuite les ordres non valides du dernier calcul et intégrez-les dans l’analyse VRP pour le prochain jour de travail. Cette valeur est équivalente au paramètre booléen True (Vrai).
Boolean
travel_mode
(Facultatif)

Choisissez le mode de transport pour l’analyse. CUSTOM est toujours proposé. Pour que les autres modes de déplacement apparaissent, ils doivent être présents dans le jeu de données réseau spécifié dans le paramètre Network_Dataset. (La fonction arcpy.na.GetTravelModes fournit un dictionnaire des objets du mode de déplacement qui sont configurés sur un jeu de données réseau et la propriété name renvoie le nom d’un objet du mode de déplacement.)

Un mode de déplacement est défini sur un jeu de données réseau et offre des valeurs de remplacement des paramètres qui, ensemble, modélisent la voiture, le camion, le piéton et d’autres modes de déplacement. En choisissant ici un mode de déplacement, vous n'avez pas besoin de fournir des valeurs pour les paramètres suivants, qui sont remplacés par les valeurs spécifiées dans le jeu de données réseau :

  • uturn_policy
  • time_attribute
  • distance_attribute
  • use_hierarchy_in_analysis
  • restrictions
  • attribute_parameter_values
  • route_line_simplification_tolerance

  • CUSTOMDéfinissez le mode de déplacement qui répond à vos besoins. Lorsque CUSTOM est sélectionné, l’outil ne remplace pas les paramètres du mode de déplacement répertoriés ci-dessus. Il s'agit de la valeur par défaut.
String
ignore_network_location_fields
(Facultatif)

Indique si les champs de localisation de réseau seront pris en compte lors de la localisation d’ordres, de dépôts ou d’interruptions sur le réseau.

  • IGNORELes champs de localisation de réseau ne seront pas pris en compte lors de la localisation des entrées sur le réseau. À la place, les entrées seront toujours localisées en effectuant une recherche spatiale.
  • HONORLes champs de localisation de réseau seront pris en compte lors de la localisation des entrées sur le réseau. Il s’agit de la valeur par défaut.
Boolean
time_zone_usage_for_time_fields
(Facultatif)

Spécifie le fuseau horaire pour les champs date-heure en entrée suivants pris en charge par l’outil : TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, TimeWindowEnd2, InboundArriveTime et OutboundDepartTime pour les ordres ; TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 et TimeWindowEnd2 pour les dépôts ; EarliestStartTime et LatestStartTime pour les itinéraires ; et TimeWindowStart et TimeWindowEnd pour les pauses.

  • GEO_LOCALLes valeurs date-heure associées aux ordres ou dépôts sont dans le fuseau horaire dans lequel les ordres et les dépôts se trouvent. Pour les itinéraires, les valeurs date-heure sont basées sur le fuseau horaire où se trouve le dépôt de début pour l’itinéraire. Si un itinéraire n’a pas de dépôt de départ, tous les ordres et dépôts de l’ensemble des itinéraires doivent être dans un seul et même fuseau horaire. Pour les interruptions, les valeurs date-heure sont basées sur le fuseau horaire des itinéraires. Si, par exemple, le dépôt se situe dans une zone qui suit l’heure normale de l’est et que ses premières valeurs de fenêtre horaire (spécifiées comme TimeWindowStart1 et TimeWindowEnd1) sont 8 h 00 et 17 h 00 respectivement, les valeurs de fenêtre horaire seront traitées comme 8 h 00 et 17 h 00 dans l’heure normale de l’est.
  • UTCLes valeurs date-heure associées aux ordres ou dépôts sont exprimées selon le temps universel coordonné (UTC) et ne sont pas basées sur le fuseau horaire dans lequel les ordres ou les dépôts se trouvent. Si, par exemple, votre dépôt se situe dans une zone qui suit l’heure normale de l’est et que ses premières valeurs de fenêtre horaire (spécifiées comme TimeWindowStart1 et TimeWindowEnd1) sont 8 h 00 et 17 h 00 respectivement, les valeurs de fenêtre horaire seront traitées comme 12 h 00 et 21 h 00 dans l’heure normale de l’est, en tenant compte de l’heure d’été.

Le fait de spécifier les valeurs date-heure en UTC est utile si vous ne connaissez pas le fuseau horaire dans lequel les ordres ou les dépôts se situent ou si vous avez des ordres ou des dépôts dans plusieurs fuseaux horaires et si vous souhaitez que toutes les valeurs date-heures commencent en simultané. L’option UTC s’applique uniquement lorsque votre jeu de données réseau définit un attribut de fuseau horaire. Sinon, toutes les valeurs de date et d’heure sont toujours traitées en tant que Geo local (GEO_LOCAL dans Python).

String
overrides
(Facultatif)

Remarque :

Ce paramètre n’est destiné qu’à un usage interne.

String
save_route_data
(Facultatif)

Spécifie s’il convient d’enregistrer ou non un fichier .zip contenant une géodatabase fichier qui renferme les entrées et sorties de l’analyse dans un format qui peut servir à partager les couches d’itinéraires avec ArcGIS Online ou ArcGIS Enterprise.

Dans ArcGIS Desktop, l’emplacement en sortie par défaut de ce fichier en sortie se trouve dans le dossier temporaire. Vous pouvez déterminer l’emplacement du dossier temporaire en utilisant arcpy.env.scratchFolder.

  • SAVE_ROUTE_DATAL’outil écrit une archive .zip contenant un espace de travail de géodatabase fichier qui renferme les entrées et sorties de l’analyse.
  • NO_SAVE_ROUTE_DATALes données d’itinéraires ne sont pas enregistrées. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

NomExplicationType de données
solve_succeeded

Un booléen indique si l’optimisation des tournées de véhicules a réussi.

Boolean
out_unassigned_stops

Table répertoriant les ordres qu’aucune tournée n’a pu atteindre.

Table
out_stops

Table fournissant des informations sur les arrêts aux dépôts, aux ordres et pendant les pauses.

Table
out_routes

Classe d’entités représentant les conducteurs, véhicules et itinéraires d’une tournée de véhicules.

Feature Class
out_directions

Instructions virage par virage aidant les conducteurs à suivre leurs itinéraires.

Feature Class
out_network_analysis_layer

Couche d’analyse de réseau pour laquelle les propriétés configurées dans les paramètres d’outil peuvent être utilisées à des fins d’analyse ou de débogage dans la carte.

File
out_route_data

Fichier .zip contenant toutes les informations sur un itinéraire donné.

File

Exemple de code

Exemple 1 d’utilisation de la fonction SolveVehicleRoutingProblem (fenêtre Python)

Exécute l’outil uniquement avec les paramètres requis.

import arcpy
orders = arcpy.FeatureSet()
orders.load("Stores")
depots = arcpy.FeatureSet()
depots.load("DistributionCenter")
routes = arcpy.RecordSet()
routes.load("RoutesTable")
arcpy.na.SolveVehicleRoutingProblem(orders, depots, routes, "","Minutes",
                                    "Miles", "Streets_ND")
Exemple 2 d’utilisation de la fonction SolveVehicleRoutingProblem (script autonome)

Le script Python autonome suivant illustre l’utilisation de l’outil SolveVehicleRoutingProblem pour servir un ensemble d’ordres avec une flotte de véhicules.

# Name: SolveVehicleRoutingProblem_Workflow.py
# Description: Find the best routes for a fleet of vehicles, which is operated 
#              by a distribution company, to deliver goods from a main 
#              distribution center to a set of grocery stores.
# Requirements: Network Analyst Extension 

#Import system modules
import arcpy
from arcpy import env
import datetime

try:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    impedanceAttribute = "TravelTime"
    timeUnits = "Minutes"
    distanceUnits = "Miles"
    inOrders = "Analysis/Stores"
    inDepots = "Analysis/DistributionCenter"
    inRoutes = "RoutesTable"
    outGeodatabase = "C:\data\output\VRPOutputs.gdb"
    
    #Create two new feature sets and one record set with same schema as
    #Orders, Deopts and Routes parameter in Solve Vehicle Routing Problem tool.
    #Load the feature from the existing feature classes and table in the feature
    #set. Note that Solve Vehicle Routing Problem tool does not provide a way to
    #map field names between your input feature classes and table and the
    #feature set or record set parameters. To ensure that the attributes are
    #correctly transfered, the input feature classes and table must have same
    #field names as the feature sets and record sets.
    orders = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",0)    
    orders.load(inOrders)
    depots = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",1)    
    depots.load(inDepots)
    routes = arcpy.GetParameterValue("SolveVehicleRoutingProblem_na",2)    
    routes.load(inRoutes)
    
    #Call the SolveVRP tool and store the results in the result object
    result = arcpy.na.SolveVehicleRoutingProblem(orders,depots, routes,"",
                                                 timeUnits, distanceUnits,
                                                 inNetworkDataset, outGeodatabase,
                                                 populate_directions="DIRECTIONS")
    
    #print the solve status and output any warning messages from tool execution
    solveSucceeded = result.getOutput(0)
    print("Solve Succeeded: {0}".format(solveSucceeded))
    print("Messages from solver are printed below.")
    print(result.getMessages(1))
    
    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

Informations de licence

  • Basic: Nécessite Network Analyst
  • Standard: Nécessite Network Analyst
  • Advanced: Nécessite Network Analyst