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


18

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, vous aurez peut-être besoin de quelqu'un qui sait conduire pour faire la prise en charge / le retour des chiens, pour un autre, quelqu'un qui sait 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 le matin, 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 tout le monde. 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?



3
Et en passant, je n'ai jamais trouvé d'algorithme qui fonctionne pour ce problème au-delà des contraintes les plus simples dans le passé au-delà de "mettre tout le monde sur le calendrier en ignorant au hasard toute autre contrainte et les laisser permuter ou prendre des changements comme vous le souhaitez".

4
Il existe une solution complète disponible sur le site de JBoss Drools: optaplanner.org - vous devez codifier les contraintes d'horaire, telles que le nombre maximal d'heures par semaine, etc.
BobDalgleish

Je soupçonne que cela équivaut au problème SAT, qui est connu pour être NP-complet, mais il existe sans aucun doute de bons algorithmes qui obtiennent des résultats raisonnables.
David Conrad

Réponses:


16

Des algorithmes tels que Recherche locale ( recherche Tabou , Recuit Simulé , acceptation tardive ) fonctionnent très bien sur ces problèmes.

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


3
Pourriez-vous expliquer les algorithmes ou ajouter des liens vers un endroit qui le fait? Si vous ajoutez des liens, veuillez également ajouter un peu d'informations sur la page pertinente.
Adam Zuckerman

Terminé. Remarque: beaucoup d'entre eux sont également expliqués sur wikipedia.
Geoffrey De Smet
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.