NO FRAMES

Class IloPathLength

Definition file: ilconcert/ilomodel.h

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

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,

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:

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

IloPathLength

public IloPathLength()
This constructor creates an empty handle. You must initialize it before you use it.

IloPathLength

public IloPathLength(IloPathLength::ImplClass * impl)
This constructor creates a handle object from a pointer to an implementation object.

IloPathLength

public IloPathLength(const IloEnv env, const IloIntVarArray next, const IloNumVarArray cumul, IloPathTransitFunction transit, IloInt nbPaths, const char * name)

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.


IloPathLength

public IloPathLength(const IloEnv env, const IloIntVarArray next, const IloIntVarArray cumul, IloPathTransitFunction transit, IloInt nbPaths, const char * name)

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.


IloPathLength

public IloPathLength(const IloEnv env, const IloIntVarArray next, const IloNumVarArray cumul, IloPathTransitI * pathTransit, IloInt nbPaths, const char * name)

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.


IloPathLength

public IloPathLength(const IloEnv env, const IloIntVarArray next, const IloIntVarArray cumul, IloPathTransitI * pathTransit, IloInt nbPaths, const char * name)

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

getImpl

public IloPathLength::ImplClass * getImpl()
This member function returns a pointer to the implementation object of the invoking handle.