Originally posted by: SystemAdmin
Hello,
There are two points:
1) Generally speaking, the two constraints are not equivalent.
When you write startOf(a)<=startOf(b), if interval variable b is absent, this will enforce startOf(a)<=0 (as the value of startOf(b) is 0 if no other value is specified). When you write startBeforeStart(a,b), if b is absent it won't have any effect on the start value of a. Of course similar difference applies when a is absent.
That's why for scheduling, we advise using the form startBeforeStart that handles the optionality status (and that should be more efficient in the engine).
If both interval variables a and b are necessarily present (not declared optional) in the model, then the two constraints are semantically equivalent.
2) This being said, in your case, both models seem to be infeasible. The first one reports an inconsistency at extraction time whereas the second one reports inconsistency in initial propagation. But in both cases this means that the model is infeasible it is just that the infeasibility is not detected at the same moment.
Philippe
#DecisionOptimization#OPLusingCPOptimizer