Hi all,
I am looking to understand some of the general modeling methods/structures that can be used to construct a shift scheduling problem for a project I am working on.
I have a decent amount of experience with jobshop modeling within OR-tools, but when approaching shift scheduling, decided to investigate what other methods can be used within OR-tools. I have read through numerous assignment and scheduling examples that are provided in the GitHub library and the most relevant non-"IntervalVar" approach to my project requirement is shift_scheduling_sat.py. I am wondering if there are significant performance advantages to avoiding the use of IntervalVars and sticking with Boolean/IntegerVars. I assume that just about every problem that can be modeled with Intervals can be reduced (hesitant to say simplified) to implement Boolean/Integer variables.
Are there alternative reasons as to why the shift_scheduling_sat.py does not use intervals, other than it's obviously not necessary? The differences that come to mind immediately:
- NoOverlap and Cumulative constraints would be easier to construct using intervals as they are already offered through the API.
- The use of intervals would automatically increase the number of vars within the problem thereby increasing the solution complexity (as I understand it, though open to correction).
- Sequence and Sum constraints seem more straightforward when dealing with booleans than intervals. Though I imagine these are similarly achievable through the use of circuits (like transition times in jsp).
In general, is there a specific set of requirements that would tend to shift the model architecture to favor intervals over boolean presences?
Many thanks,
Alex