A test suite told me my scheduler was broken. It wasn’t. What actually happened is stranger and more useful: on one of the shipped sample rosters my solver said optimal and handed back a schedule with two night posts nobody was assigned to. Not a crash, not an infeasibility, not a timeout. A clean optimal, with holes in it. Here is what I measured, what I had wrong in my own code comments, and the one dependency I had been describing to people as a speed optimization when it is really a correctness one.
Continue reading “My Solver Said Optimal. Two Shifts Were Empty.”My Solver Said Optimal. Two Shifts Were Empty.
A solver status of optimal is a statement about a tolerance, not about your business rule.




