Overview | Group | Tree | Graph | Index | Concepts |
Description |
Goals |
Parameters |
Closure |
Precedence Graph |
Transition Time and Cost |
There are two ways for the extractor to determine which global resource constraint is implicitly added to the Solver from Scheduler: the content of the model or the enforcement level parameters.
The content of the model is used when the Solver has only one way to enforce
the constraint. For example, the transition cost on a resource can only be
handled by the Solver with a sequence constraint posted on the resource.
Therefore, a sequence constraint is automatically posted if the unary
resource is defined with a transition cost. The goal IloRankForward
needs the disjunctive constraint on the unary and state resources. Therefore, when the IloRankForward
is used, the disjunctive constraint is automatically posted.
The enforcement level parameter is used along with categories of global
constraints and resource classes to select one or several global resource
constraints. The higher the enforcement level, the higher the computational
time allocated by the Solver for the constraint propagation on the resource.
For example, a capacity enforcement on a unary resource will add the disjunctive
constraint at IloBasic
level and set the edge finder at a higher level (such as IloMediumHigh
). Details of the enforcement level
parameter are discussed in
Resource Enforcement as Global Constraint Declaration.
A global resource constraint is therefore added to the Solver if either a
component of the model needs it, or if an interpretation of an enforcement
level exists. However, if the parameter is ignored in the Scheduler model
(for example, with IloActivity::ignoreResourceConstraints
), the global
constraint is not posted, regardless of any other modeling data.
IloRankForward
and IloRankBackward
add the disjunctive constraint on the related unary and state resources.
IloSequenceForward
and IloSequenceBackward
add the sequence constraint on the related unary resources.
IloIntervalList
and IloNumToNumStepFunction
are documented
in the extensions section of the IBM ILOG Concert Technology Reference Manual.
A non-empty instance of IloIntervalList
as break list parameter adds the breaks constraint on the related resources.
A non-empty instance of IloIntervalList
as capacity enforcement parameter adds the timetable constraint on the related resources.
A non-empty instance of IloIntervalList
as transition time enforcement parameter adds the timetable constraint on the related resources.
A non-empty instance of IloIntervalList
as must-be-in-use enforcement parameter adds the timetable constraint on the related state resources.
A non-empty instance of IloNumToNumStepFunction
as any of capacity max, capacity min, or initial level parameter adds the
timetable constraint on the related capacity resources.
A non-empty instance of IloNumToNumSegmentFunction
as any of capacity max, capacity min, or initial level parameter adds the
timetable constraint on the related continuous reservoir.
A non-empty instance of IloNumToAnySetStepFunction
as initial possible states adds the timetable constraint on the related state resources.
If a resource is not declared to be kept open, then the global constraints that manage a closed resource are added.
The usage of any of the following member functions of adds the precedence graph global constraint on the resource(s) of the invoking resource constraint.
The usage of the following constructor adds the disjunctive constraint or the type timetable constraint.
IloTransitionTime(IloResource resource, IloTransitionParam param, const char* name = 0);
Which constraint is added depends upon the type of the argument
resource
and its capacity enforcement parameter. The disjunctive constraint of the unary and state
resource subsumes the timetable constraint.
The usage of the following constructors will add the sequence constraint on the argument
resource
.
IloTransitionCost(IloUnaryResource resource, IloTransitionParam param, const char* name = 0); IloTransitionCost(IloUnaryResource resource, IloTransitionParam param, IloBool isNext, const char* name = 0);