Des plannings d’équipe sans casse-tête grâce à la programmation par contraintes
Congés, compétences, repos obligatoires, préférences… Construire un planning est un problème combinatoire. Voici comment un solveur peut s’en charger.
Construire le planning d’une équipe de vingt personnes sur un mois, c’est jongler avec des centaines de règles : les compétences de chacun, les repos obligatoires, les congés posés, l’équité des week-ends, les préférences personnelles. Beaucoup de responsables y passent une journée entière chaque mois.
C’est exactement le type de problème pour lequel la programmation par contraintes a été inventée.
Décrire plutôt que calculer
L’idée est simple : au lieu d’écrire un algorithme qui construit le planning étape par étape, on décrit ce qu’est un bon planning, et un solveur se charge de le trouver.
On déclare des variables (qui travaille quel jour, sur quel poste) et des contraintes :
- chaque poste doit être couvert par une personne compétente ;
- personne ne travaille plus de cinq jours d’affilée ;
- onze heures de repos minimum entre deux services ;
- les congés validés sont respectés.
Puis on ajoute un objectif : par exemple, répartir équitablement les week-ends et satisfaire un maximum de préférences.
# Extrait simplifié avec OR-Tools
for person in team:
for day in days[:-5]:
# Pas plus de cinq jours travaillés sur six jours consécutifs
model.add(sum(works[person, d] for d in day_window(day, 6)) <= 5)
Pourquoi c’est puissant
Le grand avantage de cette approche est sa souplesse. Quand une nouvelle règle apparaît (un nouvel accord d’entreprise, un poste qui demande deux personnes le samedi), on ajoute une contrainte. Pas besoin de réécrire l’algorithme.
Autre avantage : quand aucun planning ne respecte toutes les règles, le solveur peut indiquer lesquelles sont en conflit. C’est souvent une information précieuse en soi.
Garder l’humain dans la boucle
Un planning n’est pas qu’un problème mathématique. Dans les projets que je mène, l’outil propose un planning, le responsable l’ajuste, verrouille certaines affectations et relance le calcul pour le reste. L’objectif n’est pas de remplacer son jugement, mais de lui épargner la partie fastidieuse.
Par où commencer ?
Si vos plannings sont aujourd’hui construits dans un tableur, la première étape consiste à écrire noir sur blanc toutes les règles, y compris celles qui « vont de soi ». Cet exercice, à lui seul, révèle souvent des incohérences.
Vous voulez savoir si votre problème de planification peut être automatisé ? Discutons-en.