Algorithme optimal d'arc-consistance pour une séquence de contraintes AtMost avec cardinalité E.Hebrard M.J.Huguet M.Siala Laboratoire d'Analyse et d'Architecture des Systèmes (LAAS-CNRS) Groupe MOGISA http://www.laas.fr/MOGISA mai Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Plan 1 Introduction 2 Domaines d'applications Car-sequencing Crew-Rostering 3 Algorithme proposé 4 Résultats expérimentaux 5 Conclusion & Perspectives Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence2/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC Étant donné un CSP (X , D, C), une contrainte C ∈ C est dite arc-consistante (ac) ssi, pour toute valeur j de chaque variable xi qu'elle met en jeu, il existe une instanciation consistante w telle que w [i ] = j . Dans ce cas, w est appelé support pour xi = j . Algorithme d'arc-consistance Le role d'un algorithme d'arc-consistance est de supprimer pour chaque variable, toutes les valeurs inconsistantes (sans support). Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence3/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AtMostSeqCard sur des variables booléennes AtMostSeqCard(u , q , d , [x1 , . . . , xn ]) ⇔ n^ −q q n X X ( xi +l ≤ u ) ∧ ( xi = d ) i =0 l =1 i =1 Exemple AtMostSeqCard(2, 4, 4, [x1 , . . . , x7 ]) 0 1 1 0 1 1 0 1 1 0 0 1 0 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence4/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Complexité des algorithmes existants REGULAR : O (2 q −1 n ) GEN-SEQUENCE : [Van Hoeve et al, 2009] O (n 3 ) [Van Hoeve et al, 2008] GEN-SEQUENCE + outils de programmation linéaire : 2 O (n log n ) [Maher et al, 2008] Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence5/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Car-sequencing Figure: Chaine d'assemblage Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence6/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Crew-Rostering Durée=7 jours, 4 employées, 3 périodes de 8h, 40h par semaine (d=5), Atmost(1,3) emp1 emp2 emp3 emp4 J 0 1 0 0 S 1 0 0 1 N 0 0 0 0 J 0 1 1 0 S 0 0 0 0 N 1 0 0 1 J 0 0 1 0 S 0 0 0 0 N 0 0 0 1 J 1 0 0 0 S 0 1 0 0 N 0 0 1 0 J 0 0 0 1 S 0 1 0 0 N 0 0 0 0 J 1 0 0 1 S 0 0 0 0 N 0 0 1 0 J 1 1 0 0 S 0 0 0 0 N 0 0 1 0 d 5 5 5 5 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence7/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Avant-propos Soit (x1 , . . . , xn ) une séquence de variable booléenne sujette à une contrainte AtMostSeqCard(u , q , d , [x1 , . . . , xn ]) L'algorithme proposée est basée sur une procédure gloutonne (leftmost). leftmost : Maximise la cardinalité sous les contraintes AtMostSeq(u , q , [x1 , . . . , xn ]). Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence8/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 2 c 3 4 max Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 2 c 3 4 max Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 2 0 c 3 4 max Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 2 0 c 3 0 4 max Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 2 0 c 3 0 4 1 max Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 2 0 c 3 0 4 1 max 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 2 0 c 3 0 4 1 max 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 2 0 c 3 0 4 1 max 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 2 0 1 c 3 0 4 1 max 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 2 0 1 c 3 0 2 4 1 max 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 2 0 1 c 3 0 2 4 1 1 max 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 2 0 1 c 3 0 2 4 1 1 max 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 2 0 1 c 3 0 2 4 1 1 max 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 0 1 c 3 0 2 4 1 1 max 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 0 1 2 c 3 0 2 4 1 1 max 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 0 1 2 c 3 0 2 1 4 1 1 max 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 0 1 2 c 3 0 2 1 4 1 1 1 max 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 0 1 2 c 3 0 2 1 4 1 1 1 max 1 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 0 1 2 c 3 0 2 1 4 1 1 1 max 1 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 2 0 1 2 c 3 0 2 1 4 1 1 1 max 1 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 2 0 1 2 1 c 3 0 2 1 4 1 1 1 max 1 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 2 0 1 2 1 c 3 0 2 1 1 4 1 1 1 max 1 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 2 0 1 2 1 c 3 0 2 1 1 4 1 1 1 1 max 1 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 2 0 1 2 1 c 3 0 2 1 1 4 1 1 1 1 max 1 2 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 2 0 1 2 1 c 3 0 2 1 1 4 1 1 1 1 max 1 2 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi → . 0 . 1 . . . 0 . 0 1 . . 1 . . w | | | | 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 1 2 0 1 2 1 c 3 0 2 1 1 4 1 1 1 1 max 1 2 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 0 1 2 1 1 c 3 0 2 1 1 4 1 1 1 1 max 1 2 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 0 1 2 1 1 c 3 0 2 1 1 1 4 1 1 1 1 max 1 2 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 0 1 2 1 1 c 3 0 2 1 1 1 4 1 1 1 1 0 max 1 2 2 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 1 2 0 1 2 1 1 c 3 0 2 1 1 1 4 1 1 1 1 0 max 1 2 2 2 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 1 2 0 1 2 1 1 c 3 0 2 1 1 1 4 1 1 1 1 0 max 1 2 2 2 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 2 0 1 2 1 1 c 3 0 2 1 1 1 4 1 1 1 1 0 max 1 2 2 2 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 2 0 1 2 1 1 2 c 3 0 2 1 1 1 4 1 1 1 1 0 max 1 2 2 2 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 2 0 1 2 1 1 2 c 3 0 2 1 1 1 1 4 1 1 1 1 0 max 1 2 2 2 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 | | | | 1 0 1 1 2 1 2 2 0 1 2 1 1 2 c 3 0 2 1 1 1 1 4 1 1 1 1 0 0 max 1 2 2 2 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 1 2 2 0 1 2 1 1 2 c 3 0 2 1 1 1 1 4 1 1 1 1 0 0 max 1 2 2 2 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 2 1 2 2 0 1 2 1 1 2 c 3 0 2 1 1 1 1 4 1 1 1 1 0 0 max 1 2 2 2 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 2 1 2 2 1 0 0 2 2 1 2 1 2 2 0 1 2 1 1 2 1 0 0 2 2 1 2 1 1 2 c 3 0 2 1 1 1 1 0 0 1 2 1 2 1 1 1 1 4 1 1 1 1 0 0 0 1 1 1 2 1 1 1 0 0 max 1 2 2 2 1 2 2 1 1 2 2 2 2 2 1 2 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → − w = leftmost (u = 2, q = 4) → Complexité = xi w . 0 . 1 . . . 0 . 0 1 . . 1 . . 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 2 1 2 2 1 0 0 2 2 1 2 1 2 2 0 1 2 1 1 2 1 0 0 2 2 1 2 1 1 2 c 3 0 2 1 1 1 1 0 0 1 2 1 2 1 1 1 1 4 1 1 1 1 0 0 0 1 1 1 2 1 1 1 0 0 max 1 2 2 2 1 2 2 1 1 2 2 2 2 2 1 2 O (n .q ) Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence9/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Algorithme de ltrage ub ←d− Pn i =1 MIN (xi ) : la demande qui reste à satisfaire leftmost_count([x1 , . . . , xn ], u , q , d ) : procédure équivalente à leftmost mais qui retourne la cardinalité maximale pour chaque i . L : résultat de leftmost_count sur la séquence [x1 , . . . , xn ] R : résultat de leftmost_count sur la séquence [xn , . . . , x1 ] Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 10/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 11/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives → Complexité équivalente à la complexité de leftmost : O (n .q ) Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 11/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) . 0 . . . . . . 0 1 0 . . . . . . . . . . 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) → − w [i ] . 0 . . . . . . 0 1 0 . . . . . . . . . . 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) → − w [i ] ← w−[i ] . 0 . . . . . . 0 1 0 . . . . . . . . . . 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) → − w [i ] ← w−[i ] L[ i ] . 0 . . . . . . 0 1 0 . . . . . . . . . . 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 2 3 4 4 4 4 4 4 4 5 6 7 7 7 7 8 8 9 10 10 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) → − w [i ] ← w−[i ] L[ i ] R [n − i + 1] . 0 . . . . . . 0 1 0 . . . . 0 0 7 3 1 0 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 1 1 2 3 4 4 4 4 4 4 4 5 6 7 10 9 9 9 8 7 6 6 6 6 6 6 5 4 . 0 0 7 3 . 0 0 7 3 . . . . 1 1 0 1 1 1 0 1 1 1 1 8 8 9 10 10 3 3 2 1 0 0 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) . 0 . . . . . . 0 1 0 . . . . 0 0 7 3 1 0 1 1 1 0 0 0 0 1 0 1 1 1 ← − w [i ] 1 0 0 1 1 1 0 0 0 1 0 1 1 1 L[ i ] 0 1 1 2 3 4 4 4 4 4 4 4 5 6 7 R [n − i + 1] 10 9 9 9 8 7 6 6 6 6 6 6 5 4 L[i ] + R [n − i + 1] 11 10 11 12 12 11 10 10 10 10 10 11 11 11 → − w [i ] . 0 0 7 3 . 0 0 7 3 . . . . 1 1 0 1 1 1 0 1 1 1 1 8 8 9 10 10 3 3 2 1 0 0 10 10 10 11 11 11 11 10 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) . 0 . . . . . . 0 1 0 . . . . 0 0 7 3 1 0 1 1 1 0 0 0 0 1 0 1 1 1 ← − w [i ] 1 0 0 1 1 1 0 0 0 1 0 1 1 1 L[ i ] 0 1 1 2 3 4 4 4 4 4 4 4 5 6 7 R [n − i + 1] 10 9 9 9 8 7 6 6 6 6 6 6 5 4 L[i ] + R [n − i + 1] 11 10 11 12 12 11 10 10 10 10 10 11 11 11 L[i − 1] + R [n − i ] 9 10 10 10 10 10 10 10 10 10 10 9 9 9 → − w [i ] . 0 0 7 3 . 0 0 7 3 . . . . 1 1 0 1 1 1 0 1 1 1 1 8 3 10 10 10 11 10 10 10 10 8 3 11 10 9 10 10 2 1 0 0 11 11 10 9 9 10 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) . 0 . . . . . . 0 1 0 . . . . 0 0 7 3 1 0 1 1 1 0 0 0 0 1 0 1 1 1 ← − w [i ] 1 0 0 1 1 1 0 0 0 1 0 1 1 1 L[ i ] 0 1 1 2 3 4 4 4 4 4 4 4 5 6 7 R [n − i + 1] 10 9 9 9 8 7 6 6 6 6 6 6 5 4 L[i ] + R [n − i + 1] 11 10 11 12 12 11 10 10 10 10 10 11 11 11 L[i − 1] + R [n − i ] 9 10 10 10 10 10 10 10 10 10 10 9 9 9 ac(D(x )) 1 0 . . . . 0 0 0 1 0 1 1 1 → − w [i ] i . 0 0 7 3 . 0 0 7 3 . . . . 1 1 0 1 1 1 0 1 1 1 1 8 3 10 10 10 11 10 10 10 10 0 0 0 . 8 3 11 10 . 9 10 10 2 1 0 0 11 11 10 9 9 10 1 1 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives AC(u = 4, q = 8, d = 12, ub = 10) D(xi ) . 0 . . . . . . 0 1 0 . . . . 0 0 7 3 1 0 1 1 1 0 0 0 0 1 0 1 1 1 ← − w [i ] 1 0 0 1 1 1 0 0 0 1 0 1 1 1 L[ i ] 0 1 1 2 3 4 4 4 4 4 4 4 5 6 7 R [n − i + 1] 10 9 9 9 8 7 6 6 6 6 6 6 5 4 L[i ] + R [n − i + 1] 11 10 11 12 12 11 10 10 10 10 10 11 11 11 L[i − 1] + R [n − i ] 9 10 10 10 10 10 10 10 10 10 10 9 9 9 ac(D(x )) 1 0 . . . . 0 0 0 1 0 1 1 1 → − w [i ] i . 0 0 7 3 . 0 0 7 3 . . . . 1 1 0 1 1 1 0 1 1 1 1 8 3 10 10 10 11 10 10 10 10 0 0 0 . 8 3 11 10 . 9 10 10 2 1 0 0 11 11 10 9 9 10 1 1 1 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 12/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Complexité Complexité équivalente à O(n.q) En utilisant des structures de données spéciques, nous avons pu amener la complexité à O(n) : Cardinalité : on stocke le delta au lieu de la valeur absolue On garde le nombre de sous-séquences pour chaque valeur de cardinalité Liste circulaire pour les cardinalités c c[1] ptr ↑ c[2] c[3] .. c[q] Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 13/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Complexité Complexité équivalente à O(n.q) En utilisant des structures de données spéciques, nous avons pu amener la complexité à O(n) : Cardinalité : on stocke le delta au lieu de la valeur absolue On garde le nombre de sous-séquences pour chaque valeur de cardinalité Liste circulaire pour les cardinalités c ptr c[1] c[2] c[3] .. c[q] ↑ Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 13/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Complexité Complexité équivalente à O(n.q) En utilisant des structures de données spéciques, nous avons pu amener la complexité à O(n) : Cardinalité : on stocke le delta au lieu de la valeur absolue On garde le nombre de sous-séquences pour chaque valeur de cardinalité Liste circulaire pour les cardinalités c ptr c[1] c[2] c[3] .. c[q] ↑ Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 13/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Complexité Complexité équivalente à O(n.q) En utilisant des structures de données spéciques, nous avons pu amener la complexité à O(n) : Cardinalité : on stocke le delta au lieu de la valeur absolue On garde le nombre de sous-séquences pour chaque valeur de cardinalité Liste circulaire pour les cardinalités c ptr c[1] c[2] c[3] .. c[q] .. Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 13/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Contraintes Chaque classe c Car-sequencing Crew-Rostering est associée avec une demande Dc . Pour chaque option j , chaque sous-séquence de taille contient au plus uj voitures demandant l'option j . qj Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 14/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Modèles 1 2 3 4 sum gsc amsc amcs + gsc Heuristiques h{lex , mid }, {class , opt }, {1, q /u , d , δ, n − σ, ρ}, {≤P , ≤Euc , ≤lex }i, [Siala et al, 2012] → 34 heuristiques x 5 exécutions aléatoires. Benchmarks (CSP Lib) Groupe Groupe Groupe Groupe 1 2 3 4 : : : : 70 instances satisables 4 instances satisables 5 instances unsatisables 7 instances satisables Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 15/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Car-sequencing Table: Résultats expérimentaux : Car-sequencing × 34 × 5) G2 (4 × 34 × 5) G3 (5 × 34 × 5) G4 (7 × 34 × 5) Modèle G1 (7011900 680 850 1190 #sol time #sol time #sol time #sol time sum 8480 13.93 95 76.60 0 > 1200 64 43.81 gsc 11218 3.60 325 110.99 31 276.06 140 56.61 amsc 10702 4.43 360 72.00 16 8.62 153 33.56 amsc+gsc 11243 3.43 339 106.53 32 285.43 147 66.45 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 16/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Car-sequencing Table: Résultats expérimentaux : Car-sequencing × 34 × 5) G2 (4 × 34 × 5) G3 (5 × 34 × 5) G4 (7 × 34 × 5) Modèle G1 (7011900 680 850 1190 #sol time #sol time #sol time #sol time sum 8480 13.93 95 76.60 0 > 1200 64 43.81 gsc 11218 3.60 325 110.99 31 276.06 140 56.61 amsc 10702 4.43 360 72.00 16 8.62 153 33.56 amsc+gsc 11243 3.43 339 106.53 32 285.43 147 66.45 GSC ltre plus de valeurs incohérentes que amsc. AMSC est beucoup plus rapide que GSC : un facteur de 12.5 sur le nombre de noeuds explorés par seconde. Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 16/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Description emp1 --emp2 --.. --emp20 --demande : 6 ;6 ;3 --------6 ;6 ;3 Semaine --- ----- ----- ----- --6 ;6 ;3 6 ;6 ;3 1 --------6 ;6 ;3 S2 S3 S4 --------2 ;2 ;1 --------2 ;2 ;1 .. .. .. .. .. .. .. .. .. .. .. .. d 17 17 17 17 17*20 Contraintes Chaque employé doit travailler en moyenne 34 heures par semaine (17 périodes sur 4 semaines). Au minimum 16 heures de repos entre deux périodes de travail allouées. Pas plus de 5 jours par semaines. Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 17/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Modèles sum gsc amsc Heuristiques = ni − 215di ), MIN (σj0 = mj − djs ). : MIN (σj0 = mj − djs ), MIN (σi = ni − 215di ) worst employee worst shift : MIN (σi Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 18/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Benchmarks 281 instances ont été générées, avec des indisponibilités de 18% à 46% (avec un pas de 0.1) Groupe 1 : 126 instances satisables. Groupe 2 : 111 instances principalement satisables. Groupe 3 : 44 instances principalement unsatisables. Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 19/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Crew-Rostering Table: Résultats expérimentaux : Crew-Rostering 2 × 126) Benchmarks G1 (5 ×1260 #sol time sum 1229 12.72 gsc 1210 29.19 amsc 1237 5.82 G2 (5 × 2 × 111) 1110 #sol time 574 38.45 579 77.78 670 G3 (5 × 2 × 44) 440 #sol time 272 5.56 276 24.14 31.01 284 6.22 Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 20/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Car-sequencing Crew-Rostering Crew-Rostering Table: Résultats expérimentaux : Crew-Rostering 2 × 126) Benchmarks G1 (5 ×1260 #sol time sum 1229 12.72 gsc 1210 29.19 amsc 1237 5.82 G2 (5 × 2 × 111) 1110 #sol time 574 38.45 579 77.78 670 G3 (5 × 2 × 44) 440 #sol time 272 5.56 276 24.14 31.01 284 6.22 La propagation de GSC est moins performante que celle de amsc parce qu'on l'a utilisé avec des variables booléennes. Un facteur de 20.4 en nombre de noeuds explorés par seconde par rapport à la GSC. Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 20/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Travail réalisé Meilleur complexité existante : → AC avec une complexité O (n 2 log n), [Maher et al, 2008] O (n ) Car-sequencing Crew-Rostering Perspectives Généralisation de l'algorithme pour une chaine de contraintes Among avec cardinalité ? Utiliser l'algorithme AtMostSeqCard avec un SMT-Solver. Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 21/22 de con Introduction Domaines d'applications Algorithme proposé Résultats expérimentaux Conclusion & Perspectives Merci pour votre attention. Questions ? Mohamed SIALA Algorithme optimal d'arc-consistance pour une séquence 22/22 de con