I would like to solve a scheduling problem where, I am able to maximize the number of consecutive shifts a employee may have, therefore minimizing the likelihood of them not showing up for a single, short shift on an odd day. However, I want to preferentially give shifts to better performers - where 'performance' is an arbitrary score. It is okay for some employees to get a low number of or 0 shifts.

The approach I believe I need to take is to tier each employee by to give them a maximum and minimum number of hours for the algorithm to try to achieve, however I would prefer to only have maximum hours and for the algorithm to always select a better performer over a worse performer.

Is anyone able to suggest an alternative approach?

  • $\begingroup$ Welcome to CS.SE! The first step is to turn this into a well-defined optimization problem. You need to identify the set of schedules that are legal (valid to consider, even if not necessarily optimal), and then identify an objective function you want to maximize (this measures the "value" or "goodness" of a candidate schedule, and formalizes how you will trade off your goal of consecutive shifts vs your goal of giving shifts to better performers). That depends on your particular situation, so only you can select those -- we can't do that for you. (continued) $\endgroup$ – D.W. Jul 6 '17 at 6:30
  • $\begingroup$ And until you do that, we can't help with an algorithmic solution. So I suggest you edit the question to add that information. $\endgroup$ – D.W. Jul 6 '17 at 6:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.