Shift Scheduler Blog
Planification continue des horaires : comment l’historique améliore les plannings avec l’IA

La plupart des outils de planification traitent chaque planning comme un projet séparé.
Pour un planning hebdomadaire simple, cela peut suffire. Mais avec de vraies équipes, cette logique crée vite des problèmes. Si vous planifiez juillet aujourd’hui et août le mois prochain, le planning d’août doit quand même savoir ce qui s’est passé à la fin du mois de juillet.
Une personne qui a travaillé de nuit le 31 juillet peut avoir besoin de repos le 1er août. Quelqu’un qui a déjà fait trop de nuits en juillet ne devrait pas être le premier choix pour en faire davantage en août. Et une rotation jour, nuit, repos ne devrait pas repartir de zéro simplement parce que le mois a changé.
C’est exactement le problème que résout la planification continue des horaires.
Qu’est-ce que la planification continue des horaires ?
La planification continue des horaires signifie que le système utilise l’historique récent des créneaux lorsqu’il prépare un nouveau planning.
Au lieu de regarder uniquement la période demandée, le système de planification avec IA vérifie aussi les créneaux précédents et les utilise comme contexte. Le nouveau planning est toujours créé uniquement pour les dates demandées par l’utilisateur, mais le solver comprend ce qui s’est passé juste avant.
Dans la planification d’équipe, c’est important parce que beaucoup de règles dépassent les limites d’une période de planification :
- repos après les créneaux de nuit
- nombre maximal de jours travaillés d’affilée
- limites d’heures hebdomadaires
- chevauchements entre créneaux de nuit
- modèles de rotation comme jour, nuit, repos
- répartition équitable des créneaux difficiles
- équilibre des heures totales dans le temps
Sans historique, le planificateur peut produire un planning qui semble valide à l’intérieur du mois sélectionné, mais qui paraît injuste, irréaliste ou risqué dans la pratique.
Le problème pratique : les frontières des mois sont artificielles
Les responsables planifient souvent par périodes fixes : une semaine, deux semaines ou un mois.
Mais une équipe ne repart pas à zéro au début de chaque période.
Par exemple :
- Un créneau de nuit le dimanche peut nécessiter un lundi de repos.
- Une personne qui a travaillé cinq jours avant le début de la nouvelle période peut déjà être au maximum de jours consécutifs.
- Une limite hebdomadaire s’applique encore si la période demandée commence au milieu de la semaine.
- Un créneau de nuit peut commencer avant la période demandée et se terminer pendant celle-ci.
- L’équité doit tenir compte du travail difficile récent, pas seulement du nouveau planning.
C’est pourquoi un bon planificateur d’horaires avec IA a besoin de l’historique du planning. La période demandée n’est que la fenêtre de sortie. Le solver a besoin de plus de contexte pour prendre une décision sûre et équitable.
Comment Shift Scheduler utilise l’historique
Shift Scheduler garde une demande simple côté utilisateur : vous pouvez toujours planifier une période maximale de 31 jours.
En interne, le système ajoute toutefois deux fenêtres automatiques d’historique :
| Fenêtre d’historique | Durée | Objectif |
|---|---|---|
| Historique des contraintes | 7 jours avant la date de début demandée | Règles de repos, chevauchements, nombre maximal de jours consécutifs, limites journalières et hebdomadaires, continuité sûre des rotations |
| Historique d’équité | 60 jours avant la date de début demandée | Équilibre des heures totales et des modèles de créneaux, y compris la répartition des nuits |
La règle importante est simple :
Aucun créneau n’est créé, modifié ou attribué avant la date de début demandée.
L’historique sert uniquement de contexte. Il aide le solver CP-SAT à comprendre la situation réelle, mais les nouvelles affectations restent limitées à la période à planifier.
Pourquoi il existe deux fenêtres d’historique
Tout l’historique du planning ne doit pas influencer le solver de la même façon.
Une partie de l’historique est opérationnelle. Elle peut rendre une affectation impossible.
Par exemple, si une personne a travaillé de nuit hier et que la règle impose un repos aujourd’hui, le solver doit l’exclure du créneau d’aujourd’hui. C’est un fait de planification non négociable.
Une autre partie de l’historique concerne l’équité. Elle doit guider l’optimisation, mais elle ne doit pas laisser volontairement du travail non couvert lorsqu’une affectation réalisable existe.
Par exemple, si une personne a fait beaucoup de nuits au cours des deux derniers mois, le planificateur devrait privilégier d’autres personnes qualifiées pour les nouvelles nuits. Mais la couverture reste prioritaire.
C’est pourquoi Shift Scheduler sépare l’historique en deux groupes :
constraintHistorypour les règles opérationnellesfairnessHistorypour le calcul de l’équité
Cette séparation rend le comportement du système plus prévisible. L’historique récent peut bloquer les affectations dangereuses ou invalides, tandis qu’un historique plus long aide à produire un planning mieux équilibré.
Ce que contrôle l’historique des contraintes
L’historique des contraintes remonte aux 7 jours précédant le fromDate demandé.
Il est utilisé pour les règles qui doivent comprendre le travail récent :
- repos après certains modèles de créneaux
- nombre maximal de jours travaillés d’affilée
- limites d’heures par jour
- limites d’heures par semaine
- contrôles des chevauchements
- créneaux de nuit qui débordent sur la période demandée
- rotations flexibles comme jour, nuit, repos
Exemple :
Si la période demandée commence le 1er août et qu’une personne a travaillé de nuit le 31 juillet, le solver peut considérer le 1er août comme un jour de repos obligatoire lorsque la règle impose du repos après les nuits.
Le planificateur ne crée pas et ne modifie pas le créneau du 31 juillet. Il utilise simplement ce créneau pour prendre la bonne décision pour le 1er août.
Ce que contrôle l’historique d’équité
L’historique d’équité remonte aux 60 jours précédant le fromDate demandé.
Il est utilisé uniquement pour le score et l’équilibrage :
- heures totales par personne
- combinaison des modèles de créneaux par personne
- répartition des créneaux de nuit
- utilisation récente excessive des modèles les plus difficiles
Exemple :
Si Alice a travaillé beaucoup de nuits au cours des 60 derniers jours et que Bob est également qualifié pour les nuits, le solver devrait privilégier Bob pour le prochain créneau de nuit lorsque c’est possible.
Ce n’est pas une équité parfaite, car la planification du personnel implique toujours des compromis. Mais c’est nettement mieux que de traiter chaque nouveau mois comme une page blanche.
La couverture reste prioritaire
L’utilisation de l’historique ne doit pas dégrader le planning en laissant des créneaux vides uniquement pour des raisons d’équité.
Shift Scheduler garde la couverture comme première phase de résolution. Le solver essaie d’abord de couvrir autant de créneaux que possible dans la période demandée, tout en respectant les contraintes strictes. L’équité est traitée ensuite, dans l’objectif d’optimisation.
Cela signifie que l’historique d’équité peut influencer la personne affectée, mais ne doit pas laisser volontairement un créneau non attribué lorsqu’il peut être couvert.
Dans la planification des équipes avec IA, cette distinction est essentielle :
- les contraintes strictes protègent la sécurité, la conformité et la faisabilité
- l’historique d’équité améliore la qualité du planning
- la couverture reste l’objectif opérationnel principal
Planification continue et optimisation CP-SAT
Shift Scheduler utilise un solver CP-SAT pour optimiser les plannings.
CP-SAT est bien adapté à la planification du personnel, car le problème contient de nombreuses variables et contraintes :
- quelle personne peut travailler sur chaque créneau
- quels créneaux se chevauchent
- qui n’est pas disponible
- combien d’heures chaque personne peut travailler
- quelles règles de repos s’appliquent
- quelles affectations sont les plus équitables
- quels modèles de rotation devraient continuer
La planification continue ajoute les faits récents à l’entrée du solver. Le solver évalue alors les affectations de la période demandée avec une vision plus précise du planning précédent.
En clair :
Le solver ne demande pas seulement : "Qui peut travailler sur ce créneau ?"
Il demande : "Qui peut travailler sur ce créneau, compte tenu de ce que cette personne a déjà travaillé récemment ?"
Exemple : équité des nuits d’un mois à l’autre
Imaginons que le planning de juillet ressemble à ceci :
- Alice a travaillé 8 créneaux de nuit.
- Bob a travaillé 2 créneaux de nuit.
- Alice et Bob peuvent tous les deux travailler de nuit.
- Le planning d’août contient 4 nouveaux créneaux de nuit.
Si le solver d’août ignore juillet, Alice et Bob peuvent sembler aussi équilibrés l’un que l’autre au début du mois d’août.
Avec l’historique d’équité, le solver voit qu’Alice a assumé davantage de travail de nuit récemment. Lorsque c’est possible, il peut attribuer plus de nouvelles nuits d’août à Bob ou à d’autres personnes éligibles.
C’est précisément là que la planification continue améliore la satisfaction des équipes. Elle réduit le sentiment que les créneaux difficiles reviennent de façon aléatoire ou injuste.
Exemple : règles de repos au-delà de la limite du mois
Imaginons cette règle :
Après un créneau de nuit, la personne doit avoir au moins un jour de repos.
Maintenant, imaginons cette situation :
- 31 juillet : Alice travaille de 19:00 à 07:00.
- 1er août : le planificateur doit couvrir un créneau de jour.
Sans historique des contraintes, le planning d’août peut affecter Alice le 1er août, car le solver ne voit que le mois d’août.
Avec 7 jours d’historique des contraintes, le solver voit le créneau de nuit du 31 juillet et bloque l’affectation d’Alice le 1er août.
Le planning généré est plus sûr et plus réaliste.
Exemple : limites hebdomadaires lorsque la période commence en milieu de semaine
Les limites hebdomadaires ne correspondent pas toujours aux périodes de planification.
Si le planning demandé commence un mercredi, une personne peut déjà avoir travaillé le lundi et le mardi. Ces heures doivent compter dans la limite hebdomadaire.
L’historique des contraintes donne au solver suffisamment d’informations pour éviter des heures supplémentaires involontaires ou des affectations irréalistes au-delà de la limite hebdomadaire.
C’est particulièrement important dans la santé, l’hôtellerie-restauration, le commerce de détail et toute activité soumise à des limites d’heures légales ou contractuelles.
Ce que cette fonctionnalité ne fait pas
La planification continue est volontairement ciblée.
Elle ne permet pas au planificateur de couvrir des créneaux avant la date de début demandée. Elle ne réécrit pas non plus les créneaux passés.
Elle ne cherche pas à résoudre tous les problèmes possibles de rotation. Les rotations répétitives exactes sans date d’ancrage auront encore besoin de dates de référence explicites dans une future version. L’approche actuelle se concentre sur la continuité sûre des rotations flexibles, lorsque le travail précédent doit imposer du repos dans la période demandée.
Ainsi, le comportement reste compréhensible :
- la période demandée reste limitée à 31 jours
- l’historique des contraintes remonte à 7 jours
- l’historique d’équité remonte à 60 jours
- les créneaux historiques sont des créneaux normaux, pas des demandes d’absence
- les nouvelles affectations sont créées uniquement dans la période demandée
Résumé pour la base de connaissances
Utilisez ce résumé pour expliquer la planification continue dans Shift Scheduler :
- La planification continue des horaires utilise les créneaux précédents comme contexte pour un nouveau planning.
- Les utilisateurs demandent toujours une période de planification maximale de 31 jours.
- Le solver vérifie automatiquement les 7 jours avant le début demandé pour les contraintes opérationnelles.
- Le solver vérifie automatiquement les 60 jours avant le début demandé pour le calcul d’équité.
- L’historique des contraintes influence le repos, le nombre maximal de jours consécutifs, les limites hebdomadaires, les limites journalières, les chevauchements, les créneaux de nuit et la continuité des rotations flexibles.
- L’historique d’équité influence l’équilibre des heures totales et des modèles de créneaux, y compris la répartition des nuits.
- L’historique ne crée, ne modifie et n’attribue aucun créneau avant la date de début demandée.
- La couverture est optimisée en premier, donc l’historique d’équité ne doit pas laisser volontairement des créneaux de la période demandée non attribués.
- CP-SAT utilise le contexte historique pour rendre les affectations de la période demandée plus sûres et plus équitables.
Questions fréquentes
Qu’est-ce que la planification continue des horaires ?
C’est une planification du personnel qui utilise l’historique récent des créneaux lorsqu’elle crée un nouveau planning. Elle aide les règles et l’équité à se poursuivre d’une semaine ou d’un mois à l’autre, au lieu de repartir de zéro à chaque nouvelle période.
Pourquoi l’historique compte-t-il dans la planification des horaires avec IA ?
L’historique compte parce que les règles de repos, l’équité des nuits, les limites hebdomadaires et les rotations dépassent souvent les limites de la période sélectionnée. Un planificateur qui ignore le travail récent peut produire des plannings qui semblent valides, mais qui sont injustes ou risqués.
Shift Scheduler planifie-t-il plus de 31 jours à la fois ?
Non. La période demandée par l’utilisateur reste limitée à 31 jours. Les fenêtres d’historique de 7 et 60 jours sont du contexte interne, pas des dates supplémentaires dans lesquelles créer de nouveaux créneaux.
L’historique peut-il créer des créneaux avant la date de début ?
Non. Les créneaux historiques sont uniquement du contexte en lecture. Shift Scheduler crée de nouvelles affectations seulement dans la période demandée.
Comment l’historique d’équité aide-t-il pour les créneaux de nuit ?
L’historique d’équité permet à l’optimisation de voir qui a travaillé beaucoup de nuits récemment. Lorsque plusieurs personnes qualifiées peuvent couvrir un nouveau créneau de nuit, le solver peut privilégier une personne avec moins d’affectations de nuit récentes.