La contrainte stretch et son algorithme de filtrage - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

La contrainte stretch et son algorithme de filtrage

Description:

Chaque employ se voit affect l'emploi d'une semaine i puis la fin de la semaine il change d'emploi du temps pour celui de la semaine i 1 mod ? ... – PowerPoint PPT presentation

Number of Views:62
Avg rating:3.0/5.0
Slides: 25
Provided by: michaelcf
Category:

less

Transcript and Presenter's Notes

Title: La contrainte stretch et son algorithme de filtrage


1
La contrainte stretch et son algorithme de
filtrage
Par Michael C. Fernandes
2
Plan de la présentation
  • Introduction à la contrainte stretch
  • Définition de la contrainte stretch
  • Calcul des bornes des blocs
  • Règles de filtrage de la contrainte stretch
  • Quelques résultats et discussion
  • Conclusion

3
Introduction à la contrainte stretch
  • Stretch est une contrainte globale proposée par
    Gilles Pesant en 2001
  • Utile pour déterminer des horaires types dun
    ensemble demployés (affectation de  shifts  ou
    quarts de travail)
  • Deux types dhoraires sur lesquels stretch peut
    sappliquer
  • Les horaires cycliques
  • Un horaire est donné sur ? semaines et les
    employés sont divisés en ? équipes de travail
  • Chaque employé se voit affecté lemploi dune
    semaine i puis à la fin de la semaine il change
    demploi du temps pour celui de la semaine i 1
    mod ?
  • Chacun des employés a donc un horaire identique
    mais qui nest pas en phase avec celui des autres
    équipes
  • Les horaires personnels
  • Des horaires où lon doit tenir compte des
    restrictions ou préférences individuelles du
    personnel

4
Introduction à la contrainte stretch
  • Prend en compte des restrictions sur les
    séquences de travail
  • Spécifie le nombre minimal et maximal de valeurs
    identiques consécutives dans une séquence
  • Lapplication de la contrainte stretch se fait
    par son algorithme de filtrage qui procède en
    déterminant les intervalles dans lesquels
    lexécution dune même activité (un  stretch )
    peut avoir lieu

5
Introduction à la contrainte stretch
  • Références
  • Article principal
  • Gilles Pesant. A filtering algorithm for the
    stretch constraint. Dans Principles and Practice
    of Constraint Programming (CP 2001), number 2239
    in Lecture Notes in Computer Science, pages
    183-195. Springer-Verlag, 2001.
  • Autre article consulté
  • Guillaume Rochart, Narendra Jussien, Une
    contrainte Stretch expliquée, Journal
    électronique d'intelligence artificielle 3-31,
    2004. http//jedai.afia-france.org/detail.php?Pape
    rID31

6
Définition de la contrainte stretch
  • Définie sur une séquence de n variables de
    décision s0, s1,, sn-1 correspondant à des
    quarts de travail consécutifs
  • Dsi ? T représente le domaine des si où T t1,
    t2,, tm est lensemble des m activités
    possibles
  • La sous-suite si, s(i1) mod n, , sj est appelée
    un bloc (ou un  stretch ) si si s(i1) mod n
    sj mais que s(i-1) mod n ? si et s(j1) mod
    n ? sj
  • Létendue ou la taille dun bloc allant des
    indices i à j est sa longueur qui est donnée par
    1 (j - i) mod n
  • Le  mod n  est utilisé pour les horaires
    cycliques

7
Définition de la contrainte stretch
  • Un patron (ou  pattern ) est défini comme deux
    blocs contigus de différents types
  • Exemple t1, t1, t1, t2, t2 noté t1t2
  • La contrainte peut être formulée ainsi
    stretch(lts0, s1, , sn-1gt, ?1, ?2, p, ?)
  • ?1 et ?2 sont des vecteurs de longueur m
    représentant les étendues minimales et maximales
    des blocs pour chaque valeur de T
  • p est un ensemble de patrons
  • ? est un booléen indiquant si un horaire est
    cyclique ou non

8
Définition de la contrainte stretch
  • Remarques
  • La contrainte nest bien définie que lorsque ?1
    ?2
  • ?1 taille dun bloc ?2
  • La valeur vraie pour ? indique un horaire
    cyclique dans lequel le successeur de sn-1 est s0
  • La valeur fausse pour ? indique une séquence sans
    cycle et représente donc un horaire personnel
  • Lensemble p représente les patrons permis, mais
    la contrainte ne sen sert que pour raffiner la
    recherche

9
Calcul des bornes des blocs
  • Les différentes règles de filtrage dépendent du
    début et de la fin potentielle dun bloc
  • Calcul des bornes dun bloc est important pour
    déterminer les étendues minimale et maximale dun
    bloc
  • Pour une variable si prenant la valeur tk, nous
    avons les intervalles suivants
  • ßmin, ßmax intervalle pour le début dun bloc
  • emin, emax intervalle pour la fin dun bloc

10
Calcul des bornes des blocs
  • En dautres mots
  • ßmin est la valeur minimale de début dun bloc
  • ßmax est la valeur maximale de début dun bloc
  • emin est la valeur minimale de fin dun bloc
  • emax est la valeur maximale de fin dun bloc

11
Calcul des bornes des blocs
  • La borne ßmax est définie telle que
  • ?p ? ßmax, i, Dsp tk
  • Ds(ßmax - 1) mod n ? tk
  • Le calcul de la borne ßmax
  • Lalgorithme calculant la borne ßmax parcourt les
    variables précédant la variable détude jusquà
    ce quil en atteigne une qui na pas la valeur tk
    et retourne la position suivante
  • Cet algorithme exploite le fait que toutes les
    variables voisines instanciées à la même valeur
    font partie du même bloc

12
Calcul des bornes des blocs
  • La borne ßmin est définie telle que
  • ?p ? ßmin, ßmax, tk ? Dsp
  • ?l, tl ? tk, ?p ? (ßmin - ?1) mod n, (ßmin - 1)
    mod n, tl ? Dsp, cest-à-dire quun autre bloc
    peut exister à la frontière
  • Le calcul de la borne ßmin est plus complexe
  • On commence par calculer une valeur limite pour
    ßmin au-delà de laquelle ßmin ne peut pas se
    trouver
  • On vérifie alors les variables à reculons tant
    que la variable courante contient plus dune
    activité incluant tk dans son domaine
  • Si tk ne fait plus partie du domaine ou si la
    variable ne contient plus que tk dans son domaine
    (sj tk ) ou si on a atteint la valeur limite,
    lalgorithme calcule alors ßmin en vérifiant quà
    sa gauche assez de variables ont une valeur
    commune dans leurs domaines afin de constituer un
    bloc valide

13
Calcul des bornes des blocs
  • Lalgorithme pour calculer ßmin

14
Calcul des bornes des blocs
  • Le calcul des bornes est symétrique
  • La borne emin est calculée de manière analogue à
    ßmax
  • La borne emax est calculée de manière analogue à
    ßmin
  • Remarques
  • Les différents algorithmes de calcul des bornes
    ont une complexité qui est linéaire en la
    longueur maximale dun bloc, sauf pour la
    fonction find_frontier que lalgorithme de calcul
    des bornes ßmin et emax appelle pour vérifier la
    validité dun bloc voisin

15
Règles de filtrage de la contrainte stretch
  • Lalgorithme de filtrage est basé sur la notion
    de bloc et est constitué de sept règles nommées
    F1 à F7
  • Lalgorithme de filtrage agit suite à deux types
    dévénements
  • Une valeur est retirée du domaine dune variable
    du bloc, détruisant potentiellement la validité
    du bloc. Il faut alors vérifier la validité de ce
    bloc de chaque côté de la variable
  • Une variable est instanciée. Divers filtrages
    sont alors appliqués en se basant sur où se
    trouvent le début et la fin du bloc

16
Règles de filtrage de la contrainte stretch
  • La règle F1 sapplique lorsque le domaine dune
    variable du bloc est modifié (une valeur en est
    retirée)
  • On vérifie pour chaque valeur tl retirée du
    domaine de la variable si si un bloc avec tl peut
    être réalisé à la gauche ou à la droite de si
  • Si un bloc valide avec tl ne peut être réalisé
    avant si, alors la valeur tl est retirée du
    domaine de la variable s(i-1) mod n
  • Si un bloc valide avec tl ne peut être réalisé
    après si, alors la valeur tl est retirée du
    domaine de la variable s(i1) mod n
  • Lapplication de lalgorithme garantit que, pour
    chaque valeur restante du domaine dune variable,
    il y a des valeurs identiques dans les variables
    voisines pour réaliser un bloc de longueur
    minimale

17
Règles de filtrage de la contrainte stretch
  • La règle F2
  • Si ßmin ou emax nont pas été trouvés (ßmin -1
    ou emax -1), alors la contrainte stretch est
    violée
  • Les règles F3 et F4 permettent de découvrir si un
    bloc est trop long ou trop court
  • Règle F3 si étendue(ßmax, emin) gt ?2, alors la
    contrainte stretch est violée
  • Règle F4 si étendue(ßmin, emax) lt ?1, alors la
    contrainte stretch est violée

18
Règles de filtrage de la contrainte stretch
  • Les règles F5 et F6 permettent de savoir
    précisément où un bloc commence ou se termine
  • Il est alors possible de retirer la valeur tk des
    variables voisines sur une longueur égale à la
    plus petite des longueurs minimales des blocs
    voisins potentiels afin de réaliser un bloc
    valide
  • Règle F5 si ßmax ßmin, alors on sait
    précisément où le bloc débute
  • Règle F6 si emax emin, alors on sait
    précisément où le bloc se termine
  • La règle F7 permet de découvrir la ou les
    positions qui sont forcément couvertes par un
    bloc dans lintervalle ßmin, emax quand on a la
    longueur minimale dun bloc afin de déduire des
    instanciations

19
Règles de filtrage de la contrainte stretch
  • Remarque sur les règles
  • La complexité totale de lalgorithme de filtrage
    nest pas reliée au nombre de variables, n

20
Quelques résultats et discussion
  • Lefficacité de la contrainte a été évaluée
  • Sur des problèmes dhoraires cycliques réels
  • Sur des problèmes générés par lauteur
  • Testée avec sept versions de lalgorithme
  • Une version complète
  • Une version naïve qui vérifie la longueur dun
    bloc
  • Cinq versions sans certaines règles de filtrage

21
Quelques résultats et discussion
  • Résultats obtenus
  • La version complète performe beaucoup mieux que
    la version naïve
  • Les règles F1 et F7 apparaissent être cruciales
    pour lexécution de la contrainte
  • Les règles F2 et F4 ont peu deffet sur les
    résultats
  • La règle F4 semble redondante par rapport aux
    règles F1 et F7
  • La règle F3 est nécessaire pour assurer
    lexactitude de lalgorithme

22
Quelques résultats et discussion
  • Une grande partie du filtrage se base sur les
    intervalles ßmin, ßmax et emin, emax calculés
    qui peuvent ne pas être les plus restreints
    possibles
  • Une des limitations de la contrainte est quelle
    ne considère pas toute la séquence
  • Une valeur dans le domaine dune variable peut
    être inconsistante parce quelle est incompatible
    avec les valeurs du domaine dune autre variable
    se trouvant plus loin dans la séquence
  • Un meilleur niveau de cohérence peut être atteint
    si on examine une plus grande partie de la
    séquence, sinon toute, au prix dun effort de
    calcul plus grand (complexité en termes de n)

23
Conclusion
  • La contrainte stretch est une contrainte globale
    introduite par Gilles Pesant
  • Utile lorsquon a des limites sur le nombre de
    valeurs consécutives identiques dans une séquence
  • Le domaine de laffectation de tâches pour
    réaliser des horaires constitue une des
    applications de cette contrainte
  • La contrainte exhibe une complexité algorithmique
    basse

24
Des questions?
Write a Comment
User Comments (0)
About PowerShow.com