Planification du personnel
Planification du personnel par solveur CP-SAT. En clair : chaque règle est vérifiée pour chaque personne, chaque jour du mois, et le planning sort en quelques minutes.
Le problème de l'employee scheduling
L'employee scheduling consiste à affecter des ressources à des créneaux sur une période donnée, en respectant un ensemble de contraintes et en optimisant plusieurs objectifs simultanément.
C'est un problème classique d'optimisation combinatoire. Dès que le nombre de ressources, de créneaux et de contraintes augmente, le nombre de combinaisons possibles dépasse les capacités de calcul manuel. Les outils classiques ne peuvent pas explorer cet espace de solutions. Le solveur CP-SAT le fait en minutes.
Google documente ce cas d'usage avec un exemple officiel d'employee scheduling dans la documentation OR-Tools.
Modélisation
Planopti traduit les données opérationnelles du client en un modèle mathématique compréhensible par CP-SAT. Le modèle repose sur trois composants :
- Variables de décision
assign[r, d, s]: une variable booléenne pour chaque triplet ressource/jour/créneau. Si la variable vaut 1, la ressource est affectée à ce créneau ce jour-là - Variables de repos
is_off[r, d]: une variable booléenne indiquant si la ressource est en repos - Variables de comptage :
total_minutes[r],total_off_days[r],shifts_per_type[r, t]pour le suivi des volumes et l'équilibrage - Fonction objectif : une somme pondérée de pénalités que le solveur cherche à minimiser
Pour un problème de taille réelle, cela peut représenter plus de 100 000 variables booléennes et plusieurs milliers de contraintes. Le solveur gère aussi les variables d'écart (min/max par groupe) et les variables de pénalité pour les objectifs souples.
Contraintes
Le solveur gère deux types de contraintes :
Contraintes dures (inviolables) : les règles qui ne peuvent jamais être enfreintes. Si aucune solution ne les respecte toutes, le solveur retourne un statut INFEASIBLE.
Contraintes souples (pénalisées) : les objectifs que le solveur cherche à satisfaire au mieux. Chaque violation génère une pénalité dans la fonction objectif. Plus la pénalité est élevée, plus l'objectif est prioritaire.
Les contraintes sont configurables. Le client définit ses propres règles métier, ses seuils et ses priorités. Le solveur les intègre automatiquement dans le modèle.
Équité
L'équité est un objectif central de l'employee scheduling. Le solveur minimise les écarts de charge entre les ressources d'un même groupe :
- Répartition équitable du volume de travail au sein de chaque groupe
- Répartition équitable des types de créneaux entre les ressources qualifiées
- Regroupement des périodes de repos pour éviter la fragmentation
L'équité est mesurée et optimisée par le solveur, pas approximée. Le résultat est un écart minimal, mathématiquement prouvé.
Interface
Planopti fournit une interface web qui permet au responsable de planification de gérer l'ensemble du processus : saisie des données, lancement de l'optimisation, visualisation des résultats et ajustements manuels.
Le résultat généré par le solveur n'est pas figé. Le responsable peut modifier des affectations, relancer le solveur avec de nouvelles contraintes, et exporter le résultat final. Toutes les opérations sont tracées.
Les données nécessaires
Un calcul de planning repose sur quatre ensembles de données, que toute exploitation possède déjà, le plus souvent dans des fichiers Excel.
- Les personnes : nom, type de contrat, qualifications détenues, volume horaire contractuel, et éventuellement le groupe ou l'équipe d'appartenance.
- Les postes : horaires de début et de fin, pauses, qualification requise, et durée payée.
- Le besoin : combien de personnes sur chaque poste, chaque jour du mois.
- Les indisponibilités : congés validés, formations, jours de repos fixes, arrêts en cours.
Aucune de ces données n'est nouvelle. La différence est qu'elles cessent d'être réparties dans plusieurs fichiers tenus par plusieurs personnes, pour devenir une seule entrée de calcul cohérente.
Quand le problème n'a pas de solution
Il arrive qu'aucun planning ne satisfasse toutes les règles. Le solveur retourne alors un statut d'infaisabilité et ne produit rien, plutôt que de rendre un planning qui enfreindrait une règle.
Ce cas est plus utile qu'il n'y paraît. Il signifie que vos règles et vos effectifs sont contradictoires sur ce mois-là : trop de postes à couvrir pour trop peu de personnes disponibles, ou une contrainte de repos incompatible avec la structure des horaires.
C'est une information que la construction manuelle ne donne jamais. À la main, on finit toujours par produire un planning : on comble les trous en acceptant une entorse, souvent sans la formaliser. Le calcul, lui, pose la question ouvertement avant la publication, ce qui laisse le temps d'arbitrer : renfort, heures supplémentaires assumées, ou révision du besoin.
Le rôle du planificateur après le calcul
Le planning produit n'est pas figé et n'est pas censé l'être. Il couvre les règles qu'on a su écrire, pas celles que personne n'a formulées.
Le planificateur relit, puis ajuste ce que lui seul connaît : une situation personnelle, une préférence jamais mise par écrit, un arrangement entre deux collègues. Chaque retouche manuelle est revérifiée par le moteur, qui signale immédiatement si elle casse une règle dure.
C'est la partie du métier qui ne s'automatise pas, et c'est précisément celle qui a le plus de valeur. Le calcul prend en charge la combinatoire ; le planificateur garde la connaissance des personnes et la responsabilité du planning publié.
Déploiement
Planopti est un logiciel de planification du personnel, en local ou hébergé, au choix. En mode local, aucune donnée ne quitte votre réseau. Voir notre page technologie pour les détails du déploiement.
Optimisez votre planification
Parlez-nous de votre exploitation. Nous vous montrerons comment la programmation par contraintes peut résoudre vos défis spécifiques.