Le calcul des tours en PPC
Dans ce chapitre, nous présenterons nos travaux de recherche sur le calcul des tours sur un horizon mensuel en utilisant la programmation par contraintes. Après un rappel des contraintes types, nous montrons dans un premier temps l’utilisation des contraintes globales AMONG et SEQUENCE du système CHIP pour résoudre ce problème au sein du projet GYMNASTE-COSYTEC. Puis nous traitons un problème similaire à l’aide des nos propres algorithmes rédigés en Visual Basic (projet EQUITIME). Nous présentons aussi les différentes interfaces conçues pour faciliter l’interaction entre le planificateur et le générateur automatique de planning. Le calcul des tours est défini comme l’affectation des étiquettes (par exemple matin, après-midi ou nuit) à chaque membre de l’équipe, pour chaque jour de l’horizon de planification, afin de couvrir des besoins exprimés en nombre de salariés par étiquette par jour. A la différence des plannings cycliques, ces besoins peuvent être différents chaque jour de la semaine et d’une semaine sur l’autre. Ceci correspond à l’affectation des vacations ou des horaires journaliers. L’activité précise des salariés heure par heure, n’est pas l’objet de l’affectation. *-8$’ Nous proposons un modèle pour l’affectation d’étiquettes aux agents, avec la satisfaction des différentes contraintes types qui seront définies au paragraphe § 3.2. Une variable est créée pour chaque agent pour chaque jour de planification. Par exemple la variable X(e,t) correspond à l’unique affectation de vacation (ou code horaire) de l’employé e le jour t. Le domaine de ces variables est constitué des différentes vacations admissibles pour cet employé à ce jour. 7!0″##. « #*&-‘$ « ‘.+&#)!’ Le modèle de la PPC est très bien adapté pour modéliser le calcul des tours, compte tenu de la distance entre les contraintes du problème et les contraintes disponibles dans l’outil PPC. La PPC permet de formaliser des contraintes comme : • Un salarié ne doit pas avoir un jour de repos isolé (ou repos sec). • Un salarié ne doit pas travailler un jour sur le week-end. La PPC est une approche constructive : elle avance en réalisant des affectations de valeurs (codes horaires) aux variables (agent/jour). Afin de réduire l’espace de recherche, la PPC utilise des méthodes de vérification de consistance. Cette approche permet de traiter des cas de plannings partiels, par exemple suite aux affectations manuelles et interactives qui tiennent compte des situations exceptionnelles (ex. formation, congés annuels ou autres obligations de service ou personnelles). Ces situations peuvent être issues des négociations. Nous avons publié les différentes classes de contraintes agissant sur un planning acyclique dans [WHC+98]. Elles ont été reprises avec modifications dans les projets Gymnaste et EQUITIME. ‘0%(*%(#3″30.*& »‘9″!’$$’0 Les différentes classes de contraintes possèdent des propriétés contextuelles concernant leur validité : Les dates de validité : date début – date fin L’équipe dans laquelle la contrainte est applicable Les agents concernés : tout le monde ou une catégorie (avec d’éventuelles exceptions), un individu, etc. Activation ou désactivation : une contrainte peut être désactivée temporairement pendant la mise au point du planning Ces propriétés permettent aux contraintes d’être exprimées de façon très succincte et ergonomique. Ces expressions sont stockées dans la base de données telles quelles. Au moment du lancement, le solver crée une instance de toutes les contraintes pour tous les salariés concernés par le planning à réaliser. Cette méthode permet l’application immédiate des contraintes aux salariés, y compris les nouveaux venus, lorsque la contrainte est valable pour tous. L’inconvénient vient des exceptions (ex. tous sauf M.Durand), lorsque ces derniers ne font plus partie de l’équipe. On décrit les classes de contraintes GYMNASTE ainsi que les paramètres pour s’approcher de la réglementation en rigueur. A et B sont deux agents quelconques, Début et Fin sont des dates, et S1, S2 et S3 sont des codes horaires. Les différentes classes de contraintes possèdent une propriété commune : La nature des contraintes : positive/négative, obligation/préférence Dans les paragraphes suivants, les exemples de contraintes sont des textes générés par le logiciel suite à la phase de paramétrage. Le calcul des tours en PPC – 79 – ‘0.*& »( #& »‘0-‘.+ (1’ On peut générer un planning si l’on dispose des données suivantes : • L’horizon de calcul • Les codes horaires à affecter (elles constituent le domaine des variables) • Les besoins bruts par code horaire par jour de l’horizon • Les candidats à considérer pour la planification, en fonction du mode de planification (manuelle ou automatique) du salarié, des dates de service de ce dernier, sa qualification, etc. Ainsi le besoin net en nombre de salariés par code horaire par jour de l’horizon de planning est obtenu des besoins bruts en déduisant les pré-affectations des salariés. Le planning doit couvrir au moins les besoins nets, tout en tenant compte des autres contraintes décrites dans les paragraphes suivants. ‘0.*& »( #& »‘0- ‘. » « #*&%*&. »!’$$’ Cette contrainte sert à définir une pré-affectation à une date donnée, même très éloignée dans l’horizon de planning. Par extension, si on spécifie plusieurs codes horaires ce jour, cela indique les différentes possibilités retenues. Format : o Le [Date], [Agent] est affecté[Préférence] aux [Codes Horaires] Exemples : o Le X, A travaille toujours les tranches [S3, S1] o Le X, A travaille si possible les tranches [S3, S2] o Le X, A travaille si possible pas les tranches [S2, S1] o Le X, A travaille jamais les tranches [S3, S1] Pour tous les salariés concernés par le planning, le domaine des variables est défini par l’ensemble des besoins du planning. Dans le produit EQUITIME, cette expression permet d’indiquer une priorité aux salariés pour ces codes horaires. ‘0.*& »( #& »‘0-‘-#0%*#$# »3 Cette contrainte spécifie les différentes vacations admises pour cet agent ce jour. Format : o [Agent] [Préférence] travaille les [Codes Horaires] les jours [Ji] de [Début] à [Fin] Exemples : o A travaille toujours les tranches [S1, S2] les jours [j1] de Début à Fin o A travaille si possible les tranches [S1, S3] les jours [j1] de Début à Fin o A travaille si possible pas les tranches [S2] les jours [j2] de Début à Fin o A travaille jamais les tranches [S3] les jours [j1] de Début à Fin Le calcul des tours en PPC – 80 – Dans le produit EQUITIME, cette contrainte spécifie les jours de semaine où le salarié doit effectuer ces codes horaires. Cette disponibilité donne une priorité supplémentaire aux affectations.