This is easier said than done. We don't have a nice break in the schedule at the end of the month. Assignments are bleeding into the next month:
|Schedule (partial view)|
One way to deal with this problem is to shift the window a bit more complicated way:
|Tailored rolling horizon algorithm|
This approach only really works if we don't have global constraints over all months. The danger is that we push the bad stuff into the future. That can even lead to infeasible sub-problems at the end. Luckily this model has no constraints that span all six months.
If we want we can solve the big model at the end using the solution we built up in parts as a starting point (using the mipstart option). If the algorithm is working as expected, this last big MIP model should not find solutions that are much better. This is indeed the case for my model. (Note that not all sub-problems are solved to optimality -- sometimes a small gap remains).