ArcGIS Desktop

  • Documentation
  • Support

  • My Profile
  • Aide
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS Desktop

Un SIG professionnel complet

ArcGIS Enterprise

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
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

ArcMap

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

VehicleRoutingProblemSolverProperties

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

Résumé

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)

Provides the ability to get or set the parameterized attributes to be used in the analysis. The property returns a Python dictionary. The dictionary key is a two-value tuple consisting of the attribute name and the parameter name. The value for each item in the dictionary is the parameter value.

Parameterized network attributes are used to model some dynamic aspect of an attribute's value. For example, a tunnel with a height restriction of 12 feet can be modeled using a parameter. In this case, the vehicle's height in feet should be specified as the parameter value. If the vehicle is taller than 12 feet, this restriction will then evaluate to True, thereby restricting travel through the tunnel. Similarly, a bridge could have a parameter to specify a weight restriction.

Attempting to modify the attributeParameters property in place won't result in updated values. Instead, you should always use a new dictionary object to set values for the property. The following two code blocks demonstrate the difference between these two approaches.

#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
If the network analysis layer does not have parameterized attributes, this property returns None.

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)

Provides the ability to get or set a list of restriction attributes that are applied for the analysis. An empty list, [], indicates that no restriction attributes are used for the analysis.

String
solverName
(Lecture seule)

Renvoie le nom du solveur qui est référencé par la couche 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)

Controls the use of the hierarchy attribute while performing the analysis. The following is a list of possible values:

  • USE_HIERARCHY — Use the hierarchy attribute for the analysis. Using a hierarchy results in the solver preferring higher-order edges to lower-order edges. Hierarchical solves are faster, and they can be used to simulate the preference of a driver who chooses to travel on freeways over local roads when possible—even if that means a longer trip. This option is applicable only if the network dataset referenced by the Network Analyst layer has a hierarchy attribute. A value of True can also be used to specify this option.
  • NO_HIERARCHY —Do not use the hierarchy attribute for the analysis. Not using a hierarchy yields an exact route for the network dataset. A value of False can also be used to specify this option.
String
uTurns
(Lecture/écriture)

Provides the ability to get or set the policy that indicates how the U-turns at junctions that could occur during network traversal between stops are being handled by the solver. The following is a list of possible values:

  • ALLOW_UTURNS —U-turns are permitted at junctions with any number of connected edges.
  • NO_UTURNS —U-turns are prohibited at all junctions, regardless of junction valency. Note, however, that U-turns are still permitted at network locations even when this setting is chosen; however, you can set the individual network locations' CurbApproach property to prohibit U-turns there as well.
  • ALLOW_DEAD_ENDS_ONLY —U-turns are prohibited at all junctions, except those that have only one adjacent edge (a dead end).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY —U-turns are prohibited at junctions where exactly two adjacent edges meet but are permitted at intersections (junctions with three or more adjacent edges) and dead ends (junctions with exactly one adjacent edge). Often, networks have extraneous junctions in the middle of road segments. This option prevents vehicles from making U-turns at these locations.
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")

Rubriques connexes

  • Optimisation des tournées de véhicules

ArcGIS Desktop

  • Accueil
  • Documentation
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • 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
Donnez-nous votre avis.
© Copyright 2016 Environmental Systems Research Institute, Inc. | Confidentialité | Légal