com.esri.arcgis.networkanalyst
Class NAVRPSolver

java.lang.Object
  extended by com.esri.arcgis.networkanalyst.NAVRPSolver
All Implemented Interfaces:
com.esri.arcgis.interop.RemoteObjRef, INASolver, INASolverSettings, INASolverSettings2, INAVRPSolver, IPersist, IPersistStream, ISupportErrorInfo, Externalizable, Serializable

public class NAVRPSolver
extends Object
implements com.esri.arcgis.interop.RemoteObjRef, INASolver, INASolverSettings, INASolverSettings2, INAVRPSolver, IPersistStream, ISupportErrorInfo, Externalizable

Performs VRP network analysis.

Description

This object is new at ArcGIS 9.3.

Remarks

NAVRPSolver is a Network Analyst solver that computes an optimized set of routes for a fleet of vehicles to service a set of input orders. The NAVRPSolver can also honor time windows, multiple route capacities, travel duration constraints, route zone and route seed point constraints, specialties constraints, and paired order constraints. The NAVRPSolver honors all of the settings of the INASolverSettings interface except for IgnoreInvalidLocations. If invalid locations are present, the solver will return an invalid input error, along with the appropriate GP messages identifying each error.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface com.esri.arcgis.networkanalyst.INASolver
IID, IIDbfd9e9d5_cd3c_4f1c_b39d_40a4134e4b36, xxDummy
 
Fields inherited from interface com.esri.arcgis.networkanalyst.INASolverSettings2
IID, IIDd3696546_2831_4aa5_a879_acd66e50a938, xxDummy
 
Constructor Summary
NAVRPSolver()
          Constructs a NAVRPSolver using ArcGIS Engine.
NAVRPSolver(Object obj)
          Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
NAVRPSolver theNAVRPSolver = (NAVRPSolver) obj;
 
Method Summary
 void bind(INAContext context, IDENetworkDataset network, IGPMessages messages)
          Re-associate the solver with the given network dataset and its schema.
 INAContext createContext(IDENetworkDataset network, String name)
          Creates the analysis context for the solver.
 INALayer createLayer(INAContext context)
          Makes a new network analysis layer for the solver context.
 boolean equals(Object o)
          Compare this object with another
 IStringArray getAccumulateAttributeNames()
          The collection of network attribute names to be accumulated with the analysis.
 Object getAttributeParameterValue(String attributeName, String paramName)
          The value to use for an attribute parameter within the network dataset.
 int getCapacityCount()
          The number of dimensions for object sizes.
 INamedSet getClassDefinitions()
          The inputs and outputs defined by the solver.
 void getClassID(GUID[] pClassID)
          getClassID
static String getClsid()
          getClsid.
 Date getDefaultDate()
          The date to use for time windows without dates.
 String getDisplayName()
          The display name of the solver.
 int getDistanceFieldUnits()
          The units for distance fields in the NA classes.
 double getExcessTransitTimePenaltyFactor()
          The penalty factor for excess transit time in the objective function.
 INAODCostMatrix getExternalODCostMatrix()
          The external OD cost matrix object.
 String getHierarchyAttributeName()
          The name of the hierarchy attribute to be used in analysis.
 int getHierarchyLevelCount()
          The number of levels in the hierarchy attribute.
 String getImpedanceAttributeName()
          The network attribute name to be used as the impedance attribute in analysis.
 int getInternalODCostMatrixType()
          Indicates the type of internal matrix to be created.
 int getMaxValueForHierarchy(int level)
          The maximum value of the hierarchy attribute.
 String getName()
          The name of the solver.
 int getNumTransitionToHierarchy(int toLevel)
          The number of lower level junctions to explore before searching the next hierarchy level.
 int getOutputLines()
          Indicates how route lines are generated.
 IPropertySet getProperties()
          The properties for the solver.
 IStringArray getRestrictionAttributeNames()
          The collection of network attribute names to be used as restrictions with the analysis.
 int getRestrictUTurns()
          Indicates how U-Turns should be restricted in the analysis.
 void getSizeMax(_ULARGE_INTEGER[] pcbSize)
          getSizeMax
 int getTimeFieldUnits()
          The units for time fields in the NA classes.
 double getTimeWindowViolationPenaltyFactor()
          The penalty factor for time window violation in the objective function.
 int hashCode()
          the hashcode for this object
 void interfaceSupportsErrorInfo(GUID riid)
          interfaceSupportsErrorInfo
 boolean isCanAccumulateAttributes()
          Indicates if the solver supports using accumulate network attributes.
 boolean isCanUseHierarchy()
          Indicates if the solver supports using a hierarchy network attribute.
 void isDirty()
          isDirty
 boolean isGenerateInternalRouteContext()
          Indicates if the internal route context should be generated.
 boolean isIgnoreInvalidLocations()
          Indicates if invalid locations should be ignored or raise an error.
 boolean isResetHierarchyRangesOnBind()
          Indicates if the hierarchy ranges will be reset to the network dataset's hierarchy settings when the solver is bound.
 boolean isUseHierarchy()
          Indicates if the hierarchy attribute for the network should be used in analysis.
 void load(IStream pstm)
          load
 void readExternal(ObjectInput in)
           
 void save(IStream pstm, int fClearDirty)
          save
 void setAccumulateAttributeNamesByRef(IStringArray attributeNames)
          The collection of network attribute names to be accumulated with the analysis.
 void setAttributeParameterValue(String attributeName, String paramName, Object value)
          The value to use for an attribute parameter within the network dataset.
 void setCapacityCount(int value)
          The number of dimensions for object sizes.
 void setDefaultDate(Date date)
          The date to use for time windows without dates.
 void setDistanceFieldUnits(int units)
          The units for distance fields in the NA classes.
 void setExcessTransitTimePenaltyFactor(double value)
          The penalty factor for excess transit time in the objective function.
 void setExternalODCostMatrixByRef(INAODCostMatrix matrix)
          The external OD cost matrix object.
 void setGenerateInternalRouteContext(boolean value)
          Indicates if the internal route context should be generated.
 void setHierarchyAttributeName(String attributeName)
          The name of the hierarchy attribute to be used in analysis.
 void setHierarchyLevelCount(int count)
          The number of levels in the hierarchy attribute.
 void setIgnoreInvalidLocations(boolean ignoreInvalidLocations)
          Indicates if invalid locations should be ignored or raise an error.
 void setImpedanceAttributeName(String attributeName)
          The network attribute name to be used as the impedance attribute in analysis.
 void setInternalODCostMatrixType(int type)
          Indicates the type of internal matrix to be created.
 void setMaxValueForHierarchy(int level, int value)
          The maximum value of the hierarchy attribute.
 void setNumTransitionToHierarchy(int toLevel, int value)
          The number of lower level junctions to explore before searching the next hierarchy level.
 void setOutputLines(int value)
          Indicates how route lines are generated.
 void setResetHierarchyRangesOnBind(boolean value)
          Indicates if the hierarchy ranges will be reset to the network dataset's hierarchy settings when the solver is bound.
 void setRestrictionAttributeNamesByRef(IStringArray attributeName)
          The collection of network attribute names to be used as restrictions with the analysis.
 void setRestrictUTurns(int backtrack)
          Indicates how U-Turns should be restricted in the analysis.
 void setTimeFieldUnits(int units)
          The units for time fields in the NA classes.
 void setTimeWindowViolationPenaltyFactor(double value)
          The penalty factor for time window violation in the objective function.
 void setUseHierarchy(boolean useHierarchy)
          Indicates if the hierarchy attribute for the network should be used in analysis.
 boolean solve(INAContext nAContext, IGPMessages messages, ITrackCancel trackCancel)
          Perform the network analysis and construct results.
 void updateContext(INAContext nAContext, IDENetworkDataset network, IGPMessages messages)
          Update the analysis context for the solver.
 boolean updateLayer(INALayer layer)
          Updates the layer and indicates if the layer was updated.
 void writeExternal(ObjectOutput out)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef
getJintegraDispatch, release
 

Constructor Detail

NAVRPSolver

public NAVRPSolver()
            throws IOException,
                   UnknownHostException
Constructs a NAVRPSolver using ArcGIS Engine.

Throws:
IOException - if there are interop problems
UnknownHostException - if there are interop problems

NAVRPSolver

public NAVRPSolver(Object obj)
            throws IOException
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
NAVRPSolver theNAVRPSolver = (NAVRPSolver) obj;

Construct a NAVRPSolver using a reference to such an object returned from ArcGIS Engine or Server. This is semantically equivalent to casting obj to NAVRPSolver.

Parameters:
obj - an object returned from ArcGIS Engine or Server
Throws:
IOException - if there are interop problems
Method Detail

getClsid

public static String getClsid()
getClsid.


equals

public boolean equals(Object o)
Compare this object with another

Overrides:
equals in class Object

hashCode

public int hashCode()
the hashcode for this object

Overrides:
hashCode in class Object

getName

public String getName()
               throws IOException,
                      AutomationException
The name of the solver.

Specified by:
getName in interface INASolver
Returns:
The name
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getDisplayName

public String getDisplayName()
                      throws IOException,
                             AutomationException
The display name of the solver.

Specified by:
getDisplayName in interface INASolver
Returns:
The name
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getClassDefinitions

public INamedSet getClassDefinitions()
                              throws IOException,
                                     AutomationException
The inputs and outputs defined by the solver.

Specified by:
getClassDefinitions in interface INASolver
Returns:
A reference to a com.esri.arcgis.networkanalyst.INamedSet
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isCanUseHierarchy

public boolean isCanUseHierarchy()
                          throws IOException,
                                 AutomationException
Indicates if the solver supports using a hierarchy network attribute.

Specified by:
isCanUseHierarchy in interface INASolver
Returns:
The canUseHierarchy
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isCanAccumulateAttributes

public boolean isCanAccumulateAttributes()
                                  throws IOException,
                                         AutomationException
Indicates if the solver supports using accumulate network attributes.

Specified by:
isCanAccumulateAttributes in interface INASolver
Returns:
The canAccumulateAttrs
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getProperties

public IPropertySet getProperties()
                           throws IOException,
                                  AutomationException
The properties for the solver.

Specified by:
getProperties in interface INASolver
Returns:
A reference to a com.esri.arcgis.system.IPropertySet
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

createLayer

public INALayer createLayer(INAContext context)
                     throws IOException,
                            AutomationException
Makes a new network analysis layer for the solver context.

Specified by:
createLayer in interface INASolver
Parameters:
context - A reference to a com.esri.arcgis.networkanalyst.INAContext (in)
Returns:
A reference to a com.esri.arcgis.networkanalyst.INALayer
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

updateLayer

public boolean updateLayer(INALayer layer)
                    throws IOException,
                           AutomationException
Updates the layer and indicates if the layer was updated.

Specified by:
updateLayer in interface INASolver
Parameters:
layer - A reference to a com.esri.arcgis.networkanalyst.INALayer (in)
Returns:
The layerUpdated
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

solve

public boolean solve(INAContext nAContext,
                     IGPMessages messages,
                     ITrackCancel trackCancel)
              throws IOException,
                     AutomationException
Perform the network analysis and construct results.

Specified by:
solve in interface INASolver
Parameters:
nAContext - A reference to a com.esri.arcgis.networkanalyst.INAContext (in)
messages - A reference to a com.esri.arcgis.geodatabase.IGPMessages (in)
trackCancel - A reference to a com.esri.arcgis.system.ITrackCancel (in)
Returns:
The isPartialSolution
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

createContext

public INAContext createContext(IDENetworkDataset network,
                                String name)
                         throws IOException,
                                AutomationException
Creates the analysis context for the solver.

Specified by:
createContext in interface INASolver
Parameters:
network - A reference to a com.esri.arcgis.geodatabase.IDENetworkDataset (in)
name - The name (in)
Returns:
A reference to a com.esri.arcgis.networkanalyst.INAContext
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

updateContext

public void updateContext(INAContext nAContext,
                          IDENetworkDataset network,
                          IGPMessages messages)
                   throws IOException,
                          AutomationException
Update the analysis context for the solver.

Specified by:
updateContext in interface INASolver
Parameters:
nAContext - A reference to a com.esri.arcgis.networkanalyst.INAContext (in)
network - A reference to a com.esri.arcgis.geodatabase.IDENetworkDataset (in)
messages - A reference to a com.esri.arcgis.geodatabase.IGPMessages (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

bind

public void bind(INAContext context,
                 IDENetworkDataset network,
                 IGPMessages messages)
          throws IOException,
                 AutomationException
Re-associate the solver with the given network dataset and its schema.

Specified by:
bind in interface INASolver
Parameters:
context - A reference to a com.esri.arcgis.networkanalyst.INAContext (in)
network - A reference to a com.esri.arcgis.geodatabase.IDENetworkDataset (in)
messages - A reference to a com.esri.arcgis.geodatabase.IGPMessages (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getAccumulateAttributeNames

public IStringArray getAccumulateAttributeNames()
                                         throws IOException,
                                                AutomationException
The collection of network attribute names to be accumulated with the analysis.

Specified by:
getAccumulateAttributeNames in interface INASolverSettings
Returns:
A reference to a com.esri.arcgis.system.IStringArray
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setAccumulateAttributeNamesByRef

public void setAccumulateAttributeNamesByRef(IStringArray attributeNames)
                                      throws IOException,
                                             AutomationException
The collection of network attribute names to be accumulated with the analysis.

Specified by:
setAccumulateAttributeNamesByRef in interface INASolverSettings
Parameters:
attributeNames - A reference to a com.esri.arcgis.system.IStringArray (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setImpedanceAttributeName

public void setImpedanceAttributeName(String attributeName)
                               throws IOException,
                                      AutomationException
The network attribute name to be used as the impedance attribute in analysis.

Specified by:
setImpedanceAttributeName in interface INASolverSettings
Parameters:
attributeName - The attributeName (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getImpedanceAttributeName

public String getImpedanceAttributeName()
                                 throws IOException,
                                        AutomationException
The network attribute name to be used as the impedance attribute in analysis.

Specified by:
getImpedanceAttributeName in interface INASolverSettings
Returns:
The attributeName
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setIgnoreInvalidLocations

public void setIgnoreInvalidLocations(boolean ignoreInvalidLocations)
                               throws IOException,
                                      AutomationException
Indicates if invalid locations should be ignored or raise an error.

Specified by:
setIgnoreInvalidLocations in interface INASolverSettings
Parameters:
ignoreInvalidLocations - The ignoreInvalidLocations (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isIgnoreInvalidLocations

public boolean isIgnoreInvalidLocations()
                                 throws IOException,
                                        AutomationException
Indicates if invalid locations should be ignored or raise an error.

Specified by:
isIgnoreInvalidLocations in interface INASolverSettings
Returns:
The ignoreInvalidLocations
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getRestrictionAttributeNames

public IStringArray getRestrictionAttributeNames()
                                          throws IOException,
                                                 AutomationException
The collection of network attribute names to be used as restrictions with the analysis.

Specified by:
getRestrictionAttributeNames in interface INASolverSettings
Returns:
A reference to a com.esri.arcgis.system.IStringArray
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setRestrictionAttributeNamesByRef

public void setRestrictionAttributeNamesByRef(IStringArray attributeName)
                                       throws IOException,
                                              AutomationException
The collection of network attribute names to be used as restrictions with the analysis.

Specified by:
setRestrictionAttributeNamesByRef in interface INASolverSettings
Parameters:
attributeName - A reference to a com.esri.arcgis.system.IStringArray (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setRestrictUTurns

public void setRestrictUTurns(int backtrack)
                       throws IOException,
                              AutomationException
Indicates how U-Turns should be restricted in the analysis.

Specified by:
setRestrictUTurns in interface INASolverSettings
Parameters:
backtrack - A com.esri.arcgis.geodatabase.esriNetworkForwardStarBacktrack constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getRestrictUTurns

public int getRestrictUTurns()
                      throws IOException,
                             AutomationException
Indicates how U-Turns should be restricted in the analysis.

Specified by:
getRestrictUTurns in interface INASolverSettings
Returns:
A com.esri.arcgis.geodatabase.esriNetworkForwardStarBacktrack constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setUseHierarchy

public void setUseHierarchy(boolean useHierarchy)
                     throws IOException,
                            AutomationException
Indicates if the hierarchy attribute for the network should be used in analysis.

Specified by:
setUseHierarchy in interface INASolverSettings
Parameters:
useHierarchy - The useHierarchy (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isUseHierarchy

public boolean isUseHierarchy()
                       throws IOException,
                              AutomationException
Indicates if the hierarchy attribute for the network should be used in analysis.

Specified by:
isUseHierarchy in interface INASolverSettings
Returns:
The useHierarchy
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setHierarchyAttributeName

public void setHierarchyAttributeName(String attributeName)
                               throws IOException,
                                      AutomationException
The name of the hierarchy attribute to be used in analysis.

Specified by:
setHierarchyAttributeName in interface INASolverSettings
Parameters:
attributeName - The attributeName (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getHierarchyAttributeName

public String getHierarchyAttributeName()
                                 throws IOException,
                                        AutomationException
The name of the hierarchy attribute to be used in analysis.

Specified by:
getHierarchyAttributeName in interface INASolverSettings
Returns:
The attributeName
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setHierarchyLevelCount

public void setHierarchyLevelCount(int count)
                            throws IOException,
                                   AutomationException
The number of levels in the hierarchy attribute.

Specified by:
setHierarchyLevelCount in interface INASolverSettings
Parameters:
count - The count (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getHierarchyLevelCount

public int getHierarchyLevelCount()
                           throws IOException,
                                  AutomationException
The number of levels in the hierarchy attribute.

Specified by:
getHierarchyLevelCount in interface INASolverSettings
Returns:
The count
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setMaxValueForHierarchy

public void setMaxValueForHierarchy(int level,
                                    int value)
                             throws IOException,
                                    AutomationException
The maximum value of the hierarchy attribute.

Specified by:
setMaxValueForHierarchy in interface INASolverSettings
Parameters:
level - The level (in)
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getMaxValueForHierarchy

public int getMaxValueForHierarchy(int level)
                            throws IOException,
                                   AutomationException
The maximum value of the hierarchy attribute.

Specified by:
getMaxValueForHierarchy in interface INASolverSettings
Parameters:
level - The level (in)
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setNumTransitionToHierarchy

public void setNumTransitionToHierarchy(int toLevel,
                                        int value)
                                 throws IOException,
                                        AutomationException
The number of lower level junctions to explore before searching the next hierarchy level.

Specified by:
setNumTransitionToHierarchy in interface INASolverSettings
Parameters:
toLevel - The toLevel (in)
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getNumTransitionToHierarchy

public int getNumTransitionToHierarchy(int toLevel)
                                throws IOException,
                                       AutomationException
The number of lower level junctions to explore before searching the next hierarchy level.

Specified by:
getNumTransitionToHierarchy in interface INASolverSettings
Parameters:
toLevel - The toLevel (in)
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isResetHierarchyRangesOnBind

public boolean isResetHierarchyRangesOnBind()
                                     throws IOException,
                                            AutomationException
Indicates if the hierarchy ranges will be reset to the network dataset's hierarchy settings when the solver is bound.

Specified by:
isResetHierarchyRangesOnBind in interface INASolverSettings2
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setResetHierarchyRangesOnBind

public void setResetHierarchyRangesOnBind(boolean value)
                                   throws IOException,
                                          AutomationException
Indicates if the hierarchy ranges will be reset to the network dataset's hierarchy settings when the solver is bound.

Specified by:
setResetHierarchyRangesOnBind in interface INASolverSettings2
Parameters:
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getAttributeParameterValue

public Object getAttributeParameterValue(String attributeName,
                                         String paramName)
                                  throws IOException,
                                         AutomationException
The value to use for an attribute parameter within the network dataset.

Specified by:
getAttributeParameterValue in interface INASolverSettings2
Parameters:
attributeName - The attributeName (in)
paramName - The paramName (in)
Returns:
A Variant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setAttributeParameterValue

public void setAttributeParameterValue(String attributeName,
                                       String paramName,
                                       Object value)
                                throws IOException,
                                       AutomationException
The value to use for an attribute parameter within the network dataset.

Specified by:
setAttributeParameterValue in interface INASolverSettings2
Parameters:
attributeName - The attributeName (in)
paramName - The paramName (in)
value - A Variant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getInternalODCostMatrixType

public int getInternalODCostMatrixType()
                                throws IOException,
                                       AutomationException
Indicates the type of internal matrix to be created.

Remarks

The InternalODCostMatrixType property specifies a value of type esriNAODCostMatrixType. This enumeration constrains how the VRP solver uses and manages an internal NAODCostMatrixResult object during a Solve.

A client using the internal OD cost matrix pattern should set this property to esriNAODCostMatrixFull whenever the set of barrier locations, restrictions, usage of hierarchy or attribute parameter values have changed since the last Solve operation. This ensures that the internal OD cost matrix is fully recalculated based on any new barrier locations or solver settings. Otherwise, setting this property to esriNAODCostMatrixUpdate will ensure that the internal cost matrix is updated with new OD cost entries for locations added since the last Solve operation.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getInternalODCostMatrixType in interface INAVRPSolver
Returns:
A com.esri.arcgis.networkanalyst.esriNAODCostMatrixType constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setInternalODCostMatrixType

public void setInternalODCostMatrixType(int type)
                                 throws IOException,
                                        AutomationException
Indicates the type of internal matrix to be created.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setInternalODCostMatrixType in interface INAVRPSolver
Parameters:
type - A com.esri.arcgis.networkanalyst.esriNAODCostMatrixType constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isGenerateInternalRouteContext

public boolean isGenerateInternalRouteContext()
                                       throws IOException,
                                              AutomationException
Indicates if the internal route context should be generated.

Remarks

The GenerateInternalRouteContext property controls whether the VRP solver should create an internal Route NAContext upon Solve. This property can be set to True only when using the internal OD cost matrix pattern.

The internal Route NAContext can be used by the VRP solver to generate true route shapes and directions for the routes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
isGenerateInternalRouteContext in interface INAVRPSolver
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setGenerateInternalRouteContext

public void setGenerateInternalRouteContext(boolean value)
                                     throws IOException,
                                            AutomationException
Indicates if the internal route context should be generated.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setGenerateInternalRouteContext in interface INAVRPSolver
Parameters:
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getExternalODCostMatrix

public INAODCostMatrix getExternalODCostMatrix()
                                        throws IOException,
                                               AutomationException
The external OD cost matrix object.

Remarks

The ExternalODCostMatrix property can be used to specify an externally-created NAODCostMatrixResult object or custom object that implements the INAODCostMatrix interface for use within the VRP solver Solve operation. The impedance and accumulate attributes for this matrix object must agree with those of the VRP solver settings.

The ExternalODCostMatrix property value is NULL by default. This property should only be set when the INAVRPSolver.InternalODCostMatrixType is equal to esriNAODCostMatrixNone. This property is also not persisted. When a VRP solver instance is re-hydrated, the value for this property is NULL.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getExternalODCostMatrix in interface INAVRPSolver
Returns:
A reference to a com.esri.arcgis.networkanalyst.INAODCostMatrix
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setExternalODCostMatrixByRef

public void setExternalODCostMatrixByRef(INAODCostMatrix matrix)
                                  throws IOException,
                                         AutomationException
The external OD cost matrix object.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setExternalODCostMatrixByRef in interface INAVRPSolver
Parameters:
matrix - A reference to a com.esri.arcgis.networkanalyst.INAODCostMatrix (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getTimeFieldUnits

public int getTimeFieldUnits()
                      throws IOException,
                             AutomationException
The units for time fields in the NA classes.

Remarks

The TimeFieldUnits property specifies the unit of time to associate with the time-based input and output field values of NAClasses within a VRP NAContext. Examples of such time-based fields include the ServiceTime field on the Orders NAClass and the CostPerUnitTime field on the Routes NAClass. This time unit need not agree with the time unit of the impedance cost attribute. For example, the client may use an impedance cost attribute based on minutes but use seconds for the time-based field values.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getTimeFieldUnits in interface INAVRPSolver
Returns:
A com.esri.arcgis.geodatabase.esriNetworkAttributeUnits constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setTimeFieldUnits

public void setTimeFieldUnits(int units)
                       throws IOException,
                              AutomationException
The units for time fields in the NA classes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setTimeFieldUnits in interface INAVRPSolver
Parameters:
units - A com.esri.arcgis.geodatabase.esriNetworkAttributeUnits constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getDistanceFieldUnits

public int getDistanceFieldUnits()
                          throws IOException,
                                 AutomationException
The units for distance fields in the NA classes.

Remarks

The DistanceFieldUnits property specifies the unit of distance to associate with the distance-based input and output field values of NAClasses within a VRP NAContext. Examples of such distance-based fields include the TotalDistance field and the CostPerUnitDistance field on the Routes NAClass. This distance unit need not agree with the distance unit of the accumulate cost attribute. For example, the client may use an accumulate cost attribute based on kilometers but use miles for the distance-based field values.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getDistanceFieldUnits in interface INAVRPSolver
Returns:
A com.esri.arcgis.geodatabase.esriNetworkAttributeUnits constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setDistanceFieldUnits

public void setDistanceFieldUnits(int units)
                           throws IOException,
                                  AutomationException
The units for distance fields in the NA classes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setDistanceFieldUnits in interface INAVRPSolver
Parameters:
units - A com.esri.arcgis.geodatabase.esriNetworkAttributeUnits constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getDefaultDate

public Date getDefaultDate()
                    throws IOException,
                           AutomationException
The date to use for time windows without dates.

Remarks

The DefaultDate property is used to specify the default date portion of date-based fields (where FieldType = esriFieldTypeDate) within the NAClasses of a VRP NAContext. Fields of type esriFieldTypeDate can actually be used to specify both date-time values (e.g., June 1, 2008, 8AM) and time-only values (e.g., 8AM). Time-only values will be interpreted by the VRP solver as having a date portion equal to the DefaultDate property value.

For example, if a date-based field value within a particular NAClass of a VRP NAContext is set as the time-only value 8AM and the DefaultDate property value is set as June 1, 2008, then the VRP solver will interpret this date-based field value as June 1, 2008, 8AM.

The DefaultDate property cannot be before January 1, 1900 or after December 31, 9999. By default, the DefaultDate property is set equal to the current date when the solver is created.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getDefaultDate in interface INAVRPSolver
Returns:
The date
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setDefaultDate

public void setDefaultDate(Date date)
                    throws IOException,
                           AutomationException
The date to use for time windows without dates.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setDefaultDate in interface INAVRPSolver
Parameters:
date - The date (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCapacityCount

public int getCapacityCount()
                     throws IOException,
                            AutomationException
The number of dimensions for object sizes.

Remarks

Capacities are used to model cumulative quantity constraints on the routes. These constraints typically arise from physical measurements and limit the total pickup and/or delivery quantities of orders associated with a route. The CapacityCount property specifies the number of different capacities that are being constrained. For example, if you are constraining weight and volume, the CapacityCount would be 2. Following this example, a route feature with its Capacities field value set to 2000 500 would indicate that it can transport a maxium weight of 2000 units (pounds) with a maximum volume of 500 units (cubic feet). An order feature might have its DeliveryQuantities field value set to 10 5 indicating that the weight of the order is 10 and its volume is 5.

The units for capacities are not specified in the VRP solver; furthermore, the ordering of the capacities in the string is arbitrary. This means that within a VRP analysis, capacities always need to be listed in the same sequence (in this example, weight and then volume) among all routes and orders. The number of tokens in these strings cannot exceed the CapacityCount property value.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getCapacityCount in interface INAVRPSolver
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setCapacityCount

public void setCapacityCount(int value)
                      throws IOException,
                             AutomationException
The number of dimensions for object sizes.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setCapacityCount in interface INAVRPSolver
Parameters:
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getTimeWindowViolationPenaltyFactor

public double getTimeWindowViolationPenaltyFactor()
                                           throws IOException,
                                                  AutomationException
The penalty factor for time window violation in the objective function.

Remarks

A time window violation occurs when a route arrives at an order, depot, or break after a time window has closed. The violation is the interval between the end of the time window and the arrival time. This property is used for calibrating time window violations within the solver objective function. For example, a penalty factor value of 5.0 means that a minute of time window violation increases the solver objective function value by the cost of five minutes of work time. The higher the penalty factor, the more the solver will favor solutions with smaller time window violations versus reducing overall route duration for the fleet. This penalty factor must be zero or positive, and cannot exceed one billion. The penalty influences the solver objective function during the optimization process, but is not included in the output route operating costs. The default value for this property is 1.0.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getTimeWindowViolationPenaltyFactor in interface INAVRPSolver
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setTimeWindowViolationPenaltyFactor

public void setTimeWindowViolationPenaltyFactor(double value)
                                         throws IOException,
                                                AutomationException
The penalty factor for time window violation in the objective function.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setTimeWindowViolationPenaltyFactor in interface INAVRPSolver
Parameters:
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getExcessTransitTimePenaltyFactor

public double getExcessTransitTimePenaltyFactor()
                                         throws IOException,
                                                AutomationException
The penalty factor for excess transit time in the objective function.

Remarks

Excess transit time is the amount of time exceeding the time required to travel directly between the paired orders. The excess time results from breaks or travel to other intermediate orders or depots between visits to the paired orders. This property is used for calibrating excess transit time between order pairs within the solver objective function. For example, a penalty factor value of 5.0 means that one minute of excess transit time increases the solver objective function value by the cost of five minutes of work time. The higher the penalty factor, the more the solver will favor solutions with less excess transit time between paired orders versus reducing overall route duration for the fleet. The penalty influences the solver objective function during the optimization process, but is not included in the output route operating costs. The default value for this property is 1.0.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getExcessTransitTimePenaltyFactor in interface INAVRPSolver
Returns:
The value
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setExcessTransitTimePenaltyFactor

public void setExcessTransitTimePenaltyFactor(double value)
                                       throws IOException,
                                              AutomationException
The penalty factor for excess transit time in the objective function.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setExcessTransitTimePenaltyFactor in interface INAVRPSolver
Parameters:
value - The value (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getOutputLines

public int getOutputLines()
                   throws IOException,
                          AutomationException
Indicates how route lines are generated.

Remarks

OutputLines specifies the type of line geometries that are generated by the NAVRPSolver object in the Routes NAClass.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getOutputLines in interface INAVRPSolver
Returns:
A com.esri.arcgis.networkanalyst.esriNAOutputLineType constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setOutputLines

public void setOutputLines(int value)
                    throws IOException,
                           AutomationException
Indicates how route lines are generated.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
setOutputLines in interface INAVRPSolver
Parameters:
value - A com.esri.arcgis.networkanalyst.esriNAOutputLineType constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isDirty

public void isDirty()
             throws IOException,
                    AutomationException
isDirty

Description

IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
isDirty in interface IPersistStream
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

load

public void load(IStream pstm)
          throws IOException,
                 AutomationException
load

Description

IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
load in interface IPersistStream
Parameters:
pstm - A reference to a com.esri.arcgis.system.IStream (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

save

public void save(IStream pstm,
                 int fClearDirty)
          throws IOException,
                 AutomationException
save

Description

IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
save in interface IPersistStream
Parameters:
pstm - A reference to a com.esri.arcgis.system.IStream (in)
fClearDirty - The fClearDirty (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSizeMax

public void getSizeMax(_ULARGE_INTEGER[] pcbSize)
                throws IOException,
                       AutomationException
getSizeMax

Description

IPersistStream is a Microsoft interface. Please refer to MSDN for information about this interface.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getSizeMax in interface IPersistStream
Parameters:
pcbSize - A Structure: com.esri.arcgis.system._ULARGE_INTEGER (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getClassID

public void getClassID(GUID[] pClassID)
                throws IOException,
                       AutomationException
getClassID

Description

IPersist is a Microsoft interface. Please refer to MSDN for information about this interface.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getClassID in interface IPersist
Parameters:
pClassID - A Structure: com.esri.arcgis.support.ms.stdole.GUID (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interfaceSupportsErrorInfo

public void interfaceSupportsErrorInfo(GUID riid)
                                throws IOException,
                                       AutomationException
interfaceSupportsErrorInfo

Description

Indicates whether the interface supports IErrorInfo.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
interfaceSupportsErrorInfo in interface ISupportErrorInfo
Parameters:
riid - A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

writeExternal

public void writeExternal(ObjectOutput out)
                   throws IOException
Specified by:
writeExternal in interface Externalizable
Throws:
IOException

readExternal

public void readExternal(ObjectInput in)
                  throws IOException,
                         ClassNotFoundException
Specified by:
readExternal in interface Externalizable
Throws:
IOException
ClassNotFoundException