AddNoOverlap with Optional Intervals
Extending the single-machine AddNoOverlap constraint to optional intervals, whose participation in the schedule is controlled by a presence Boolean. Covers feasibility checking, identifying conflicting pairs, and maximizing the number of present optional intervals (including with mandatory intervals).
Tutorial
Optional Intervals and AddNoOverlap
An optional interval is a scheduling interval whose existence is governed by a Boolean variable called its presence literal. When the interval is present and occupies the half-open window on the resource; when the interval is absent and contributes nothing to the schedule.
The AddNoOverlap constraint, applied to a list of intervals on a single machine, now requires only that any two present intervals be non-overlapping:
Absent intervals impose no restriction. Adding optional intervals to a model can therefore never turn a feasible schedule into an infeasible one — it only enlarges the search space.
For example, consider three optional intervals on one machine:
- : presence
- : presence
- : presence
The assignment is feasible: the only present intervals are and and so they don't overlap. The assignment is infeasible because and are both present and overlap on