by TimeWeSp on 6/1/2023, 8:23:40 PM
by stncls on 6/1/2023, 8:59:26 PM
To the author: what is the algorithmic approach to determine a schedule?
Once you add a couple of constraints or complications (e.g. can't be on-call two nights in a row, or on-call weekends count 1.5x because they are more "painful"), it quickly becomes a fairly general constraint satisfaction problem. This is a field with deep mathematics involved and decades of academic literature. As far as I know, reaching the state-of-the-art is extremely hard, and it is usually advised to use an off-the-shelf solver (a SAT [1] solver, or a constraint-programming solver like Gecode [2], or something more specific like OptaPlanner/TimeFold [3]).
If in addition you introduce happiness and/or fairness maximization, then you may want optimality guarantees, and then you need a full-blown MIP solver (which means slower solves, and the faster MIP solvers are expensive).
That said, the model used here seems to have a special structure, so a custom (greedy?) algorithm may make sense. Any pointer for more details on the model?
All of us who have worked oncall for years, know how stressful and difficult it can be. Among all the pain though, I've always felt that the scheduling of who-works-when is something which should be solvable in a great way. I've tried to build something which solves oncall scheduling. This post is a shameless plug for that thing. But besides trying to get someone to click on the link, I would also love to get some feedback and hear some input from all of you who work oncall. Is the scheduling painful enough to be worth my time to solve? What I've tried to do with this tool is: Make the scheduling FAIR. There's math and an algorithm deciding the schedule. All scheduling actions are available for all to see in a log. Make the people who get scheduled have great CONTROL over when they work or (more importantly) _don't_ work. Maintain a PREDICTABLE and STABLE schedule at least several months into the future, which doesn't get all scrambled if someone leaves the team and their shifts become holes in the schedule. Make the scheduling FULLY AUTOMATED so nobody needs to think about it more than at most once/quarter.
What do you think? Is this a problem worth trying to solve for real? If you look into the tool, do you think it looks like a good solution, or does it miss the mark somehow?