I am working on solving an optimization problem that has grounds in employee rostering. The problem is:
- I have Staffing levels(number of employees needed in a particular hour and this is for whole day ie 24 columns).
- I have Working time rules defined by state laws and employee's preferences.
I expect output to be shifts generated by staffing levels after considering all rules and preferences.
Most rostering solutions works in a two step process, first makes shifts from staffing levels and then assign shifts to employees secondly. I'd like something similar to branch and price which is only a single step process.(I don't expect anyone to read this link, just for reference :))
Now, I am thinking of why implement whole branch and price algorithm and use something that exists already,solvers like Gurobi or Optaplanner. Solvers likely work on fixed facts and try to match the best among them to a variable(employee in this case) but they are not of nature to generate facts(shifts in this case).
I only need answers just to figure out the way this problem should be solved and I don't expect someone to put any implementation here. So, should I use solvers for such problems or build my own algorithm. Any heads up?