web-dev-qa-db-fra.com

Quel algorithme dois-je utiliser pour créer une fonction de planification automatique du personnel?

Imaginez une petite entreprise locale (dans mon cas, une garderie pour chiens) avec quelques dizaines d'employés à temps partiel. L'objectif est de créer automatiquement des horaires hebdomadaires du personnel. Ma question porte sur les approches algorithmiques à explorer pour ce problème.

Il y a de nombreuses contraintes à garder à l'esprit, principalement (1) la disponibilité du personnel et (2) les besoins de chaque équipe, non seulement le nombre d'employés pour chaque équipe mais les compétences nécessaires pour chaque équipe (par exemple, pour une certaine équipe, il se peut que vous ayez besoin de quelqu'un qui sache conduire pour faire des enlèvements/restitutions de chiens, pour un autre, quelqu'un qui sait comment donner des bains aux chiens, etc.).

D'autres contraintes incluent des choses comme éviter ou nécessiter certains combos de personnel - peut-être en raison de conflits de personnalité d'une part, ou du besoin de formation par osmose d'un cadre à un personnel subalterne de l'autre.

De plus, il y a des préférences à prendre en compte. Certains membres du personnel préfèrent les matins, deux jours de suite plutôt que de dire lundi et jeudi, etc. Nous savons que nous ne pouvons pas toujours répondre aux préférences de chacun. En fait, nous avons une hiérarchie dont les employés obtiennent les premières notes sur leurs choix.

J'ai le pressentiment qu'il existe un moyen de réduire ou d'exprimer ce problème dans un algorithme existant, déjà résolu. Mais je ne sais pas quels algorithmes explorer. Quels algorithmes spécifiques existants seraient les plus prometteurs?

19
Ghopper21

Des algorithmes tels que la recherche locale ( recherche Tab , recuit simulé , acceptation tardive ) fonctionnent très bien sur de tels problèmes.

Comme le suggère Bob, si vous travaillez en Java, jetez un œil à OptaPlanner (open source). Voir cette vidéo sur liste des employés .

16
Geoffrey De Smet