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