1

I am working on solving an optimization problem that has grounds in employee rostering. The problem is:

  1. I have Staffing levels(number of employees needed in a particular hour and this is for whole day ie 24 columns).
  2. 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?

Sachin Verma
  • 3,712
  • 10
  • 41
  • 74
  • It solely depends on your formal model. If using 5 shifts obtains a better score than 4 shifts, and there is no additional costs involved in adding a shift, the solver will do it. You need a well-defined model for the global problem. Of course you would need some upper bound of shifts as you need to describe decision-variables which translate to shift x used or not. This applies to pretty much every approach: MIP, CP, SAT solvers. – sascha Nov 15 '17 at 13:23
  • @sascha, yes, in a case where adding a shift provides a better solution then solver should be able to do it. What sort of solver do you recommend? I know optaplanner but that discourages the use of generation of facts ie problem data. – Sachin Verma Nov 15 '17 at 13:54
  • That's a bit broad. If you got a Gurobi license and are skilled in MIP-formulations, it's probably the best first prototype approach (which could be tuned by callbacks providing local-search or heuristics). Powerful solutions would incorporate MIP, CP and local-search combined (with a lot of a-priori model-information). It might be possible, that Optaplanner is already build for that, but i don't know much about it. I also have to admit, that i still don't get your *facts* problem. – sascha Nov 15 '17 at 13:59
  • For the record, fact problem is for eg: if you have 10 shifts to assign an employee then a standard solver can pick the best out of those 10 but generating a 11th for that employee that's better than existing 10 is what I call adding a fact. – Sachin Verma Nov 15 '17 at 14:06
  • Then allow 100 shifts and add this to your objective (pushed down by some costs). You will need an upper bound for these approaches! (this approach probably scales better with MIP than CP; although a more tight bound is better e.g. 15). The core-idea: the number of shifts has to be incorporated into decision variables! – sascha Nov 15 '17 at 14:08
  • In general optimization models require a fixed planning horizon, Often we can find a good bound on this by applying some (simple) heuristic first. – Erwin Kalvelagen Nov 17 '17 at 21:34

0 Answers0