FRAMES NO FRAMES

Adding Global Resource Constraints from the Scheduler Model
PREVIOUS NEXT
Description
Goals
Parameters
Closure
Precedence Graph
Transition Time and Cost
Description

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.

Goals

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.

Parameters

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.

Closure

If a resource is not declared to be kept open, then the global constraints that manage a closed resource are added.

Transition Time and Cost

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);

PREVIOUS NEXT