Algorithmic staffing solutions for staff

At the gross level, the problem is simple: plan an army of personnel to cover one person per day, any day employees are divided into 3 pools, each staff has a vacation requirement, each staff has no more than 2 shifts per week, etc.

I would really like to do it manually, as it has been done in my organization for centuries. I would like to do something cool, like genetic algorithms (for example, [1] http://www.sersc.org/journals/IJAST/vol14/1.pdf ).

Are there any reliable alternatives to Open Source / free? It also looks like an optimization problem, can I run C ++, R, etc., to connect to some optimization library for this?

thanks

+7
source share
4 answers

You can try OptaPlanner (formerly called Drools Planner ), it is based on Java and open source.

+6
source

This is an optimization problem. It is known as a planning problem, oddly enough.: - D Depending on the size of the data, you may need metaheuristics, for example, genetic algorithms, optimization of swarm ant, etc., But I would start here by copying my own rule-based heuristic.

In principle, define the rules as associations between things (person A cannot be on vacation and at work at the same time), or scheduled conditions (only three people at any given time). Then create a schedule and insert all your employees one at a time. If the rule is violated during insertion, then do not insert or select another employee.

It should be, if you do it right, come up with a correct, but less optimal schedule, and then you can do cool things, such as defining statements (swap, move, 3-swap), which will give you (all valid graphs that may be reached by operator application). Then you can select the best schedule in the neighborhood and repeat. This is a descent around the neighborhood. But there are many neighborhood-based methods to choose from. I believe that Simulated Annealing is good for scheduling tasks.

+7
source

You might also be interested in a programming framework for limitations, many of which are open source, such as Choco (Java), Gecode (C ++), and others that have also been used for these types of problems, although I agree with ravloony that maybe It’s worth checking that the style he was talking about can do the trick for the problem you described.

+3
source

As there is only one person per day, it looks like it can be configured as a whole / binary programming problem. There are many packages that do integer programming. The hard part of these problems, no matter what method you decide to use to solve them, finds a brief way to identify the limitations of the problem. In this case, what are the exact requirements for the holidays, etc.

0
source

All Articles