When scheduling staff on a set of tasks, it can be interesting to introduce makespan constraints of the form "the makespan of a staff member cannot exceed a certain value inside a given time interval".
It should be possible to implement this propagator as follows:
Given a staff member and a makespan constraint (a makespan range and maximum makespan duration in that range):
Look at all the tasks whose ECT is not before the start of the makespan range.
Take the smallest LST for all of those tasks (the latest the staff member is guaranteed to need to be assigned).
Take the maximum of this value with the start of the makespan range.
If the time available up until the end of the makespan is less than the maximum makespan, finish (no constraint).
Otherwise: adjust the LCT for all the other tasks that this staff member participates in, to avoid exceeding the maximum makespan.
A symmetric propagator adjusts the EST.
This should be straightforward as we already have access to a vector containing the ECTs in sorted order.
When scheduling staff on a set of tasks, it can be interesting to introduce makespan constraints of the form "the makespan of a staff member cannot exceed a certain value inside a given time interval".
It should be possible to implement this propagator as follows:
Given a staff member and a makespan constraint (a makespan range and maximum makespan duration in that range):
A symmetric propagator adjusts the EST.
This should be straightforward as we already have access to a vector containing the ECTs in sorted order.