Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
785,95 KB
Nội dung
Institut de la Francophonie pour l’Informatique ´moire de stage de Master Me Au-del` a de la consistance de domaine Superviseurs : Auteur : Yves Deville KHONG Minh Thanh Jean Baptiste Mairy M´emoire pour l’obtention du Master Janvier 2015 TIEU LUAN MOI download : skknchat@gmail.com Remerciements Je tiens ` a remercier en tout premier lieu mes deux superviseurs Yves Deville et Jean Baptiste Mairy qui ont dirig´e ce travail de recherche de Master Je les remercie pour tout ce qu’ils m’ont apport´e, pour leurs conseils, leur pr´esence, leur patience, pour m’avoir fait confiance et m’avoir laiss´e la libert´e n´ecessaire `a l’accomplissement de mes travaux, tout en y gardant un oeil critique et avis´e Je remercie ´egalement Christophe Lecoutre, Centre de Recherche en Informatique, Universit´e d’Artois, l’auteur du solveur Abscon pour m’avoir aid´e `a ´etudier l’architecture de ce solveur et m’avoir donn´e des conseils Je suis ´egalement reconnaissance envers les beCools Ils m’ont aid´e et partag´e les exp´eriences de travails Finalement, un grand merci au mes parents pour leur gentillesse et leur soutien inconditionnel et constant, pour m’avoir donn´e du courage et de l’espoir i TIEU LUAN MOI download : skknchat@gmail.com Abstract Solving a problem in constraint programming is based on propagation and search Propagation aims at removing impossible values in the domain of the variables, by examining their consistency with constraints In recent years, several notions of consistency stronger than domain consistency have been proposed The objective of this master thesis is to study existing stronger consistency levels for both binary constraints and non-binary constraints Algorithms of propagation for different consistencies associated with non-binary constraint have been studied and implemented in the AbsCon solver More particularly, we implemented algorithms for MaxRPWC, rPIC and RPWC Experimental results show that in some classes of problems these consistencies are efficient since they can prune more than domain consistency ii TIEU LUAN MOI download : skknchat@gmail.com R´ esum´ e La r´esolution d’un probl`eme en programmation par contrainte est bas´ee sur la propagation et la recherche La propagation vise `a enlever les valeurs impossibles dans le domaines des variables, par l’examen de leur coh´erence avec la contrainte Ces derni`eres ann´ees, plusieurs notions de consistance plus forte que la consistance de domaine ont ´et´e propos´ees L’objectif de ce m´emoire est d’´etudier les niveaux de consistance forte existante pour les contraintes binaires et les contraintes non-binaires Des algorithmes de propagation pour les diff´erentes consistances fortes associ´es `a contrainte non binaire ont ´et´e ´etudi´es et mis en œuvre dans le solveur AbsCon Plus particuli`erement, nous avons impl´ement´e des algorithmes pour MaxRPWC, rPIC et RPWC Les r´esultats exp´erimentaux montrent que ces consistances sont efficaces dans certaines classes de probl`emes car elles peuvent ´elaguer plus que la consistance de domaine iii TIEU LUAN MOI download : skknchat@gmail.com Table des mati` eres Remerciements i Abstract ii R´ esum´ e iii Table des mati` eres iv Table des figures vi Liste des tableaux vii Introduction Notions de base 2.1 Pr´eliminaires 2.2 R´esolution d’un CSP : Propagation et Recherche 2.2.1 Propagation 2.2.2 Recherche 2.3 Consistance de domaine (DC) 2.4 Les consistance plus faibles que DC 2.4.1 Forward Checking (FC) 2.4.2 Bound Consistency (BC) Consistances plus fortes que DC 3.1 Consistances plus fortes que DC pour contraintes binaires 3.1.1 Consistances ` a base de triangle 3.1.2 Consistance selon le voisinage 3.1.3 Consistance de singleton 3.1.4 R´esum´e 3.2 Consistances plus fortes que DC pour contraintes non binaires 3.2.1 Restricted Pairwise Consistency (RPWC) 3.2.2 relational Path Inverse Consistency (rPIC) 3.2.3 Max Restrited Pairwise Consistency (Max-RPWC) 3.2.4 Max Restricted 3-wise Consistency (Max-R3WC) 3.2.5 Max Restricted k-wise Consistency (Max-RkWC) 3.2.6 PWC+GAC 3.2.7 kWC+GAC 3.2.8 relational Neighborhood Inverse Consistent (rNIC) 3 5 8 10 10 10 12 13 13 14 14 14 15 16 16 17 17 18 iv TIEU LUAN MOI download : skknchat@gmail.com Table des mati`ere v 3.2.9 Singleton Generalized Arc Consistency (SGAC) 18 3.2.10 R´esum´e 19 Algorithmes de filtrage pour contraintes non 4.1 Algorithme g´en´erique 4.2 Max-RPWC-1 4.3 rPIC-1 4.4 RPWC-1 4.5 Max-RPWC-2 4.6 Max-RPWC-3 4.7 R´esum´e Achitecture d’AbsCon 5.1 Les paquets dans AbsCon 5.2 Repr´esentation d’un CSP 5.3 R´esolution d’un CSP 5.4 La propagation dans AbsCon 5.5 DC 5.6 SAC 5.7 PWC+GAC binaires 20 20 22 23 23 25 27 28 30 30 30 31 32 33 33 34 Impl´ ementation et exp´ erimentation 35 6.1 Impl´ementation 35 6.2 Exp´erimentation 36 Conclusion 39 Bibliographie 41 TIEU LUAN MOI download : skknchat@gmail.com Table des figures 2.1 La r´esolution d’un CSP : propagation + recherche 3.1 Un exemple de CSP sur lequel RPC enl`eve plus de valeurs que DC : (xi , 1) n’est pas RPC tandis que ce CSP est DC Un exemple de CSP sur lequel PIC enl`eve plus de valeurs que RPC : (xi , 1) n’est pas PIC tandis que ce CSP est RPC Un exemple de CSP sur lequel Max-RPC enl`eve plus de valeurs que PIC : (xi , 1) n’est pas Max-RPC tandis que ce CSP est PIC Un exemple de CSP sur lequel NIC enl`eve plus de valeurs que Max-RPC : (xi , 1) n’est pas NIC tandis que ce CSP est Max-RPC Un exemple de CSP sur lequel SAC enl`eve plus de valeur que Max-RPC : (xi , 2) n’est pas SAC tandis que ce CSP est Max-RPC R´esum´e de la comparaison entre les consistances MaxRPWC vs rPIC PWC+GAC vs Max-RPWC R´esum´e de la comparaison entre les consistances bas´ees sur le domaine pour les contraintes non binaires 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 11 11 12 12 13 13 16 17 19 4.1 Applique Max-RPWC-1 et Max-RPWC-2 sur un CSP non-binaire 27 5.1 5.2 AbsCon : Repr´esentation d’un CSP [1] 31 AbsCon : R´esolution d’un CSP [1] 31 vi TIEU LUAN MOI download : skknchat@gmail.com Liste des tableaux 4.1 R´esum´e des algorithmes avec leur complexit´e de temps et d’espace 28 6.1 6.2 R´esultat exp´erimental sur les instances du probl`eme modified renault 37 R´esultat exp´erimental sur les instances du probl`eme random-fcd 38 vii TIEU LUAN MOI download : skknchat@gmail.com Chapitre Introduction La programmation par contraintes est un paradigme puissant pour r´esoudre des probl`emes combinatoires qui s’appuient sur un large ´eventail de techniques de l’intelligence artificielle et de la recherche op´erationnelle La programmation par contraintes est actuellement appliqu´ee avec succ`es ` a de nombreux domaines, tels que la planification, le routage de v´ehicule, la configuration, les r´eseaux, et la bio-informatique [2] L’id´ee de base en programmation par contraintes est que l’utilisateur indique les contraintes, le probl`eme et un solveur de contrainte qui est utilis´e pour les r´esoudre La contrainte est une relations entre les variables, un probl`eme de satisfaction de contraintes (un CSP) sp´ecifie quelles relations doivent tenir entre les variable de d´ecision donn´ees Par exemple, dans la planification des activit´es d’une entreprise, les variables de d´ecision peuvent ˆetre les heures de d´ebut et les contraintes peuvent ˆetre sur la disponibilit´e des ressources et sur leur utilisation pour un nombre limit´e d’activit´es `a un moment Un solveur de contrainte prend un probl`eme, ce probl`eme est repr´esent´e en terme de variables de d´ecision et de contraintes et s’emploie `a trouver une assignation `a toutes les variables tout en satisfaisant les contraintes Le solveur de contraintes cherche la solution dans l’espace de recherche soit syst´ematiquement, comme avec retour en arri`ere (backtracking) L’espace de recherche est un arbre car les valeurs diff´erentes peuvent ˆetre choisies pour les diff´erentes variables La taille de l’arbre de recherche est exponentielle Il est donc n´ecessaire de r´eduire la taille de l’arbre de recherche et de d´etecter les inconsistances (ou l’´echec) des solutions partielles d`es que possible Cette m´ethode est appel´ee propagation Le framework de programmation par contraintes combine la propagation et la recherche L’objectif de la propagation est de r´eduire la taille de l’espace de recherche sans enlever la solution du probl`eme La propagation d´etecte ´egalement les ´echecs, et termine les TIEU LUAN MOI download : skknchat@gmail.com Chapitre Introduction branches de l’arbre de recherche, ´economise l’exploration inutile de l’espace de recherche Diff´erents niveaux d’´elagage peuvent ˆetre atteints Ceux-ci sont g´en´eralement d´efinies par une propri´et´e de consistance satisfaite par le CSP apr`es la propagation La consistance de domaine est la consistance standard atteinte par un algorithme de propagation Les contraintes sont consid´er´ees individuellement, une contrainte est domaine consistant si toutes les valeurs de chacune de ses variables participent `a une solution de cette contrainte Les valeur qui ne satisfont pas cette propri´et´e sont enlev´ees Quand un algorithme de propagation pour la consistance de domaine est appliqu´e, le CSP r´esultant est plus facile ` a r´esoudre Cependant, atteindre la consistance de domaine a un coˆ ut Les consistances plus faibles ont ´et´e d´efinies tels que forward checking ou bound consistency Elles enl`event moins de valeur mais l’´etape de propagation est plus rapide Les consistances plus fortes ont ´egalement ´et´e d´efinies Bien qu’elles soit plus coˆ uteuses `a atteindre, leur puissance d’´elagage est particuli`erement adapt´ee pour des probl`emes combinatoires complexes tels que ceux figurant dans la vie r´eelle Dans ce m´emoire, pour la partie th´eorique, nous ´etudions les diff´erents niveaux de consistance plus forte qui r´eduisent le domaine des variables pour les contraintes binaire et les contraintes non-binaires Pour les contraintes binaires, nous abordons les diff´erentes consistances tels que : Restricted Path Consistency (RPC), Path Inverse Consistency (PIC), Max Restricted Path consistency (MaxRPC), Neighborhood Inverse Consistency (NIC), Singleton Arc Consistency (SAC) Ces consistances seront ´etendues pour les contraintes non-binaires PIC a ´et´e ´etendu `a rPIC, RPC `a RPWC, et MaxRPC ` a MaxRPWC Dans [3], NIC est ´etendu `a rNIC Pour la partie pratique, les algorithmes de propagation pour les diff´erentes consistances associ´ees avec les contraintes non-binaires ont ´et´e ´etudi´es et impl´ement´e dans le solveur AbsCon Plus particuli`erement, nous avons impl´ement´e les algorithmes pour MaxRPWC, rPIC, et RPWC Les r´esultats exp´erimentaux montrent que ces consistances sont efficaces dans certaines classes de probl`emes car elles peuvent ´elaguer plus que la consistance de domaine Le reste de la th`ese est structur´e comme suit Le chapitre pr´esente le contexte et les d´efinitions n´ecessaires Dans le chapitre 3, nous ´etudions les diff´erentes consistances pour les contraintes binaires et non-binaires Dans le chapitre 4, les algorithmes pour atteindre les consistances plus fortes pour les contraintes non-binaires seront pr´esent´es Dans le chapitre 5, nous pr´esentons la structure du solveur AbsCon et l’impl´ementation de ces algorithmes Le chapitre donne des r´esultats exp´erimentaux Enfin, nous donnons la conclusion et le travail futur TIEU LUAN MOI download : skknchat@gmail.com Chapitre Algorithmes de filtrage pour contraintes non binaires 28 est retourn´e function Revise(xj , ci , M axRP W C) foreach value a ∈ D(xj ) PW ← FALSE; foreach valid τ (∈ rel(ci )) ≥l lastGACxj ,a,ci s.t τ [xj ] = a PW ← TRUE; foreach cm = ci s.t |vars(ci ) ∩ vars(cm )| > if τ = lastGACxj ,a,ci , t ← lastP Wxj ,a,ci ,cm ; else t ← first tuple in rel(cm ); if valid τ (∈ rel(cm )) ≥l t s.t τ [vars(ci ) ∩ vars(cm )] = τ [vars(ci ) ∩ vars(cm )] PW ← FALSE; break; 10 else lastP Wxj ,a,ci ,cm ← τ ; 11 if PW = TRUE, lastGACxj ,a,ci ← τ ; break; 12 if PW = FALSE, remove a from D(xj ); 13 14 return number of deleted values; Code 4.8: function Revise of Max-RPWC-3 Cet algorithme a une complexit´e temporelle de O(e2 k dp ) et une complexit´e d’espace en O(e2 kd) o` u p est le nombre maximum de variables impliqu´ees dans deux contraintes [10] Max-RPWC3 a une mˆeme complexit´e temporelle avec Max-RPWC1 mais dans en pratique, il sera plus efficace parce que dans le cas que le PW-support τ de τ est enlev´e, il commence par le tuple suivant de τ 4.7 R´ esum´ e Algorithme GAC3.1/2001 RPWC-1 rPIC-1 MaxRPWC-1 MaxRPWC-2 MaxRPWC-3 Complexit´ e de temps O(ek dk ) O(e2 k dp ) O(e2 k dp ) O(e2 k dp ) O(e2 k dk ) O(e2 k dp ) Complexit´ e d’espace O(ekd) O(ekd) O(e2 kd) O(ekd) O(ekdf ) O(e2 kd) Table 4.1: R´esum´e des algorithmes avec leur complexit´e de temps et d’espace TIEU LUAN MOI download : skknchat@gmail.com Chapitre Algorithmes de filtrage pour contraintes non binaires 29 Dans ce chapitre, nous avons abord´e les algorithmes pour les consistances RPWC, rPIC, Max-RPWC Trois algorithmes sont propos´es pour Max-RPWC : Max-RPWC-1, MaxRPWC-2, Max-RPWC-3 Entre les algorithmes pour Max-RPWC, l’algorithme MaxRPWC-2 a une bonne complexit´e temporelle mais il a besoin de m´emoire L’algorithme Max-RPWC-3 a un compromis entre les deux La table ci-dessous donne la r´esum´e des algorithmes ´etudi´es avec leur complexit´e temporelle et d’espace TIEU LUAN MOI download : skknchat@gmail.com Chapitre Achitecture d’AbsCon Dans ce chapitre, nous allons pr´esenter l’architecture du solveur AbsCon Ce solveur permet de r´esoudre les CSPs binaires et non binaires Il est impl´ement´e en Java, il est donc ind´ependant du plate-forme Ce solveur est int´egr´e des heuristiques de recherche et des techniques de propagation L’architecture d’AbsCon est d’abord abord´ee, ensuite, la r´esolution d’un CSP dans AbsCon est pr´esent´ee Puis, nous pr´esentons comment la propagation se d´eroule pour les consistances : DC, SAC et PWC+GAC 5.1 Les paquets dans AbsCon Dans AbsCon, nous trouvons les paquets principaux ci-dessous : – abscon : pour lancer le programme, initialiser le probl`eme, le solveur – problem.* : contenir les classe pour pr´esenter un probl`eme, tous les probl`emes doivent ´etendre la classe ”Problem” – variable : pour d´efinir les variables du probl`eme – variable.domain : pour d´efinir le domaine de variables – contraint.* : pour repr´esenter les contraintes – search.*, heuristic.* : les heuristiques, les algorithmes pour la recherche – propagation.* : pour la propagation, il y a plusieurs types de propagation : AC, FC, SAC, 5.2 Repr´ esentation d’un CSP Pour repr´esenter un CSP sous AbsCon Les classes utilis´ees sont Problem, Variable, Domain and Constraint Un UML diagramme est donn´e par la figure 5.1 30 TIEU LUAN MOI download : skknchat@gmail.com Chapitre Achitecture d’AbsCon 31 Figure 5.1: AbsCon : Repr´esentation d’un CSP [1] Dans AbsCon un probl`eme est caract´eris´e par deux tableaux sp´ecifiant un ensemble de variables et un ensemble de contraintes La classe Problem est une classe abstraire dont il est possible de d´eriver un classe repr´esentant un probl`eme sp´ecifique L’utilisateur doit outrepasser deux m´ethode (specifyVariables(), specifyConstraints()) pour sp´ecifier les variables et les contraintes Une variable est caract´eris´ee par un domaine et par un tableaux sp´ecifiant l’ensemble des contraintes portant sur cette variable Notez que la classe Variable a une r´ef´erence sur un objet ValueChooser qui impl´emente une heuristique de choix de valeur Un domaine est associ´e avec une variable et est caract´eris´e par un tableau sp´ecifiant l’ensemble de valeurs autoris´ees Une contrainte est caract´eris´e par un tableau de variable liant avec elle et par un ensemble de m´ethodes qui peut ˆetre appel´e pendant la propagation 5.3 R´ esolution d’un CSP Figure 5.2: AbsCon : R´esolution d’un CSP [1] Nous d´ecrivons dans cette section les classes utilis´ees pour r´esoudre un CSP Ce sont : Solver, VariableChooser, ValueChooser et Propagator TIEU LUAN MOI download : skknchat@gmail.com Chapitre Achitecture d’AbsCon 32 La classe Solver se situe dans le paquet search.* Elle impl´emente l’algorithme DFS (Depth First Search) avec Backtracking Quand un objet de Solver est cr´e´e, un sp´ecifique CSP est associ´e avec lui Cet objet g`ere l’ensemble d’assignation et essaie, `a chaque pas, de faire une nouvelle assignation La prochaine variable `a assigner est choisie par un objet de VariableChooser et la prochaine valeur `a assigner est choisie par un objet de ValueChooser Apr`es chaque nouvelle assignation, la propagation est appliqu´ee par un objet de Propagation La r´esolution est arrˆet´ee quand une (ou n) solution est trouv´e ou quand l’espace de recherche est totalement couverte La classe VariableChooser se situe dans le paquet heuristics.* Elle repr´esente une heuristique de choix de valeur attach´ee `a une variable donn´ee La classe VariableChooser repr´esente une heuristique de choix de variable tels que : Lexicographic, SmallestDomain (dom), SmallestDomainOnDegree (dom/deg) La classe Propagation se situe dans le paquet propagation.* Elle repr´esente la m´ethode pour propagation, elle est li´ee avec la classe Constraint pour tester la consistance En fait, le paquet ”propagation.*” g`ere la propagation tel que : ajouter ou retirer une contrainte dans le queue de r´evision quand n´ecessaire Chaque contrainte a une m´ethode pour r´eviser la consistance Cette m´ethode est utilis´ee pour enlever les valeurs inconsistantes Dans AbsCon, des consistances ont ´et´e impl´ement´ees tels que : DC, forward checking, SAC, PWC + GAC, 5.4 La propagation dans AbsCon Nous d´ecrivons dans cette section la propagation dans AbsCon Les paquets pour la propagation sont dans propagation.* Quand on veut d´evelopper une propagation, il faut d´eriver la classe de base Propagation Dans cette classe, nous avons des m´ethodes de base qui sont utilis´ees pendant la r´esolution : – enforce() : cette m´ethode est utilis´ee au d´epart, pour obtenir la consistance avant de faire la recherche – enforceAfterAssignmentOf(Variable) : pendant la recherche, apr`es chaque assignation de variable, cette m´ethode est utilis´ee pour obtenir la consistance en r´evisant les contraintes portant sur cette variable – enforceAfterRefutationOf(Variable) : si pendant la recherche une assignation est ´echou´ee, cette m´ethode est appel´ee pour achever la consistance D’abord, la valeur dans cette assignation est enlev´ee et puis les contraintes portant sur cette variable sont r´evis´ees – propagate() : pour obtenir la consistance dans trois m´ethodes pr´ec´edentes, propagate() est appel´ee L’id´ee de propagate() est d´ecrite ci-dessous function Propagation.propagate() TIEU LUAN MOI download : skknchat@gmail.com Chapitre Achitecture d’AbsCon 33 // OUT : reviser tous les variables dans la queue et enlever les inconsistances For each x ∈ Q For each ci s.t x ∈ vars(ci ) ci f ilterF rom(x) Code 5.1: m´ethode propagate() La propagation dans AbsCon est orient´ee variables, signifiant que la queue Q utilis´ee pour la propagation contient des variables Quand une variable x est choisie dans Q, toutes les contraintes portant sur x sont sollicit´ees pour filtrer (ci f ilterF rom(x)) La m´ethode ci f ilterF rom(x) va r´eviser la consistance pour tous les variables dans ci Lorsqu’elle d´etecte une valeur inconsistante, alors cette valeur est enlev´e et la variable est mise dans la queue Les sections suivantes vont pr´esenter quelques algorithmes de propagation dans AbsCon 5.5 DC La propagation de DC(ou AC) est d´efinie dans la classe AC sous le paquet propagation.* Elle ´etend la classe Propagation Pour obtenir la DC les fonctions suivantes sont appel´ees : – enforce() : cette m´ethode est appel´ee au d´epart (avant la recherche) pour forcer la consistance Elle met tous les variables dans la queue, ensuite appelle la m´ethode propagate() pour forcer la DC – enforceAfterAssiggmentOf(Variable) : cette m´ethode est appel´ee pendant la recherche apr`es chaque assignation, la variable assign´ee est mise dans la queue et la m´ethode propagate() est appel´ee pour forcer la consistance – enforceAfterRefutationOf(Variable) : cette m´ethode est appel´ee pendant la recherche, quand une assignation est ´echou´ee, la valeur est enlev´ee, la variable est mise dans la queue et la m´ethode propagate() est appel´ee pour la DC 5.6 SAC La classe SAC ´etend la classe StrongConsistency qui ´etend la classe AC Elle est dans le paquet propagation.* Comme la d´efinition de SAC, un CSP (X, D(X), C) est SAC si et seulement si pour chaque variable xi ∈ X, et pour chaque valeur a ∈ D(xi ), quand on assigne xi = a, TIEU LUAN MOI download : skknchat@gmail.com Chapitre Achitecture d’AbsCon 34 le sous probl`eme (X, D(X)xi =a , C) peut ˆetre rendu AC.L’id´ee de StrongConsistency est d’ajouter la m´ethode enforceMore() dans les m´ethodes enforce(), enforceAfterAssiggmentOf(Variable), enforceAfterRefutationOf(Variable) La m´ethode enforeMore() va examiner la consistance pour chaque future variable (les variables non assign´ees) par la m´ethode makeSingletonTestOn(Variable) dans la classe SAC La m´ethode makeSingletonTestOn(Variable) teste le SAC en assignant une valeur `a une variable En suite, si le sous-probl`eme ne peut pas ˆetre rendu AC, cette valeur est enlev´ee La propagation s’arrˆete quand il n’y a plus de changement Quand il y a du changement, on red´emarre la m´ethode enforceMore() 5.7 PWC+GAC L’algorithme PWC+GAC est impl´ementer par deux classes : PWCGAC et ConstraintHardExtensionPWCGAC La classe PWCGAC g`ere la propagation et la classe ConstraintHardExtensionPWCGAC est pour pr´esenter les contraintes Ce sont des contraintes sp´eciales qui connaissent leurs contraintes voisines et ces contraintes sont appel´ees par la classe PWCGAC pendant la propagation pour r´eviser la consistance PWC+GAC La classe PWCGAC ´etend la classe AC Elle permet de propager les contraintes n´ecessaires pour obtenir la consistance Quand la propagation PWCGAC est cr´e´ee, elle va trouver les intersections entre les contrainte de type ConstraintHardExtensionPWCGAC et les ajouter dans ces contraintes Ce processus est n´ecessaire pour examiner l’extensibilit´e des tuples Pendant la propagation, la m´ethode propagate() est appel´ee Et puis elle appelle la m´ethode ConstraintHardExtensionPWCGAC.runPropagator(Variable) pour r´eviser la consistance PWC+GAC L’id´ee de cette m´ethode est d´ecrite ci-dessous function c.runPropagator(Variable) // OUT:enlever les tuples invalides, ne pas s’etendre aux autres tuples // enlever les valeurs inconsistantes du domaine de variable for each tuple τ ∈ rel(c) if τ is not valid or τ can not extend to others constraints remove τ update domain of variables in c Code 5.2: m´ethode runPropagator() Nous avons pr´esent´e dans ce chapitre la structure d’AbsCon, la r´esolution d’un CSP et la propagation dans CSP Cette partie nous permet de comprendre les d´emarches dans AbsCon et d’impl´ementer les algorithmes de consistances fortes dans le chapitre suivant TIEU LUAN MOI download : skknchat@gmail.com Chapitre Impl´ ementation et exp´ erimentation Dans ce chapitre, nous abordons notre impl´ementation des algorithmes pour les consistances fortes Plus particuli`erement, ce sont les algorithmes : RPWC-1, rPIC-1, MaxRPWC-1, Max-RPWC-3 En suite, nous montrons le r´esultat exp´erimental et l’analyse de ce r´esultat est ´egalement donn´ee 6.1 Impl´ ementation Comme nous avons pr´esent´e les algorithmes dans le chapitre 4, les contraintes n´ecessaires sont sollicit´ees pendant la propagation et dans la fonction Revise(xj , ci , DF C), les contraintes cm intersect´ees avec ci sont ´egalement sollicit´ees Compte tenu de l’architecture d’AbsCon, nous faisons deux classes principales pour la propagation : – DFC : C’est la classe g´en´erale pour les consistances RPWC, rPIC, Max-RPWC Cette classe g`ere la propagation comme ajouter et retirer une variable dans la queue de propagation, appeler les contraintes portant sur cette variable pour r´eviser la consistance Cette classe permet une contrainte de trouver ces contraintes voisines – ConstraintHardExtensionDFC (pour chaque algorithme pour les consistances RPWC, rPIC, ; le nom DFC change `a RPWC1, rPIC1, .) : Cette classe repr´esente les contraintes de CSP Elle permet de r´eviser une consistance (RPWC, rPIC, .) A chaque fois, quand la contrainte est sollicit´ee La m´ethode runPropagator(Variable) de cette classe est appel´ee Cette m´ethode joue le rˆole de la fonction Revise(xj , ci , DF C) qui r´evise la consistance (RPWC, rPIC, .) pour chaque valeur d’une variable 35 TIEU LUAN MOI download : skknchat@gmail.com Chapitre Implementation et exp´erimentation 36 Ci-dessous l’id´ee de la m´ethode runPropagator(Variable) Quand la contrainte ci est sollicit´ee, la fonction ci runPropagator(Variable) est appel´ee Elle r´evise la consistance (RPWC, rPIC, ) pour chacune de ses variables La fonction Revise(xj , ci , DF C) est int´egr´ee dans cette m´ethode Cette fonction est impl´ement´ee selon les algorithmes pr´esent´es (RPWC1, rPIC1, .) dans le chapitre function ci runPropagator(Variable) for each variable xj ∈ ci Reviser la consistance pour chaque valeur dans le domaine de xj // Revise(xj , ci , DF C) // update domain of all variable in ci , return false if a domain of variable is empty return updateDomain() Code 6.1: function runPropagator(Variable) Dans ce travail, nous avons impl´ement´e les algorithmes : RPWC-1, rPIC-1, Max-RPWC1, Max-RPWC-3 L’algorithme Max-RPWC-2 n’a pas ´et´e impl´ement´e car il a une grande complexit´e en espace Pour v´erifier la correction de notre impl´ementation, nous avons test´e notre r´esultat avec les algorithmes ayant ´et´e impl´ement´es dans AbsCon comme GAC (l’algorithme STR2) et l’algorithme pour PWC+GAC 6.2 Exp´ erimentation L’exp´erimentation est lanc´e avec le solveur AbsCon sur un PC de 4GB RAM, Core i52520M, Ubuntu Les probl`emes utilis´es sont renault, random-fcd dans [11] Ce sont des probl`emes utilis´es pour la comp´etition de solveur de CSP [12] Le nombre de variables intersect´ees dans les contraintes de ces probl`emes est vari´e entre et 10 Nous comparons les algorithmes : RPWC1, rPIC1, MaxRPWC1, MaxRPWC3, GAC(algorithme STR2) et PWC+GAC (d´ej` a impl´ement´e dans AbsCon) Les crit`eres `a consid´erer sont CPU time(s), et node(n) Pour la recherche, l’heuristique dom/ddeg pour choisir la variable, et la lexicographique pour choisir la valeur de cette variable L’heuristique dom/ddeg est choisie car le r´esultat est plus facile `a comparer la puissance d’´elagage des algorithmes La table 6.1 montre le r´esultat sur les instances du probl`eme modified renault Dans chaque case, le temps d’ex´ecution (s) et le nombre de node (n) sont montr´e L’arit´e de chaque contrainte varie entre 2-10 Quand on consid`ere le nombre de nœuds d´ecouverts (n), l’algorithme GAC doit passer le maximum de noeud, ensuite, ce sont les algorithmes TIEU LUAN MOI download : skknchat@gmail.com Chapitre Implementation et exp´erimentation 37 RPWC1, rPIC1, Max-RPWC1, Max-RPWC3 L’algorithme PWC+GAC passe le minimum nombre de noeud par rapport aux autres algorithmes Ce r´esultat correspond bien `a la th´eorique parce que la puissance d’´elagage de chaque consistance permet de r´eduire le nombre de noeuds pass´es La puissance de PWC est la plus forte, l’algorithme pour cette consistance passe le moins nombre de noeuds Dans les instances renault-3 et renault-5, cette puissance est clairement montr´ee Au niveau du temps d’ex´ecution, les algorithmes RPWC1, rPIC1, Max-RPWC1, Max-RPWC3 sont moins comp´etitifs Le temps d’ex´ecution de ces algorithmes sont souvent plus lent par rapport `a GAC (STR2) sauf les instances renault-3, renault-5 Cela peut ˆetre expliqu´ee par la complexit´e des algorithmes A chaque noeud, le temps pour ex´ecuter ces algorithmes est plus long que celui de l’algorithme GAC (STR2) Entre deux algorithmes : Max-RPWC1 et Max-RPWC3, l’algorithme Max-RPWC3 est souvent plus rapide que Max-RPWC1 Probl`eme renault-0 renault-1 renault-2 renault-3 renault-4 renault-5 renault-6 renault-7 renault-8 renault-9 t n t n t n t n t n t n t n t n t n t n GAC (STR2) 0.72, 166 2.91, 53775 0.77, 111 1390.86, 20994648 0.67, 114 213.82, 3231085 4.64, 115411 0.70, 134 5.67, 180955 0.68, 254 RPWC1 rPIC1 4.336, 114 285.73, 43244 1.65, 111 17872.2, 16992656 1.64, 112 409.95, 44491 289.72, 59526 3.50, 120 608.05, 111363 2.70, 148 21.60, 111 118.00, 818 31.17, 111 >36000, 22.93, 112 647.82, 12825 985.77, 59507 28.33, 113 1745.68, 86045 30.75, 113 MaxRPWC1 51.17, 111 32.44, 37.07, 111 30.00, 34.55, 112 102.09, 241 522.77, 52831 42.17, 113 456.98, 12336 59.53, 113 MaxRPWC3 65.25, 111 20.66, 47.49, 111 45.80, 30.60, 112 98.84, 241 569.82, 52831 43.26, 113 257.66, 12336 32.84, 113 PWC+ GAC 3.29, 111 1.72, 2.03, 111 1.52, 2.17, 112 1.57, 6.45, 52831 2.06, 112 2.24, 1.86, 111 Table 6.1: R´esultat exp´erimental sur les instances du probl`eme modified renault Nous avons exp´eriment´e ensuite sur les instances du probl`eme random-fcd Ces instances sont g´en´er´ees par le mod`ele RB [13] Les instances difficiles sont choisies pour exp´erimenter La table 6.2 montre le r´esultat Dans cette exp´erimentation, le temps d’ex´ecution pour chaque algorithme est limit´e `a 2000 secondes, si un algorithme d´epasse ce temps, il est arrˆet´e Au niveau d’´elagage, le nombre de noeud montre que PWC+GAC est le plus fort, puis MaxRPWC, rPIC, RPWC et GAC est le plus faible Mˆeme avec la puissance d’´elagage plus fort que celle de GAC, la complexit´e de temps des algorithmes RPWC, rPIC, Max-RPWC1, Max-RPWC3 sont encore assez grande C’est TIEU LUAN MOI download : skknchat@gmail.com Chapitre Implementation et exp´erimentation 38 pour cette raison, ces algorithmes ne peuvent pas r´esoudre tous les instances Dans ce r´esultat, l’algorithme Max-RPWC3 est toujours plus rapide que Max-RPWC1 L’algorithme PWC+GAC est comp´etitif avec GAC(STR2), pour quelques instances, il est plus rapide que GAC (STR2) Probl`eme rand-3-20-20-60632-fcd-12 rand-3-20-20-60632-fcd-13 rand-3-20-20-60632-fcd-22 rand-3-20-20-60632-fcd-25 rand-3-20-20-60632-fcd-26 rand-3-20-20-60632-fcd-27 rand-3-20-20-60632-fcd-2 rand-3-20-20-60632-fcd-31 rand-3-20-20-60632-fcd-32 rand-3-20-20-60632-fcd-33 rand-3-20-20-60632-fcd-34 rand-3-20-20-60632-fcd-35 rand-3-20-20-60632-fcd-39 rand-3-20-20-60632-fcd-3 rand-3-20-20-60632-fcd-40 rand-3-20-20-60632-fcd-50 t n t n t n t n t n t n t n t n t n t n t n t n t n t n t n t n GAC (STR2) 182.90, 442618 89.34, 291047 176.08, 357888 65.04, 162524 94.68, 314612 169.17, 447726 30.49, 69199 88.56, 253745 91.07, 233802 239.85, 724656 68.79, 206031 9.21, 23546 48.75, 146557 57.39, 157061 105.05, 252077 373.71, 1263148 RPWC1 rPIC1 1627.96, 184029 1538.05, 205691 680.60, 84636 616.62, 104954 1835.56, 251913 225.20, 36131 559.61, 111407 1296.33, 155292 840.33, 122238 84.60, 12079 808.11, 76763 725.5, 90875 1119.37, 124814 - 1111.33, 30128 457.52, 10542 - MaxRPWC1 1911.18, 57987 1046.79, 28009 1026.40, 22830 384.65, 6914 1515.00, 27827 - MaxRPWC3 1132.22, 57987 780.93, 28009 627.17, 22830 1412.27, 80772 231.16, 6914 1325.11, 27827 1169.79, 63970 - PWC+ GAC 235.41, 141422 74.86, 111347 166.37, 121615 62.12, 57883 24.30, 20203 147.66, 111419 35.57, 18248 72.83, 77716 100.09, 84892 195.73, 206415 62.45, 57367 6.76, 5165 39.09, 27524 69.71, 58492 89.41, 65002 198.65, 192628 Table 6.2: R´esultat exp´erimental sur les instances du probl`eme random-fcd Nous avons montr´e le r´esultat exp´erimental, entre les algorithmes ´etudi´es dans ce travail, Max-RPWC3 est prometteur pour la pratique Il est souvent plus rapide que MaxRPWC1 et rPIC1 Pour quelques instances, Max-RPWC3 est plus rapide que GAC (STR2) L’algorithme PWC+GAC (qui est d´ej`a impl´ement´e dans AbsCon) est comp´etitif par rapport aux autres algorithmes Il est le plus rapide dans plusieurs instances et sa puissance d’´elagage est plus forte que les autres dans ce travail TIEU LUAN MOI download : skknchat@gmail.com Chapitre Conclusion Dans ce travail, nous avons ´etudi´e la propagation et les techniques de consistance fortes existantes Pour les CSPs binaires (dont les contraintes sont binaires), nous avons les consistances RPC, PIC, MaxRPC, SAC, NIC Pour les CSPs non-binaire, les consistances RPC, PIC, MaxRPC, NIC sont ´etendu `a RPWC, rPIC, MaxRPWC, rNIC La puissant d’´elagage de ces consistances est ´egalement ´etudi´e Entre les consistances pour les contraintes non-binaires, MaxRPWC est plus fort que rPIC, rPIC est plus fort que RPWC, et RPWC est plus fort que GAC Les algorithmes pour RPWC, rPIC et MaxRPWC sont ´etudi´es dans ce m´emoire Parmi lesquels, l’algorithme MaxRPWC3 est le plus int´eressant pour sa puissance d’´elagage et sa complexit´e de temps Pour la partie pratique, nous avons d’abord ´etudi´e le solveur AbsCon Sur ce solveur, quelques algorithmes de propagation sont d´ej`a impl´ement´es tels que GAC (STR2), SAC, PWC+GAC Ensuite, nous avons impl´ement´e les algorithmes RPWC1, rPIC1, MaxRPWC1, MaxRPWC3 dans ce solveur Nous avons exp´eriment´e ces algorithmes pour analyser l’avantage d’utilisation des consistances fortes Le r´esultat pratique montre que les consistances fortes permet de r´eduire l’espace de recherche Dans certain cas, l’algorithme pour ces consistances fortes marche plus rapide que l’algorithme pour GAC Par contre, la complexit´e de ces algorithmes est assez grande, dans le cas qu’ils ne peuvent pas r´eduire assez l’espace de recherche, ils r´esolvent plus lent que GAC Parmi les algorithmes impl´ement´es dans ce travail, MaxRPWC3 est prometteur L’algorithme PWC+GAC marche plus rapide entre les algorithmes de consistances fortes Pour perspectives, nous proposons d’am´eliorer l’algorithme MaxRPWC3 Il faut d’abord am´eliorer l’impl´ementation de cette algorithme On peut am´eliorer la partie backtracking pour le pointeur lastP Wxj ,a,ci ,cm dans cette impl´ementation Puis, il faut trouver une fa¸con efficace pour le teste d’extensibilit´e des tuples d’une contrainte en m´emorisant les indexes de ses PW-supports Comme PWC+GAC est efficace dans la plus part 39 TIEU LUAN MOI download : skknchat@gmail.com Chapitre Conclusion 40 probl`emes, nous proposons de consid´erer la g´en´eralisation de la consistance PWC+GAC Dans certain cas, r´eviser la consistance forte pour toutes les contraintes est couteux, nous essayerons de r´eviser la consistance sur une partie contraintes d’un CSP Cela peut r´eduire l’espace de recherche et elle est moin couteux L’´etape suivante est d’envisager la combinaison de ces consistances TIEU LUAN MOI download : skknchat@gmail.com Bibliographie [1] Sylvain Merchez, Christophe Lecoutre, and Fr´ed´eric Boussemart Abscon : A prototype to solve csps with abstraction In Principles and Practice of Constraint Programming—CP 2001, pages 730–744 Springer, 2001 [2] Francesca Rossi, Peter Van Beek, and Toby Walsh Handbook of constraint programming Elsevier, 2006 [3] Kostas Stergiou Strong domain filtering consistencies for non-binary constraint satisfaction problems International Journal on Artificial Intelligence Tools, 17 (05) :781–802, 2008 [4] Christian Bessi`ere, Jean-Charles R´egin, Roland HC Yap, and Yuanlin Zhang An optimal coarse-grained arc consistency algorithm Artificial Intelligence, 165(2) : 165–185, 2005 [5] Romuald Debruyne and Christian Bessiere Domain filtering consistencies Journal of Artificial Intelligence Research, 14 :205–230, 2001 [6] Christian Bessiere Constraint propagation Handbook of constraint programming, pages 29–83, 2006 [7] Romuald Debruyne and Christian Bessiere to max-restricted path consistency From restricted path consistency In Principles and Practice of Constraint Programming-CP97, pages 312–326 Springer, 1997 [8] Romuald Debruyne A property of path inverse consistency leading to an optimal pic algorithm In ECAI, pages 88–92, 2000 [9] Eugene C Freuder and Charles D Elfe Neighborhood inverse consistency preprocessing In AAAI/IAAI, Vol 1, pages 202–208, 1996 [10] Christian Bessiere, Kostas Stergiou, and Toby Walsh Domain filtering consistencies for non-binary constraints Artificial Intelligence, 172(6) :800–822, 2008 [11] URL http://www.cril.univ-artois.fr/~lecoutre/benchmarks.html 41 TIEU LUAN MOI download : skknchat@gmail.com Bibliography 42 [12] URL http://www.cril.univ-artois.fr/CPAI08/ [13] Ke Xu, Frederic Boussemart, Fred Hemery, and Christophe Lecoutre A simple model to generate hard satisfiable instances arXiv preprint cs/0509032, 2005 TIEU LUAN MOI download : skknchat@gmail.com ... de consistance est la consistance de domaine (DC) 2.4 Les consistance plus faibles que DC Pour certains probl`emes, obtenir la consistance de domaine (DC) est coˆ uteux, on peut consid´erer la. .. ´echou´ee, la valeur est enlev´ee, la variable est mise dans la queue et la m´ethode propagate() est appel´ee pour la DC 5.6 SAC La classe SAC ´etend la classe StrongConsistency qui ´etend la classe... par la classe PWCGAC pendant la propagation pour r´eviser la consistance PWC+GAC La classe PWCGAC ´etend la classe AC Elle permet de propager les contraintes n´ecessaires pour obtenir la consistance