Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Autres techniques de Recherche d'une Solution Optimale Autres techniques d'optimisation : Recherche locale I I Ralf Treinen Université Paris Diderot UFR Informatique I I On part d'une solution qu'on cherche à améliorer. Pour toute aectation il y a une notion de voisinage, et une fonction de mesure. Tant que possible on passe d'un point au meilleur de ses voisins (Hill Climbing). Il est possible qu'on reste bloqué sur un optimum local. IRIF, équipe PPS [email protected] 23 février 2017 Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Autres techniques de Recherche d'une Solution Optimale Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Autres techniques de Recherche d'une Solution Optimale Recherche locale : exemple Recherche locale : exemple I I I I Problème de n dames (n = 5) Aectations : associent à chaque ligne une colonne. On cherche à minimiser le nombre de paires de dames qui se menacent. Les voisins d'une aectations sont obtenues par échangeant deux lignes. 1 2 3 4 5 Q Q Q Coût : 6. Échanger lignes 2 et 3. Q Q Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Autres techniques de Recherche d'une Solution Optimale Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Autres techniques de Recherche d'une Solution Optimale Recherche locale : exemple Recherche locale : exemple 1 2 3 4 5 1 2 3 4 5 Q Q Q Q Q Q Q Q Q Q Coût : 0. Minimum atteint (local et global). Coût : 2. Échanger lignes 2 et 5. Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Autres techniques de Recherche d'une Solution Optimale Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Autres techniques de Recherche d'une Solution Optimale Recherche locale : exemple Autres techniques : Simulated Annealing 1 2 3 4 5 I Q I Q Q I Q Q Coût : 1. Minimum local, mais pas minimum global. I Annealing : recuit (métallurgie). Technique probabiliste. Recherche locale, mais peut aussi avec une certaine probabilité passer à des solutions moins bonnes. Cette probabilité dépend de la température qui décroît pendant le processus. Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Symétries Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Symétries Symétries L'intérêt d'identier des symétries Qu'est-ce que c'est une symétrie dans un problème de résolution de contrainte c par rapport à un domaine initial D ? I Soit A l'ensemble des aectation des variables en c qui sont cohérentes avec D . I Soit S l'ensemble des solutions de c par rapport à D : S ⊆ A. I Il y a une fonction de normalisation Norm : A → A telle que : I I I I Norm I I I Il sut de chercher des solutions σ qui sont normales On peut ajouter une contrainte qui exprime le fait qu'une solution est normale (élimination de symétries). On peut, si on le souhaite, obtenir facilement l'ensemble de toutes les solutions puisqu'on peut évaluer facilement Norm− . 1 Norm(Norm(x)) = Norm(x) −1 On peut facilement calculer Norm (x) x ∈ S ⇔ Norm(x) ∈ S est idempotente : On dit que x est normal (par rapport à N ) quand x = N(x). Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Symétries Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Symétries Exemple de symétrie : N dames Exemple de symétrie : coloration d'une carte I I Problème des n dames : Variables X Fonction de normalisation 1 N(σ) = I , . . . , Xn σ σ 0 : σ 0 (X ) = n − σ(X ) Contrainte supplémentaire : X 1 ≤ n/2. : I I si σ(X sinon 1 ) ≤ n/2 Coloration d'une carte à n pays : variables C Fonction de normalisation : 1 N(σ) = I σ σ , . . . , Cn . si σ(C avec 1 et σ(C ) échangés sinon Contrainte supplémentaire : C 1 1 = 1. 1 )=1 Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Symétries Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Contraintes redondantes Éliminer plus de symétries ? Contraintes redondantes I On pourrait même imposer que : I σ(Ci ) 6∈ {σ(Cj ) | j < i} Alors σ(Ci ) > σ(Cj ) pour tout i > j I Si I I I I Cela éliminerait toutes les symétries dues aux permutations des couleurs Problème : on se sais pas réaliser cette contrainte. Il existent seulement des solutions imparfaites, par exemple par identication des parties connexes du graphe. I I Une contrainte c 0 est redondante par rapport à une contrainte c si c |= c 0 . Le propagateur d'une contrainte redondante c 0 peut permettre de faire des réductions de domaines que les propagateurs de c ne peuvent pas faire. Il peut être intéressant d'ajouter des propagateurs pour des contraintes redondantes. Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Contraintes redondantes Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Contraintes redondantes Exemple : des carrés magiques Exemples (magic1.oz) I Un carré magique de taille n est I une matrice n × n avec des valeurs entre 1 et n I toutes les cases ont une valeur diérente I les sommes des lignes, des colonnes, et des deux diagonales sont égales I Exemple pour n = 3 : declare fun 2 2 7 6 9 5 1 4 3 8 in {MagicSquare N} NN = N*N L1N = { L i s t . number 1 N 1} % [1 2 3 . . . N] p r o c {$ Square} Sum = {FD. decl } f u n { Field I J} % domaine en l i g n e I colonne J Square . ( ( I −1)*N + J ) end p r o c { Assert F} % {F 1} + {F 2} + . . . + {F N} =: Sum {FD. sum {Map L1N F} '=: ' Sum} in end {FD. tuple square NN 1#NN Square} {FD. d i s t i n c t Square} Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Contraintes redondantes Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Contraintes redondantes Exemples (magic1.oz) II Exemples (magic1.oz) III %% Diagonals { Assert f u n {$ I } { Field I I } end } { Assert f u n {$ I } { Field I N+1− I } end } %% Columns {For 1 N 1 p r o c {$ I } { Assert f u n {$ J} { Field I J} %% Rows {For 1 N 1 p r o c {$ J} { Assert f u n {$ I } { Field I J} {FD. d i s t r i b u t e s p l i t Square} end end } end } end } end } end end {Browse { SearchAll P}} End={OS. time} {Show (End− Start )} {MyExec {MagicSquare 4}} declare proc {MyExec P} Start End Start={OS. time} in Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Contraintes redondantes Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Contraintes redondantes Amélioration : éliminer des symétries L'exemple modié (magic2.oz) I I I I I La version naïve prend 8 secondes (n=4) Normalisation : on peut tourner tout carré tel que la valeur dans la case (1,1) est minimale parmi les quatre coins. On peut en plus tourner le carré tel que la case (N,1) est ≤ la case (1,N). Donc contraintes supplémentaire : X1,1 < Xn,1 , Xn,1 < X1,n , X1,1 < Xn,n I Temps d'exécution avec ces propagateurs supplémentaires (n=4) : 23 secondes Ajouter les lignes : %% Eliminate symmetries { F i e l d 1 1} <: { F i e l d N N} { F i e l d N 1} <: { F i e l d 1 N} { F i e l d 1 1} <: { F i e l d N 1} Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Contraintes redondantes Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondan Contraintes redondantes Ajouter un propagateur pour une contraintes redondante L'exemple encore modié (magic3.oz) I I La somme de toutes les cases est 1 + 2 + ... + n I I I 2 = n2 ∗ (n2 + 1) 2 La somme de toutes les cases est égale à n fois la somme d'une ligne (colonne, diagonale) 2 2 Contrainte redondante : n ∗(n + ) = n ∗ sum Temps d'exécution avec ce propagateur supplémentaire (n=4) : < 1 seconde. 1 2 Programmation Logique et Par Contraintes Avancée Cours 9 Autres techniques de recherche. Symétries et Contraintes Redondantes Contraintes redondantes Autres contraintes redondantes ? I On avait ajouté : X1,1 < Xn,1 , Xn,1 < X1,n , X1,1 < Xn,n I Contrainte impliquée (donc redondante) : X1,1 < X1,n I Est-ce qu'on gagne quelque chose si on ajoute le propagateur pour cette contrainte redondante ? Ajouter les lignes : %% Redundant : sum of a l l f i e l d s = ( number rows ) NN* (NN+1) d i v 2 =: N*Sum * S