Since the relocate neighborhood involves moving resource constraints between resources, it is possible that a move will create a long cycle of temporal constraints. If the problem has a long horizon, it may take a significant amount of time for this cycle to be detected with the standard levels of constraint propagation. To avoid such a situation, we set the precedence enforcement on the Scheduler environment to IloHigh
. This level of enforcement uses the schedule precedence graph to maintain the precedence graph among the activities in the schedule. A loop in this graph is detected quickly.
As in the previous chapter, we do not need the propagation of the resource capacity constraints to ensure soundness because each move defines a sequence of resource constraints on each resource. Therefore, for the local search, we ignore the resource capacity constraints
IloSchedulerEnv schedEnv(env);
schedEnv.setPrecedenceEnforcement(IloHigh);
schedEnv.getResourceParam().ignoreCapacityConstraints();
|
.