Optimiser un planning sous contraintes, c'est d'abord respecter toutes les contraintes dures (ce qui est impossible ou interdit), puis choisir, parmi les plannings qui les respectent, celui qui viole le moins les contraintes souples (ce qui est souhaitable). Les contraintes souples sont pondérées : chaque écart coûte un nombre de points fixé à l'avance. C'est ce barème, bien plus que l'algorithme, qui décide du planning retenu.
Contraintes dures et contraintes souples
La distinction est universelle en planification. La littérature sur la planification des infirmiers, problème de référence, la formule ainsi : les contraintes dures doivent être satisfaites pour que le planning soit valide, les contraintes souples sont souhaitables sans être obligatoires.
| Type | Exemples dans une association | Si elle n'est pas respectée |
|---|---|---|
| Dure | Une personne n'est pas à deux endroits en même temps | Planning invalide |
| Dure | La salle de danse a 12 places, le cours en a 15 | Planning invalide |
| Dure | Karim ne travaille jamais le mercredi | Planning invalide |
| Dure | Un cours de piano exige une salle avec piano | Planning invalide |
| Souple | Les maths de préférence avant 18 h | Pénalité |
| Souple | Éviter les créneaux « si nécessaire » | Pénalité |
| Souple | Limiter les temps morts entre deux cours | Pénalité |
| Souple | Équilibrer la charge entre bénévoles | Pénalité |
Une même règle peut être dure ou souple selon votre choix. « Pas plus de 4 h par semaine pour un bénévole » est dure si c'est un engagement pris envers lui, souple si c'est une simple intention.
Le principe de la pondération
Chaque contrainte souple reçoit un poids. Le planning part d'un score de 100 (ou de 0 pénalité), et chaque écart retire son poids. L'outil cherche le planning qui garde le meilleur score. La documentation de Google OR-Tools le résume : plutôt que d'énumérer toutes les solutions, il vaut mieux optimiser une fonction objectif. Dans son exemple de planification d'infirmiers, la meilleure solution satisfait 13 demandes sur 20 : l'optimum n'est pas la perfection, c'est le meilleur compromis possible.
Un exemple de barème
Voici un barème de départ, à adapter. Les valeurs sont illustratives.
| Écart | Pénalité |
|---|---|
| Séance non placée | 20 points |
| Séance posée sur un créneau « si nécessaire » | 2 points |
| Préférence forte non tenue | 3 points |
| Préférence légère non tenue | 1 point |
| Heure de temps mort entre deux séances d'une même personne | 0,5 point |
| Heure d'écart de charge au-delà de 1 h entre le plus et le moins chargé | 1 point |
Un exemple chiffré : deux plannings, deux barèmes
Une école de musique associative compare deux plannings de la même semaine, tous deux sans violation de contrainte dure.
- Planning A : toutes les séances placées ; 3 séances sur des « si nécessaire » ; 2 préférences fortes non tenues ; 4 heures de temps mort cumulées ; 3 heures d'écart de charge entre professeurs.
- Planning B : une séance non placée (l'atelier jazz) ; aucun « si nécessaire » ; 1 préférence forte non tenue ; 1 heure de temps mort ; 1 heure d'écart de charge.
Avec le barème ci-dessus
| Planning A | Planning B | |
|---|---|---|
| Séance non placée | 0 | 20 |
| « Si nécessaire » | 6 | 0 |
| Préférences fortes | 6 | 3 |
| Temps morts | 2 | 0,5 |
| Écart de charge | 2 | 0 |
| Score sur 100 | 84 | 76,5 |
Le planning A l'emporte : il a plus de petits défauts, mais il place tout.
Avec une séance non placée à 10 points seulement
Le planning B passe à 86,5 et dépasse A (84). L'outil choisirait alors de sacrifier l'atelier jazz pour économiser quelques « si nécessaire ». Même algorithme, même semaine, décision inverse : le barème est une décision politique de l'association, pas un détail technique. Il doit être écrit, discuté et stable.
Comment fixer les poids
- Classez vos souhaits par importance. Demandez au bureau : « entre un cours non placé et un professeur mécontent de son horaire, que préférez-vous ? ».
- Espacez les niveaux. Une échelle de type 1, 2, 5, 10, 20 évite qu'une accumulation de petits écarts ne l'emporte sur un gros.
- Testez sur une semaine connue. Si le planning obtenu vous choque, c'est le barème qu'il faut corriger, pas le planning à retoucher à la main.
- Gardez le barème stable d'une semaine à l'autre, sinon les comparaisons de score n'ont plus de sens.
Notre guide pour mesurer la qualité d'un planning détaille les indicateurs, et celui sur l'équité de charge explique comment mesurer l'écart entre intervenants.
Le piège des contraintes dures en trop
Chaque contrainte dure réduit l'espace des plannings possibles. Ajoutez-en trop, et il n'en reste aucun. Exemple : un club de basket déclare en dur « les U13 le mardi », « l'entraîneur des U13 seulement le jeudi » et « le gymnase B fermé le mardi ». Aucune solution n'existe, et l'outil ne peut que le signaler.
La bonne pratique :
- En dur : l'impossible physique (une salle, une personne, une capacité), le légal (repos, durées maximales pour les salariés), les engagements pris envers une personne.
- En souple, avec un poids élevé : tout le reste, même ce qui vous paraît très important. Un poids de 20 se comporte presque comme une contrainte dure, mais laisse une issue quand tout est bloqué.
Un bon outil, face à un problème impossible, indique quelle contrainte bloque et ce qu'il faudrait assouplir. Les guides sur l'écriture des règles et les exemples de règles de planning aident à les formuler au bon niveau.
Ce que fait l'algorithme, en bref
Un solveur explore les plannings possibles en deux temps : il construit une première solution valide en plaçant d'abord les séances les plus contraintes, puis l'améliore par petites modifications (déplacer une séance, échanger deux personnes) en gardant celles qui réduisent les pénalités. Le détail est expliqué dans notre guide sur le solveur de contraintes. Dans Accord, ce principe s'applique avec des contraintes strictes (disponibilités, compétences, capacité et équipement des salles, doubles réservations, charge maximale, règles strictes) et des contraintes souples (« si nécessaire », préférences, équité, temps morts, changements de salle), et le score sur 100 affiche le détail des points retirés ; voir la page produit.
Les erreurs fréquentes
- Tout mettre au même poids. Dix préférences légères finissent par peser plus qu'une séance non placée.
- Changer le barème à chaque plainte. Le planning devient imprévisible et personne ne comprend pourquoi.
- Optimiser l'invisible. Un écart de 0,5 point n'a souvent aucune importance pratique : visez un bon planning, pas un score parfait.
- Oublier la stabilité. Un planning légèrement meilleur qui déplace la moitié des séances par rapport à la semaine dernière est souvent pire pour l'équipe. Verrouillez ce qui fonctionne.
Questions fréquentes
Quelle est la différence entre une contrainte dure et une contrainte souple ?
Une contrainte dure doit être respectée pour que le planning soit valide : si elle est violée, le planning est rejeté. Une contrainte souple exprime un souhait : si elle est violée, le planning reste valide mais perd des points.
Comment pondérer les contraintes d'un planning ?
Classez vos souhaits par importance, attribuez des poids nettement espacés (par exemple 1, 2, 5, 10, 20), testez le barème sur une semaine connue et ajustez-le jusqu'à ce que le planning choisi corresponde à vos priorités. Gardez-le ensuite stable.
Pourquoi mon logiciel ne trouve-t-il aucune solution ?
Parce que vos contraintes dures se contredisent, souvent sans que ce soit visible. Transformez les moins indispensables en contraintes souples à poids élevé, ou demandez à l'outil quelle règle bloque.
Un planning optimal est-il un planning parfait ?
Non. C'est le meilleur compromis possible entre des souhaits incompatibles, selon votre barème. Un planning optimal laisse presque toujours quelques préférences insatisfaites.