ArcGIS for Desktop

  • Documentation
  • Tarification
  • Support

  • My Profile
  • Aide
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS for Desktop

Un SIG professionnel complet

ArcGIS for Server

SIG dans votre entreprise

ArcGIS for Developers

Outils de création d'applications de localisation

ArcGIS Solutions

Modèles d'applications et de cartes gratuits pour votre secteur d'activité

ArcGIS Marketplace

Téléchargez des applications et des données pour votre organisation.

  • Documentation
  • Tarification
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

Help

  • Accueil
  • Commencer
  • Carte
  • Analyser
  • Gérer les données
  • Outils
  • Plus...

VehicleRoutingProblemSolverProperties

  • Récapitulatif
  • Discussion
  • Propriétés
  • Vue d'ensemble des méthodes
  • Méthodes
  • Exemple de code

Récapitulatif

Provides access to analysis properties from a vehicle routing problem Network Analyst layer. The GetSolverProperties function is used to obtain a VehicleRoutingProblemSolverProperties object from a vehicle routing problem Network Analyst layer.

Discussion

The VehicleRoutingProblemSolverProperties object provides read and write access to all the analysis properties of a vehicle routing problem Network Analyst layer. The object can be used to modify the desired analysis properties of the vehicle routing problem layer, and the corresponding layer can be re-solved to determine the appropriate results. A new vehicle routing problem layer can be created using the Make Vehicle Routing Problem Layer geoprocessing tool. Obtaining the VehicleRoutingProblemSolverProperties object from a new vehicle routing problem layer allows you to reuse the existing layer for subsequent analyses rather than create a new layer for each analysis, which can be slow.

After modifying the properties of the VehicleRoutingProblemSolverProperties object, the corresponding layer can be immediately used with other functions and geoprocessing tools. There is no refresh or update of the layer required to honor the changes modified through the object.

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 :

  • Haute —Le solveur tente de trouver une solution présentant moins de temps de transit excessif entre des ordre appariés, mais augmente les coûts de trajet globaux. Ce paramètre est utile si vous transportez des personnes entre des paires d'ordres et que voulez raccourcir le temps de trajet. Il est caractéristique des services de taxi.
  • Moyenne —Le solveur cherche un équilibre entre la réduction du temps de transit excessif et la réduction du coût total de la solution.
  • Faible —Le 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_MEASURES —Les 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_MEASURES —Les itinéraires en sortie ont la forme exacte des sources de données du réseau sous-jacentes.
  • STRAIGHT_LINES —La 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_LINES —Aucune 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 :

  • Haute —Le solveur tente de trouver une solution qui réduit les violations de fenêtre horaire mais augmente le temps de trajet total. Sélectionnez cette option s'il est plus important d'arriver à l'heure aux 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.
  • Moyenne —Le solveur cherche un équilibre entre le respect des fenêtres horaires et la réduction du coût total de la solution.
  • Faible —Le solveur tente de trouver une solution qui réduit le temps de trajet total, quelle que soit la fenêtre horaire. Sélectionnez cette option si le respect des fenêtres horaire est moins important que la réduction du coût global de votre solution. Vous pouvez utiliser ce paramètre si vous avez un retard croissant de traitement des demandes de service. Si vous souhaitez desservir un plus grand nombre 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_HIERARCHY —N'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_UTURNS —Les demi-tours sont autorisés aux jonctions comportant un nombre quelconque de tronçons connectés.
  • NO_UTURNS —Les 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_ONLY —Les 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_ONLY —Les 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

Vue d'ensemble des méthodes

MéthodeExplication
applyTravelMode (travel_mode)

Updates the analysis properties of a network analyst layer based on a travel mode object. The updated network analyst layer can then be solved to complete the analysis.

Méthodes

applyTravelMode (travel_mode)
ParamètreExplicationType de données
travel_mode

A variable that references a travel mode object derived from a network dataset. A list of travel mode objects can be obtained by calling the arcpy.na.GetTravelModes function.

Object

When a network analyst layer is created, it is assigned default values for all of its analysis properties. The individual analysis properties can be updated using a solver properties object obtained from the network analyst layer. A travel mode stores a predefined set of analysis settings that help to perform a particular analysis, such as a walking time travel mode that stores the analysis settings required to perform a time-based walking analysis.

Using the applyTravelMode method, all the analysis settings that are defined in a travel mode can be applied at once. After the analysis properties are updated, the network analyst layer can be solved to complete the analysis.

If there is an error when updating the solver properties, such as when the provided travel mode references properties that don't exist on the current network dataset or references properties that are no longer applicable to the network dataset that was used to create the network analyst layer corresponding to the solver properties object, no exceptions are raised. The method will execute successfully, but you will get errors when you try to solve such a network analyst layer.

If the travel_mode parameter does not reference a travel mode object or a string, a TypeError exception is raised. If the travel_mode parameter references a string and the string cannot be internally converted to a valid string representation of a travel mode object, a ValueError exception is raised.

Exemple de code

VehicleRoutingProblemSolverProperties example 1

The script shows how to update the Distance Attribute, Default Date, U-Turns at Junctions, and Output Shape Type properties for an existing vehicle routing problem layer in the ArcMap table of contents. It assumes that a vehicle routing problem layer called Store Delivery Routes has been created in a new map document based on the tutorial network dataset of the San Francisco region.

#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"
ApplyTravelMode example 2 (workflow)

This script shows how to find routes for a fleet of trucks using the Trucking Time travel mode.

#Import modules
import os
import arcpy

#Define variables
workspace = "C:/data/SanDiego.gdb"
output_folder = "C:/data/output"
nds = os.path.join(workspace, "Transportation", "Streets_ND")
orders = os.path.join(workspace, "Orders")
depots = os.path.join(workspace, "TruckDepots")
routes = os.path.join(workspace, "Drivers")
analysis_layer_name = "TruckRoutes"

#Set environment variables
arcpy.env.overwriteOutput = True

#Check out the network analyst extension
arcpy.CheckOutExtension("network")

#Create a new closest facility analysis layer
make_layer_result = arcpy.na.MakeVehicleRoutingProblemLayer(nds, analysis_layer_name,
                                                            "TravelTime")
analysis_layer = make_layer_result.getOutput(0)

#Add orders, depots and routes to the analysis layer using default field mappings         
sub_layer_names = arcpy.na.GetNAClassNames(analysis_layer)
order_layer_name = sub_layer_names["Orders"]
depot_layer_name = sub_layer_names["Depots"]
route_layer_name = sub_layer_names["Routes"]
arcpy.na.AddLocations(analysis_layer, order_layer_name, orders, "#", "#")
arcpy.na.AddLocations(analysis_layer, depot_layer_name, depots, "#", "#")
arcpy.na.AddLocations(analysis_layer, route_layer_name, routes, "#", "#")

#Get the Trucking Time travel mode from the network dataset
travel_modes = arcpy.na.GetTravelModes(nds)
trucking_mode = travel_modes["Trucking Time"]

#Apply the travel mode to the analysis layer
solver_properties = arcpy.na.GetSolverProperties(analysis_layer)
solver_properties.applyTravelMode(trucking_mode)

#Solve the analysis layer skipping any invalid orders and save the result as a layer file          
arcpy.na.Solve(analysis_layer, "SKIP")

output_layer = os.path.join(output_folder, analysis_layer_name + ".lyr")
arcpy.management.SaveToLayerFile(analysis_layer, output_layer, "RELATIVE")

arcpy.AddMessage("Completed")

Thèmes connexes

  • Optimisation des tournées de véhicules
Vous avez un commentaire à formuler concernant cette rubrique ?

ArcGIS for Desktop

  • Accueil
  • Documentation
  • Tarification
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

A propos d'Esri

  • A propos de la société
  • Carrières
  • Blog des initiés
  • Conférence des utilisateurs
  • Sommet des développeurs
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | Confidentialité | Légal