| Overview | Group | Tree | Graph | Index | Concepts | 

An instance of this class is a path constraint in Concert Technology.
In order for the constraint to take effect, you must add it to a model
 with the template IloAdd or the member
 function IloModel::add and extract the model
 for an algorithm with the member function IloAlgorithm::extract.
What IloPathLength Does Not Do
The path-length constraint does not determine whether there is a path
 between nodes in a graph; rather, it constrains accumulations (such as flow)
 along a path. The filtering algorithm associated with this constraint works
 on the accumulation variables in the array lengths.
If you are looking for a Hamiltonian path, for example, (that is, one in
 which each node is visited exactly once), consider using instead the
 constraint IloAllDiff on the variables in
 the array next.
What IloPathLength Does
If we are given
maxNbPaths,maxNbPaths nodes, known as S, for starting nodes,maxNbPaths nodes, known as E, for ending nodes,then a path constraint insures that there exist at most
 maxNbPaths paths starting from a node in S, visiting nodes in
 N, and ending at a node in E.  Furthermore, each node will be
 visited only once, has only one predecessor and only one successor,
 and each node belongs to a path that starts from a node in S and
 ends at a node in E.
In particular, in an instance of IloPath, in the arrays
 next and cumul, 
[0, n-1] correspond to the nodes of
 N,[n, n+maxNbPaths-1] correspond to
 the nodes of E,[n+maxNbPaths,
 n+2*maxNbPaths-1] correspond to the nodes of S. In
 other words, the size of next and cumul is
 n+2*maxNbPaths.
next[i] is the node following node i on the
 current path.  cumul[i] is the accumulated cost from the
 beginning of the path to node i. The argument
 transit indicates the transition function.
When this constraint is satisfied, it insures that for all indices
 i in the range [0, n-1] or in [n+maxNbPaths,
 n+2*maxNbPaths-1], if next[i]==j and j is
 in [0, n+maxNbPaths-1], then cumul[i] +
 transit.transit(i,j) <= cumul[j].
When i is in the range [n, n+maxNbPaths-1],
 next[i] has no meaning because the nodes in E do not have
 successors, of course. In this case, the constraint deals with them by
 setting next[i] to i+maxNbPaths (that is, nodes of
 S).
Most member functions in this class contain assert
 statements. For an explanation of the macro NDEBUG (a way to
 turn on or turn off these assert statements), see the concept
 Assert and NDEBUG.
See Also:
IloAllDiff, IloConstraint, IloPathTransitFunction, IloPathTransitI
| Constructor Summary | |
|---|---|
public  | IloPathLength() | 
public  | IloPathLength(IloPathLength::ImplClass *) | 
public  | IloPathLength(const IloEnv, const IloIntVarArray, const IloNumVarArray, IloPathTransitFunction, IloInt, const char *) | 
public  | IloPathLength(const IloEnv, const IloIntVarArray, const IloIntVarArray, IloPathTransitFunction, IloInt, const char *) | 
public  | IloPathLength(const IloEnv, const IloIntVarArray, const IloNumVarArray, IloPathTransitI *, IloInt, const char *) | 
public  | IloPathLength(const IloEnv, const IloIntVarArray, const IloIntVarArray, IloPathTransitI *, IloInt, const char *) | 
| Method Summary | |
|---|---|
public IloPathLength::ImplClass * | getImpl() | 
Inherited Methods from IloConstraint | 
|---|
getImpl | 
Inherited Methods from IloIntExprArg | 
|---|
getImpl | 
Inherited Methods from IloNumExprArg | 
|---|
getImpl | 
Inherited Methods from IloExtractable | 
|---|
end, getEnv, getId, getImpl, getName, getObject, setName, setObject | 
| Constructor Detail | 
|---|
This constructor creates a path constraint in an environment.
In order for the constraint to take effect, you must add it to a model with the
 template IloAdd or the member function
 IloModel::add and extract the model for an algorithm
 with the member function IloAlgorithm::extract.
If the array next or cumul is not an appropriate length,
 then on platforms that support C++ exceptions when exceptions are enabled, this
 constructor will throw the exception InvalidArraysException.
This constructor creates a path constraint in an environment.
In order for the constraint to take effect, you must add it to a model with the
 template IloAdd or the member function
 IloModel::add and extract the model for an algorithm
 with the member function IloAlgorithm::extract.
If the array next or cumul is not an appropriate length,
 then on platforms that support C++ exceptions when exceptions are enabled, this
 constructor will throw the exception InvalidArraysException.
This constructor creates a path constraint in an environment.
In order for the constraint to take effect, you must add it to a model with the
 template IloAdd or the member function
 IloModel::add and extract the model for an algorithm
 with the member function IloAlgorithm::extract.
If the array next or cumul is not an appropriate length,
 then on platforms that support C++ exceptions when exceptions are enabled, this
 constructor will throw the exception InvalidArraysException.
This constructor creates a path constraint in an environment.
In order for the constraint to take effect, you must add it to a model with the
 template IloAdd or the member function
 IloModel::add and extract the model for an algorithm
 with the member function IloAlgorithm::extract.
If the array next or cumul is not an appropriate length,
 then on platforms that support C++ exceptions when exceptions are enabled, this
 constructor will throw the exception InvalidArraysException.
| Method Detail | 
|---|