VehicleRoutingProblemSolverProperties (arcpy.na)

Récapitulatif

Permet d'accéder aux propriétés d'analyse d'une couche Network Analyst de tournée de véhicules. La fonction GetSolverProperties permet d'obtenir un objet VehicleRoutingProblemSolverProperties à partir d'une couche Network Analyst de tournée de véhicules.

Discussion

L'objet VehicleRoutingProblemSolverProperties permet un accès en lecture et en écriture à toutes les propriétés d'analyse d'une couche Network Analyst de tournée de véhicules. L'objet permet de modifier les propriétés d'analyse souhaitées de la couche de tournée de véhicules, et la couche correspondante peut être analysée à nouveau en vue de déterminer les résultats appropriés. Une nouvelle couche de tournée de véhicules peut être créée à l'aide de l'outil de géotraitement Créer une couche d'optimisation des tournées de véhicules. Obtenir l'objet VehicleRoutingProblemSolverProperties à partir d'une nouvelle couche de tournée de véhicules permet de réutiliser la couche existante pour les analyses suivantes plutôt que de créer une couche pour chaque analyse, ce qui peut être un processus lent.

Une fois les propriétés de l'objet VehicleRoutingProblemSolverProperties modifiées, la couche correspondante peut être utilisée immédiatement avec d'autres fonctions et outils de géotraitement. Aucune actualisation ni mise à jour de la couche n'est requise pour respecter les changements effectués par l'intermédiaire de l'objet.

Propriétés

PropriétéExplicationType de données
attributeParameters
(Lecture/écriture)

Permet d'obtenir ou de définir les attributs paramétrés à utiliser dans l'analyse. La propriété retourne un dictionnaire Python. La clé de dictionnaire est un tuple à deux valeurs comprenant le nom de l'attribut et le nom du paramètre. La valeur de chaque élément du dictionnaire correspond à la valeur du paramètre.

Les attributs de réseau paramétrés permettent de modéliser un aspect dynamique de la valeur d'un attribut. Par exemple, un tunnel avec une restriction de hauteur de 12 pieds peut être modélisé à l'aide d'un paramètre. Dans ce cas, la hauteur du véhicule en pieds doit être spécifiée en tant que valeur de paramètre. Si la hauteur du véhicule est supérieure à 12 pieds, cette restriction prend la valeur True, ce qui restreint le passage par le tunnel. De la même façon, un pont peut comporter un paramètre pour spécifier une restriction de poids.

Toute tentative de modification de la propriété attributeParameters en place ne permet pas de mettre à jour les valeurs. Vous devez à la place toujours utiliser un nouvel objet dictionnaire pour définir des valeurs pour la propriété. Les deux blocs de code suivants montrent la différence entre ces deux approches.

#Don't attempt to modify the attributeParameters property in place.
#This coding method won't work.

solverProps.attributeParameters[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
#Modify the attributeParameters property using a new dictionary object.
#This coding method works. 

params = solverProps.attributeParameters
params[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
solverProps.attributeParameters = params
Si la couche d'analyse de réseau ne comporte pas d'attributs paramétrés, cette propriété retourne la valeur Aucun.

Dictionary
capacityCount
(Lecture/écriture)

Permet d'obtenir ou de définir le nombre de dimensions de contrainte de capacité requises pour décrire les limites pertinentes des véhicules.

Integer
defaultDate
(Lecture/écriture)

Permet d'obtenir ou de définir la date implicite pour les valeurs de champs de temps dont la date n'est pas spécifiée avec l'heure. Si un champ horaire pour un objet d'ordre, tel que TimeWindowStart1, a une valeur d'heure uniquement, la date est supposée être la valeur de propriété defaultDate. Par exemple, si un ordre a une valeur TimeWindowStart1 de 9h00 et si la valeur defaultDate est définie sur datetime.date(2012, 3, 6), la valeur de temps entière pour le champ est 9h00, le 6 mars 2012. La date par défaut n'a aucun effet sur les valeurs de champs horaires qui ont déjà une date.

Le jour de la semaine peut aussi être spécifié en tant que date par défaut à l'aide des dates suivantes :

  • Aujourd'hui - 12/30/1899
  • Dimanche - 12/31/1899
  • Lundi - 1/1/1900
  • Mardi - 1/2/1900
  • Mercredi - 1/3/1900
  • Jeudi - 1/4/1900
  • Vendredi - 1/5/1900
  • Samedi - 1/6/1900

Par exemple, pour spécifier que la date implicite pour les valeurs de champs horaires doit être mardi, précisez la valeur de propriété comme 1/2/1900.

DateTime
distanceAttribute
(Lecture/écriture)

Permet d'obtenir ou de définir l'attribut de coût de distance utilisé pour définir la longueur le long des éléments du réseau.

String
distanceFieldUnits
(Lecture/écriture)

Permet d'obtenir ou de définir les unités de distance utilisées par les champs de distance des sous-couches et des tables de la couche d'analyse (classes d'analyse de réseau). L'unité n'a pas besoin d'être la même que celle de l'attribut de coût de réseau spécifiée en tant que valeur de propriété timeAttribute. Voici une liste des valeurs possibles :

  • Centimètres
  • Décimètres
  • Pieds
  • Pouces
  • Kilomètres
  • Mètres
  • Milles
  • Millimètres
  • Milles nautiques
  • Yards

String
excessTransitTimeImportance
(Lecture/écriture)

Permet d'obtenir ou définir l'importance de la réduction du temps de transit excessif. Le temps de transit excessif correspond à la quantité de temps dépassant le temps nécessaire pour effectuer le trajet direct entre une paire d'ordres. Le temps excessif découle de pauses ou de trajets vers d'autres ordres ou dépôts entres des visites à des ordres appariés. Voici une liste des valeurs possibles :

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

Permet d'obtenir ou de définir le type de forme pour les entités d'itinéraires générées en sortie par le solveur. Voici une liste des valeurs possibles :

  • TRUE_LINES_WITH_MEASURESLes itinéraires en sortie ont la forme exacte des sources de données du réseau sous-jacentes. En outre, la sortie comprend des mesures d'itinéraire pour le référencement linéaire. Les mesures augmentent à partir du premier arrêt et enregistrent l'impédance cumulée pour atteindre une position donnée.
  • TRUE_LINES_WITHOUT_MEASURESLes itinéraires en sortie ont la forme exacte des sources de données du réseau sous-jacentes.
  • STRAIGHT_LINESLa forme de l'itinéraire en sortie correspondra à des lignes droites qui connectent des passages au dépôt et des ordres dans la séquence d'itinéraires.
  • NO_LINESAucune forme n'est créée pour les itinéraires en sortie. Vous ne pouvez pas générer de trajets non plus.
String
restrictions
(Lecture/écriture)

Permet d'obtenir ou de définir une liste des attributs de restriction appliqués pour l'analyse. Une liste vide, [], indique qu'aucun attribut de restriction n'est utilisé pour l'analyse.

String
solverName
(Lecture seule)

Renvoie le nom du solveur qui est référencé par la couche ArcGIS Network Analyst utilisée pour obtenir l'objet des propriétés du solveur. La propriété renvoie toujours la valeur de chaîne Solveur de tournée de véhicules lorsque l'accès se fait à partir d'un objet VehicleRoutingProblemSolverProperties.

String
timeAttribute
(Lecture/écriture)

Permet d'obtenir ou de définir l'attribut de coût de réseau basé sur le temps utilisé pour définir le temps de traversée des éléments du réseau. Cet attribut de coût est réduit au minimum par le solveur lorsqu'il recherche la solution.

String
timeFieldUnits
(Lecture/écriture)

Permet d'obtenir ou de définir l'unité de temps utilisée par les champs temporels des sous-couches et des tables de la couche d'analyse (classes d'analyse de réseau). L'unité n'a pas besoin d'être la même que celle de l'attribut de coût de réseau spécifiée en tant que valeur de propriété timeAttribute. Voici une liste des valeurs possibles :

  • Jours
  • Heures
  • Minutes
  • Secondes

String
timeWindowViolationImportance
(Lecture/écriture)

Permet d'obtenir ou de définir l'importance du respect des fenêtres horaire sans entraîner de violations. Une infraction de fenêtre horaire se produit quand un itinéraire arrive à un ordre, un dépôt ou une borne après la fermeture d'une fenêtre horaire. La violation est le laps de temps écoulé entre la fin de la fenêtre horaire et l'heure d'arrivée d'une tournée. Voici une liste des valeurs possibles :

  • HauteLe solveur tente de trouver une solution qui réduit les violations de fenêtre horaire mais augmente le temps de trajet total. Sélectionnez cette option s'il est plus important d'arriver à l'heure aux commandes que de réduire le coût global de la solution. Ce peut être le cas si vous rencontrez des clients à vos ordres et que vous ne voulez pas les importuner par des arrivées tardives (une autre option consiste à utiliser des fenêtres horaire strictes qui ne peuvent pas du tout être violées).En raison d'autres contraintes d'une tournée de véhicules, il peut s'avérer impossible de visiter tous les ordres dans leur fenêtre horaire. Dans ce cas, même cette option peut entraîner des violations.
  • MoyenneLe solveur cherche un équilibre entre le respect des fenêtres horaires et la réduction du coût total de la solution.
  • FaibleLe solveur tente de trouver une solution qui réduit le temps de trajet total, quelle que soit la fenêtre horaire. Sélectionnez cette option si le respect des fenêtres horaire est moins important que la réduction du coût global de votre solution. Vous pouvez utiliser ce paramètre si vous avez un retard croissant de traitement des demandes de service. Si vous souhaitez desservir un plus grand nombre de commandes au cours d'une journée ou rattraper un retard, vous pouvez sélectionner cette option, même si les clients risquent d'être gênés par l'arrivée tardive de votre flotte.
String
useHierarchy
(Lecture/écriture)

Contrôle l'utilisation de l'attribut de hiérarchie lors de l'analyse. Voici une liste des valeurs possibles :

  • USE_HIERARCHY Utilise l'attribut de hiérarchie 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 s'applique uniquement si le jeu de données réseau référencé par la couche ArcGIS Network Analyst dispose d'un attribut de hiérarchie. Une valeur True peut également être utilisée pour spécifier cette option.
  • NO_HIERARCHYN'utilise pas l'attribut de hiérarchie pour l'analyse. Un itinéraire exact est alors obtenu pour le jeu de données réseau. Une valeur False peut également être utilisée pour spécifier cette option.
String
uTurns
(Lecture/écriture)

Permet d'obtenir ou de définir la stratégie qui indique comment les demi-tours aux jonctions qui pourraient survenir pendant la traversée du réseau entre différents arrêts sont gérés par le solveur. Voici une liste des valeurs possibles :

  • ALLOW_UTURNSLes demi-tours sont autorisés aux jonctions comportant un nombre quelconque de tronçons connectés.
  • NO_UTURNSLes demi-tours sont interdits à toutes les jonctions, indépendamment de la valence de jonction. Notez toutefois que les demi-tours restent autorisés aux emplacements réseau même lorsque ce paramètre est sélectionné ; en revanche, vous pouvez configurer la propriété CurbApproach des emplacements réseau individuels pour y interdire les demi-tours également.
  • 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 aux jonctions où deux tronçons adjacents se rencontrent, mais sont autorisés aux intersections (jonctions avec au moins trois tronçons adjacents) et aux voies sans issue (jonctions avec 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

Exemple de code

Exemple d'utilisation de l'objet VehicleRoutingProblemSolverProperties

Le script indique comment mettre à jour les propriétés Attribut de distance, Date par défaut, Demi-tours aux jonctions et Type de forme en sortie pour une couche de tournée de véhicules existante dans la table des matières d'ArcMap. Il suppose qu'une couche de tournée de véhicules appelée Itinéraires de livraison des magasins a été créée dans un nouveau document ArcMap d'après le jeu de données réseau du didacticiel pour la région de San Francisco.

#Get the vehicle routing problem layer object from a layer named
#"Store Delivery Routes" in the table of contents
vrpLayer = arcpy.mapping.Layer("Store Delivery Routes")

#Get the solver properties object from the vehicle routing problem layer
solverProps = arcpy.na.GetSolverProperties(vrpLayer)

#Update the properties for the vehicle routing problem layer using the 
#solver properties object
solverProps.distanceAttribute = "Meters"
#Set the default date to be Monday
solverProps.defaultDate = datetime.date(1900,1,1)
solverProps.uTurns = "NO_UTURNS"
solverProps.outputPathShape = "STRAIGHT_LINES"

Thèmes connexes

4/26/2014