600 likes | 954 Views
Méthodes Hybrides. Méthodes de preuves Optimisation Satisfaction de contraintes Chapitre 5. Rappel des méthodes pour traiter SAT et CSP. Recherche naïve Exploration en profondeur d’abord d’un arbre de recherche Nœuds internes = affectations partielles des variables
E N D
Méthodes Hybrides Méthodes de preuvesOptimisationSatisfaction de contraintes Chapitre 5
Rappel des méthodes pour traiter SAT et CSP • Recherche naïve • Exploration en profondeur d’abord d’un arbre de recherche • Nœuds internes = affectations partielles des variables • Feuilles de l’arbre = solutions ou échecs • Algorithmes de Quine pour SAT et BT pour CSP • Production de conséquences • Jointure d’un ensemble de relations et projection sur un ensemble de variables (compilation de connaissances) • Algorithme d’élimination de variables (SAT: algorithme Davis et Putnam) • Résolution unitaire pour SAT et cohérence d’arc pour CSP
Comparaison entre recherche et production de conséquences Idée : Hybridation de méthodes !
Résumé • Backtrack (instanciation) et inférence locale • SAT – DPLL (Propagation unitaire) • CSP – MAC (Cohérence d’arc) • Backtrack et inférence opportuniste (apprentissage) • CSP – Backjumping et Nogood recording • SAT – CDCL (Conflict driven clause learning) • Backtrack et élimination de variable • PPC et modélisation (Golomb ruler) • Méthodes de recherches partielles (IB, LDS)
Méthode hybride en SATProduction de conséquences durant la recherche • Résolution à chaque nœud de l’arbre de recherche • En pratique, résolution unitaire • Détecte des incohérences plus tôt • Simplifie l’ensemble des clauses • Informe l’heuristique de choix du littéral de branchement qui exploite l’information des clauses restantes et des conflits • Complet pour les clauses de Horn (au plus un littéral positif) • Exemple : { p r, r s, p, s } • Langage Prolog (si condition alors résultat)
Solveur DPLL (système de transformation) • Etat M || F où • M un ensemble de littéraux (sans incohérence) • Chaque littéral peut être marqué comme une « décision » • F est une CNF • Règles de transformation si M viole C, l non défini dans M (UnitPropagate) si l ou l est dans F, indéfini dans M (Decide) si M viole C et pas de décision dans M (Fail) si viole C, aucune décision dans N (Backtrack)
Heuristiques de branchement • Observation • Puisqu’il faut instancier toutes les variables pour trouver un modèles, autant faire le plus dur de suite et éviter de redécouvrir que c’est impossible de façon répétée • => First Fail Principle • Brancher sur (l,l) qui minimise la taille des sous-arbres gauche (l) et droit (l) • Estimation empirique de cette taille • Heuristiques MOM (Maximum # of Occurrence in the Minimum length causes) • Jeroslow-Wang: • One-sided: maximiser h • Two-sided: maximiser h(l)+h(l), choisir ensuite h(l)>h(l)
Méthode hybride en CSP Production de conséquences durant la recherche • Etablir une propriété de cohérence locale à chaque nœud de l’arbre de recherche • Maintien de cohérence d’arc (algorithme MAC) • Détecte des incohérences plus tôt • Supprime des valeurs aux domaines • Procédure complète pour • contraintes binaires fonctionnelles, monotones, max-closed • graphes acycliques de contraintes binaires • Exploitation de l’information des domaines courants dans l’heuristique de choix de la variable de branchement • Heuristique dynamique exploitant les tailles des domaines • Branchement par réfutation (x = a x a) améliore la propagation et les heuristiques par rapport au branchement par variable
Algorithme pour établir la cohérence d’arc Fonction AC-2001( CSP(X,D,C) : csp ) : booléen MinSupp(j,b,i) 1 Q X Tant que Q non vide Faire Choisir et retirer i de Q Pour tout j tel que il existe une contrainte c C sur (i,j) Faire Pour tout b Dj Faire Tant que MinSupp(j,b,i) ≤ last_value(Di) et MinSupp(j,b,i) Di ou (MinSupp(j,b,i),b) c(i,j) Faire MinSupp(j,b,i) MinSupp(j,b,i) + 1 Si MinSupp(j,b,i) >last_value(Di) Alors Dj Dj – {b} Si Dj est vide Alors retourner faux Q Q {j} retourner vrai (CSP arc-cohérent)
Algorithme MAC – Maintaining Arc Consistency Algorithme MAC( CSP(X,D,C) : csp, t : affectation ) : booléen Si AC-2001( CSP(X,D,C) ) = faux Alors retourner faux Si ( |t| = |X| ) Alors retourner vrai Sinon Choisir une variable non affectée i de X Choisir une valeur v Di Si MAC( CSP { i := v }, t {(i,v)} ) Alors retourner vrai Sinon retourner MAC( CSP {i v }, t )
Heuristiques de choix de variable/valeur • First fail principle: • Plus petit domaine • Plus grand degré (nombre de contraintes) • Domaine/degré ou « domaine puis degré » • Plus grand degré « dynamique » (nombre de contraintes qui impliquent d’autres variables non instanciées) • Domaine/degré dyn. (ou pour briser les égalités) • Très grand impact en terme d’efficacité • Choix de valeur: guidé par l’application ou par un (ou plusieurs) critères de qualité attendue de la solution.
Méthodes de retour arrière intelligent • Lors d’un échec sur l’affectation d’une variable (absence de solution pour les différentes affectations de la variable), le retour arrière chronologique remonte à la précédente affectation dans l’arbre de recherche • Le retour arrière intelligent analyse la raison de l’échec (quelles sont les variables affectées en conflit avec la variable courante) et remonte à la dernière variable affectée en conflit 0 1 X0 X1 0 1 X2 0 1 X3 1 2 X4 01
Saut arrière dirigé par le graphe des contraintes L(X) : ensemble de variables affectées reliées par des contraintes à X (statique) 0 1 X0 L(X0) = {} L(X1) L(X1) U L(X2) – {X1} X1 0 1 L(X1) = {} X2 0 1 L(X2) = {X0} L(X2) L(X2) U L(X4) – {X2} X3 1 2 L(X3) = {X2} L(X4) = {X1,X2} X4 01 Saut à max(L(X4)) Echec
Saut arrière dirigé par les conflits (1993) CS(X) : ensembles de variables affectées en conflit avec X (dynamique) 0 1 X0 CS (X0) = {} CS(X1) CS(X1) U CS(X2) – {X1} X1 0 1 CS (X1) = {} X2 0 1 CS (X2) = {X0} CS(X2) CS(X2) U CS(X4) – {X2} X3 1 2 CS (X3) = {X2} CS (X4) = {X1,X2} X4 01 Saut à max(CS(X4)) Echec
Saut arrière dirigé par les conflits 0 1 X0 CS (X0) = {} X1 0 1 CS (X1) = {} X2 0 1 CS (X2) = {X0} CS(X2) = CS(X2) U CS(X4) – {X2} X3 1 2 CS (X3) = {X2} CS (X4) = {X0,X2} X4 01 Saut à max(CS(X4)) Echec … Hybridation avec MAC implique m.-à-j. de CS à chaque valeur effacée
Apprentissage de nogood(inférence opportuniste, 1993) • Lors d’un échec (X4) l’instanciation I des variables précédentes est un « nogood » (affectation implicitement interdite) : inférence • Inutile (car jamais revue) • Mais sa projection sur CS(X4) est aussi un nogood • L’apprendre comme une nouvelle contrainte • Espace mémoire, gestion, oubli. 0 1 X0 0 1 X1 0 1 X2 1 2 X3 01 X4 Echec
Solveur CDCL (Conflict Driven Clause Learning, 1999) • Ajoute au solveur DPLL un mécanisme de • Retour-arrière intelligent • Apprentissage de clauses (conséquences logiques) • Causes: 1d donc 2 et 5d donc 6. 3 et 4 sans rapport. • Clauses et conséquences produites.
Backjumping • si • viole C • Il existe impliquée par F,C et C’ violée par M • l’ non défini dans M • l’ défini dans • C est la clause de conflit • est la clause de « backjump » : dans M, C’ est violée et donc on sait que l’ est vrai. On backjump à l’état M avec ml’ à vrai.
Graphe de conflit Une coupe du graphe séparant les sommets sources des puits définit une affectation, formée par les littéraux avec arêtes sortantes coupées Elle est nécessairement violée, sa négation est impliquée par F • Sommets: littéraux de M • Arc de l vers l’ si la fixation de l a fixé l’ (via UnitProp)
Unique implication point • Il faut que cette clause contienne un littéral l’ du dernier niveau de décision • Soit D l’ensemble des littéraux de la clause de conflit falsifiés au dernier niveau de décision • Un UIP est un littéral du graphe de conflit qui appartient à tous les chemins reliant le littéral de décision courant à la négation d’un littéral de D : cause suffisante. • La décision courante est toujours un UIP • Utilisé: premier UIP obtenu à partir de la clause de conflit et des clauses propagées pour arriver au conflit.
Apprendre et oublier • Deux règles • C impliquée par F, sans nouvelle variable • C impliquée par F • Apprentissage des clauses de backjump (Lemme) • Oubli des clauses inactives (conflit, UnitProp)
Heuristique d’activité SAT, puis CSP • L’heuristique VSIDS (et variantes) associe un compteur à chaque atome qui est augmenté à chaque ajout de clause contenant l’atome lors d’une analyse de conflit. L’atome ayant le compteur le plus fort est sélectionné. • Utilisée aussi pour l’oubli des clauses apprises (les clauses peu actives sont oubliées en premier). • CSP: weighted degree. Chaque contrainte reçoit un poids initial de 1. Incrémenté à chaque fois qu’un domaine est vidée par la contrainte. • Wdeg = somme des poids des contraintes non totalement instanciées • Domain/wdeg…
SAT: Implémentations et benchmarks • Implémentations • zChaff (Zhang) (utilisé aussi en planification, en model checking et en preuve automatique de théorème), • MiniSAT(Een&Sorensson) (code extensible), … • Benchmarks • SATLIB http://www.intellektik.informatik.tu-darmstadt.de/SATLIB/benchm.html • Exemples en vérification de circuits (DIMACS) : instances jqà 10410 variables et 34238 clauses résolues en moins d’une seconde ! • Compétition SAT http://www.satcompetition.org/ • Liens • SATLive! http://www.satlive.orgArticles et liens classés par mot-clés
Recherche avec élimination de variable • A chaque nœud de la recherche • Choisir une variable non affectée Xi • Si degréi ≤ k Alors Elimine Xi • Sinon énumération des valeurs de Xi • Propriétés • DFBB-VE(-1) équivaut à DFBB • DFBB-VE(w*) équivaut à Elimination de variable complète • DFBB-VE(1) équivaut à l’algorithme du Coupe-Cycle w* : largeur d’arbre
Recherche avec élimination de variable Exemple: Still-Life (problème académique) • Instance: n=14 • Modélisation avec 196 variables Booléennes • CP / Integer Programming (Ilog Solver) 5 days • Variable Elimination 1 day • DFBB-VE(2) 2 seconds
Différences CP/SAT Les solveurs SAT ont évolué en solveurs CDCL « purs », code de petite taille, bonne utilisation du cache. Très rapides, boite noire. Redémarrages. Très utilisés en « validation » (EDA). Les solveurs CSP ont évolué en spécialisant les codes des algorithmes de propagation locale pour traiter certaines contraintes fréquentes et utiles plus rapidement (contraintes globales) et en les proposant dans des langages de programmation dédiés (programmation par contraintes). Ordonnancement, affectation complexes…
Programmation par contraintes (CP) • Contraintes définies en intention à partir d’un langage • Opérateurs arithmétiques, ensemblistes, logiques, etc. • Abstraction des (grands) domaines par leurs bornes • Gain en espace : O(n.d) O(2n) • Maintien de cohérence d’arc aux bornes • Exploitation spécifique de la sémantique des contraintes • Propagation plus rapide • Exemple : x < y + c • Propagation plus forte (contraintes globales) • AllDifferent, GCC, Regular, etc. • Langages pour exprimer l’arbre de recherche • Branchement sur les disjonctions, branchement conditionnel, ajout de contraintes en cours de recherche…
Résultats • Implémentations • CSP: MAC (Bessière), MAC (Dongen), AbsCon (Lecoutre), … • CP: IBM Ilog Solver (gratuit acad), Sictus Prolog, Eclipse (gratuit), Choco (gratuit) http://choco.sourceforge.net/ • Benchmarks • CSPlib http://4c.ucc.ie/~tw/csplib/ • Compétitions CSP (2005 http://cpai.ucc.ie/05/CallForSolvers.html) • (OR-Library) • Applications CP • Ordonnancement d’atelier, grilles d’emploi du temps, tournées de véhicules, dimensionnement d'un réseau de télécommunication,… • Liens • Constraints Archive http://www.4c.ucc.ie/web/archive/index.jsp • CP-Online http://slash.math.unipd.it/cp/ (cours en ligne) • AFPC http://www.afpc-asso.org/ Association française pour CP • Cours en ligne • C. Solnon, programmation par contraintes et optimisation (2003 & 2007)http://www710.univ-lyon1.fr/~csolnon • P. Meseguer,T. Schiex, CSP,http://www.math.unipd.it/~frossi/vincoli-dotto-2004.html • R. Bartak, CSP (CP Summer School 2005) http://kti.mff.cuni.cz/~bartak/
Exemple : la règle de Golomb • « Une règle munie de marques à des positions entières, telle que deux paires de marques ne soient jamais à la même distance ; en d'autres termes, chaque couple de marques mesure une longueur différente des autres » • Pour un nombre de marques donné, trouver une règle qui minimise la plus grande distance entre deux de ses marques • Application en conception d'antenne radio pour les réseaux cellulaires • Question trouver une règle optimale à 5 marques • Règle optimale d’ordre 24 en 1.572 jours de calcul
Règle de Golomb d’ordre N • Heuristique de construction d’une première solution • X1 = 0 • Xi = Xi-1 + 2^(i-2) • Xi [0, 2^(N-1) - 1] 2^0 2^1 2^2 2^3 … X1=0 ___ X2=1 ___ X3=3 ___ X4=7 ___ X5=15 …
Modélisation de la règle de Golomb d’ordre N • Variables • N variables de décision représentant les marques x1, x2, x3, … , xN [0,2N] • Contraintes • Précédences : i [1,N-1], xi < xi+1 • Différences : i,j,k,l [1,N], i < j, k < l, i k j l, xj - xi xl - xk • Symétrie par translation : x1=0 • Critère d’optimisation : min( xN )
Modélisation de la règle de Golomb d’ordre Navec utilisation de contraintes ternaires • Variables • N variables de décision représentant les marques x1, x2, x3, … , xN [0,2N] • N.(N-1)/2 variables entières intermédiaires codant les différences i,j [1,N], i < j, dij [1,2N] • Contraintes • Lien entre xi, xj et dij : i,j [1,N], i < j, dij = xj – xi • Différences : i,j,k,l [1,N], i < j, k < l, i k j l, dij dkl • Symétrie par translation : x1=0 • Critère d’optimisation : min( xN )
DFBB+GAC pour trouver une règle optimale d’ordre 4 échec (0,1,4,6) Solution (0,1,3,7)
UB = 6 , x2 = 2 x3 [3,5] , x4 [4,5] d1,2 = 2 , d2,3 = {123} ,d3,4 = {12}, d1,3 = {345} ,d2,4 = {23} d1,2 = 2 , d2,3 = {123} ,d3,4 = {12}, d1,3 = {345} ,d2,4 = {23} d1,2 = 2 , d2,3 = {13} ,d3,4 = {1}, d1,3 = {345} ,d2,4 = {3} x1 = 0 d1,2 > 0 , d2,3 > 0 , d3,4 > 0 d1,2 = x2 – x1 , d2,3 = x3 – x2 ,d3,4 = x4 – x3 , d1,3 = x3 – x1 ,d2,4 = x4 – x2 d1,2 d2,3 , d1,2 d3,4 , d2,3 d3,4 , d1,3 d2,4 (0,1,4,6) (0,1,3,7) Règle de Golomb d’ordre 4 Ordre des déductions Modèle : Echec!
Modélisation de la règle de Golomb d’ordre Navec contraintes ternaires, globales et redondantes • Variables • N variables de décision représentant les marques x1, x2, x3, … , xN [0,2N] • N.(N-1)/2 variables entières intermédiaires codant les différences i,j [1,N], i < j, dij [1,2N] • Contraintes • Lien entre xi, xj et dij : i,j [1,N], i < j, dij = xj – xi • Différences : AllDifferent( { dij | i,j [1,N], i < j } ) • Minorant : i [1,N], xi i . (i - 1) / 2 • Majorant : i [1,N], xi ≤ xN - (N - i) . (N - i + 1) / 2 • Symétrie par translation : x1=0 • Symétrie par réflexion : d(1,2) < d(N-1,N) • Critère d’optimisation : min( xN )
DFBB pour trouver une règle optimale d’ordre 5 DFBB+GAC+ternaires +AllDiff+redondantes DFBB+GAC+ternaires (0,1,4,9,11) (0,1,4,9,11) (0,1,3,7,12) (0,1,3,7,12)
Problem pb = new Problem(); int n = 6; // create the main variables IntVar[] X = new IntVar[n]; for (int i = 0; i<n; i++) X[i] = pb.makeEnumIntVar("X" + i, 0, 2^n); // create new (intermediate) distance variablesIntVar[] D = new IntVar[n*(n-1)/2]; int pos = 0; for (int i=0; i<n; i++) for (int j=i+1; j<n; j++) { D[pos] = pb.makeEnumIntVar("D" + i + "_" + j, 1, 2^n); pb.post(pb.eq(D[pos], pb.minus(X[j], X[i]))); pos++; } // main constraint: all distances must be different pb.post(pb.allDifferent(D)); // add a redundant constraint: lower bound on X for (int i=0; i<n; i++) pb.post(pb.geq(X[i], i * (i+1) / 2));// add a redundant constraint: upper bound on X for (int i=0; i<n-1; i++) pb.post(pb.leq(X[i], pb.minus(X[n-1], (n - i - 1) * (n - i) / 2))); // remove symetrical solutions by translation pb.post(pb.eq(X[0],0));// remove symetrical mirror solution by reflexionpb.post(pb.lt(D[0],D[pos-1])); // solve Solver s = pb.getSolver(); pb.minimize(X[n-1]); Golomb écrit en CHOCO
Méthode hybride pour l’OptimisationProduction de conséquences durant la recherche • Calculer à chaque nœud un minorant du coût de toutes les affectations complètes étendant l’affection partielle courante • Minorant obtenu par projection avec soustraction (cf. transp. suivant) • Minorant obtenu par élimination approchée des variables futures • Résultats (algorithme Depth First Branch and Bound) • Détecte plus tôt l’absence d’une meilleure solution siminorant majorant (meilleure solution rencontrée) • Suppression des valeurs si minorant + c(Xi,a) majorant • Heuristiques de choix de valeurs et de variables renseignées par les coûts unaires c(Xi,a)
a a b b Cohérence d’arc dans Max-CSP Soft Arc Consistency (Schiex, 2000) c = 1 , Majorant = 2 c = 0 , Majorant = 2 1 1 1 0 0 0 1 Opération de transformation qui préserve l’équivalence du problème 1 0 0 0 0 X1 X2 X1 X2 Projection d’un coût 1 de la contrainte c(X1,X2) vers c(X1,b) puis projection d’un coût 1 de la contrainte c(X1) vers le minorant c
Algorithme Depth First Branch and Bound Fonction DFBB( t : affectation, Best : coût ) : coût v CalculeMinorant( t ) Si v < Best Alors Si ( |t| = n ) Alors retourner v soit i une variable non affectée Pour tout a Di Faire Best min(Best, DFBB(t {(i,a)}, Best)) retourner Best retourner + • Variations possibles • Retour à la racine à chaque solution (aide propagation et heurisiques grâce à la connaissance dès la racine d’un meilleur majorant) • Condition de coupe renforcée (epsilon-DFBB) • DFBB répété avec coupes croissantes (iterative deepening) • Parcours meilleur en premier (best-first search),…
PPC et WCSP: ressources. • Implémentations • Réseaux Bayésiens http://www.cs.ubc.ca/~murphyk/Software/bnsoft.html • MPE : AOLIB (Dechter&Marinescu), samiam (Darwiche),… • Weighted CSP: PFC-MRDAC(Larrosa), LVCSP(ONERA), ToolBarhttp://carlit.toulouse.inra.fr/cgi-bin/awki.cgi/SoftCSP • ( Mixed Integer Programming : CPLEX (Ilog), Soplex, GLPK,… ) • Benchmarks • Bayesian Network Repository http://www.cs.huji.ac.il/labs/compbio/Repository/ • Instance Munin1 à 189 variables (w*=11) résolue en 2 secondes • WCSP: allocation de fréquences http://fap.zib.de/, gestion d’un satellite d’observation (ONERA), bioinformatique,… • ( MIP-Library ftp://plato.asu.edu/pub/milpf.html ) • Cours en ligne • T. Schiex, Soft Constraint Processing (CP Summer School 2005) http://www.inra.fr/mia/T/schiex
Evaluation des algorithmes • Complexité au pire cas ne rend pas bien compte de la réalité dans la plupart des cas • Complexité en moyenne très difficile à calculer • Essayer sur des cas réels convaincant (indispensable en pratique), mais ça ne prouve rien • Simuler la complexité en moyenne en travaillant sur des grands échantillons de cas générés aléatoirement • Travailler sur des problèmes réputés difficiles (benchmarks issus de problèmes académiques ou réels)
Evaluation des algorithmes • Paramètres de génération aléatoire • 3-CNF • Nombre de variables propositionnelles • Nombre de clauses • Réseaux de contraintes • Nombre de variables • Taille des domaines • Dureté des contraintes • Connectivité du graphe • Pour une classe de problèmes, mesurer le temps CPU, le nombre de nœuds dans l’arbre et le nombre de retours arrières des algorithmes à comparer
Evaluation des algorithmes • Transition de phase en satisfaction • Existence d’un seuil dans la zone des 50% de problèmes satisfiables • En dessous, grand nombre de solutions • Au dessus, fortement incohérent (détecté par application d’une cohérence locale) • Dans la zone seuil, explosion combinatoire pour de nombreux problèmes • Tester les algorithmes dans la zone dure, l’objectif est de réduire la hauteur et surtout la largeur du pic • Les problèmes d’optimisation se trouvent dans la zone dure