1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Au dela de la consistance de domaine

50 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 284,75 KB

Nội dung

Institut de la Francophonie pour l’Informatique Memoire de stage de Master Au-dela de la consistance de domaine Superviseurs : Auteur : Yves Deville KHONG Minh Thanh Jean Baptiste Mairy Memoire pour l’obtention du Master Janvier 2015 Remerciements Je tiens a remercier en tout premier lieu mes deux superviseurs Yves Deville et Jean Baptiste Mairy qui ont dirige ce travail de recherche de Master Je les remercie pour tout ce qu’ils m’ont apporte, pour leurs conseils, leur presence, leur patience, pour m’avoir fait ance et m’avoir laisse la libert necessaire a l’accomplissement de mes travaux, tout en y gardant un oeil critique et avise Je remercie egalement Christophe Lecoutre, Centre de Recherche en Informatique, Universit d’Artois, l’auteur du solveur Abscon pour m’avoir aide a etudier l’architecture de ce solveur et m’avoir donne des conseils Je suis egalement reconnaissance envers les beCools Ils m’ont aide et partage les experiences de travails Finalement, un grand merci au mes parents pour leur gentillesse et leur soutien incon-ditionnel et constant, pour m’avoir donne du courage et de l’espoir i Abstract Solving a problem in constraint programming is based on propagation and search Propa-gation aims at removing impossible values in the domain of the variables, by examining their consistency with constraints In recent years, several notions of consistency stron-ger 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 di erent consistencies associated with non-binary constraint have been studied and implemented in the AbsCon solver More particularly, we imple-mented algorithms for MaxRPWC, rPIC and RPWC Experimental results show that in some classes of problems these consistencies are e cient since they can prune more than domain consistency ii Resum La resolution d’un probleme en programmation par contrainte est basee sur la propagation et la recherche La propagation vise a enlever les valeurs impossibles dans le domaines des variables, par l’examen de leur coherence avec la contrainte Ces dernieres annees, plusieurs notions de consistance plus forte que la consistance de domaine ont et proposees L’objectif de ce memoire est d’etudier les niveaux de consistance forte existante pour les contraintes binaires et les contraintes non-binaires Des algorithmes de propagation pour les di erentes consistances fortes associes a contrainte non binaire ont et etudies et mis en uvre dans le solveur AbsCon Plus particulierement, nous avons implement des algorithmes pour MaxRPWC, rPIC et RPWC Les resultats experimentaux montrent que ces consistances sont e caces dans certaines classes de problemes car elles peuvent elaguer plus que la consistance de domaine iii Table des matieres Remerciements Abstract Resum Table des matieres Table des gures Liste des tableaux Introduction Notions de base 2.1 2.2 Preliminaires Resolution d’un CSP : Propagation et Rec 2.2.1 2.2.2 2.3 Consistance de domaine (DC) 2.4 Les consistance plus faibles que DC 2.4.1 2.4.2 Consistances plus fortes que DC 3.1 Consistances plus fortes que DC pour co 3.1.1 3.1.2 3.1.3 3.1.4 Consistances plus fortes que DC pour co 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2 iv Table des matiere 3.2.9 3.2.10 Algorithmes de ltrage pour contraintes non binaires 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Bibliographie Algorithme generique Max-RPWC-1 rPIC-1 RPWC-1 Max-RPWC-2 Max-RPWC-3 Resum Achitecture d’AbsCon 5.1 5.2 5.3 5.4 5.5 5.6 5.7 Les paquets dans AbsCon Representation d’un CSP Resolution d’un CSP La propagation dans AbsCon DC 33 SAC PWC+GAC Implementation et experimentation 6.1 6.2 Implementation Experimentation Conclusion Table des gures 2.1 La resolution d’un CSP : propagation + recherche 3.1 Un exemple de CSP sur lequel RPC enleve plus de valeurs que n’est pas RPC tandis que ce CSP est DC 3.2 Un exemple de CSP sur lequel PIC enleve plus de valeurs que (xi; 1) n’est pas PIC tandis que ce CSP est RPC 3.3 Un exemple de CSP sur lequel Max-RPC enleve plus de valeur (xi; 1) n’est pas Max-RPC tandis que ce CSP est PIC 3.4 Un exemple de CSP sur lequel NIC enleve plus de valeurs que M (xi; 1) n’est pas NIC tandis que ce CSP est Max-RPC 3.5 Un exemple de CSP sur lequel SAC enleve plus de valeur que M (xi; 2) n’est pas SAC tandis que ce CSP est Max-RPC 3.6 Resum de la comparaison entre les consistances 3.7 MaxRPWC vs rPIC 3.8 PWC+GAC vs Max-RPWC 3.9 Resum de la comparaison entre les consistances basees sur l pour les contraintes non binaires 4.1 Applique Max-RPWC-1 et Max-RPWC-2 sur un CSP non-binai 5.1 AbsCon : Representation d’un CSP [1] 5.2 AbsCon : Resolution d’un CSP [1] vi Liste des tableaux 4.1 Resum des algorithmes avec leur complexit de temps et d’esp 6.1 Resultat experimental sur les instances du probleme modi ed r 6.2 Resultat experimental sur les instances du probleme random-fc vii Chapitre Introduction La programmation par contraintes est un paradigme puissant pour resoudre des problemes combinatoires qui s’appuient sur un large eventail de techniques de l’intelligence arti - cielle et de la recherche operationnelle La programmation par contraintes est actuelle-ment appliquee avec succes a de nombreux domaines, tels que la plani cation, le routage de vehicule, la guration, les reseaux, et la bio-informatique [2] L’idee de base en programmation par contraintes est que l’utilisateur indique les contraintes, le probleme et un solveur de contrainte qui est utilise pour les resoudre La contrainte est une relations entre les variables, un probleme de satisfaction de contraintes (un CSP) speci e quelles relations doivent tenir entre les variable de decision donnees Par exemple, dans la plani cation des activites d’une entreprise, les variables de decision peuvent ^etre les heures de debut et les contraintes peuvent ^etre sur la disponibilite des ressources et sur leur utilisation pour un nombre limite d’activites a un moment Un solveur de contrainte prend un probleme, ce probleme est represent en terme de variables de decision 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 systematiquement, comme avec retour en arriere (backtracking) L’espace de recherche est un arbre car les valeurs di erentes peuvent ^etre choisies pour les di erentes variables La taille de l’arbre de recherche est exponen-tielle Il est donc necessaire de reduire la taille de l’arbre de recherche et de detecter les inconsistances (ou l’echec) des solutions partielles des que possible Cette methode est appelee propagation Le framework de programmation par contraintes combine la propagation et la recherche L’objectif de la propagation est de reduire la taille de l’espace de recherche sans enlever la solution du probleme La propagation detecte egalement les echecs, et termine les Chapitre Introduction branches de l’arbre de recherche, economise l’exploration inutile de l’espace de recherche Di erents niveaux d’elagage peuvent ^etre atteints Ceux-ci sont generalement de nies par une propriet de consistance satisfaite par le CSP apres la propagation La consistance de domaine est la consistance standard atteinte par un algorithme de pro-pagation Les contraintes sont considerees 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 propriet sont enlevees Quand un algorithme de propagation pour la consistance de domaine est applique, le CSP resultant est plus facile a resoudre Cependant, atteindre la consistance de domaine a un co^ut Les consistances plus faibles ont et de nies tels que forward checking ou bound consistency Elles enlevent moins de valeur mais l’etape de propagation est plus rapide Les consis-tances plus fortes ont egalement et de nies Bien qu’elles soit plus co^uteuses a atteindre, leur puissance d’elagage est particulierement adaptee pour des problemes combinatoires complexes tels que ceux gurant dans la vie reelle Dans ce memoire, pour la partie theorique, nous etudions les di erents niveaux de consis-tance plus forte qui reduisent le domaine des variables pour les contraintes binaire et les contraintes non-binaires Pour les contraintes binaires, nous abordons les di 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 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 di erentes consistances associees avec les contraintes non-binaires ont et etudies et implement dans le solveur AbsCon Plus particulierement, nous avons implement les algorithmes pour MaxRPWC, rPIC, et RPWC Les resultats experimentaux montrent que ces consistances sont e - caces dans certaines classes de problemes car elles peuvent elaguer plus que la consistance de domaine Le reste de la these est structure comme suit Le chapitre presente le contexte et les de nitions necessaires Dans le chapitre 3, nous etudions les di erentes consistances pour les contraintes binaires et non-binaires Dans le chapitre 4, les algorithmes pour atteindre les consistances plus fortes pour les contraintes nonbinaires seront presentes Dans le chapitre 5, nous presentons la structure du solveur AbsCon et l’implementation de ces algorithmes Le chapitre donne des resultats experimentaux En n, nous donnons la conclusion et le travail futur Chapitre Algorithmes de ltrage pour contraintes non binaires est retourn function Revise(xj; ci; M axRP W C) foreach value a D(xj) PW foreach valid (2 rel(ci)) l lastGACxj ;a;ci s.t [xj] = a PW foreach cm 6= ci s.t jvars(ci) \ vars(cm)j > if el if [vars(ci) \ vars(cm)] = [vars(ci) \ vars(cm)] 10 11 12 13 14 if PW = FALSE, remove a from D(xj); return number of deleted values; Code 4.8: function Revise of Max-RPWC-3 2 p Cet algorithme a une complexit temporelle de O(e k d ) et une complexit d’espace en O(e kd) ou p est le nombre maximum de variables impliquees dans deux contraintes [10] Max-RPWC3 a une m^eme complexit temporelle avec Max-RPWC1 mais dans en pratique, il sera plus e cace parce que dans le cas que le PW-support de est enleve, il commence par le tuple suivant de 4.7 Resum Algorithme GAC3.1/2001 RPWC-1 rPIC-1 MaxRPWC-1 MaxRPWC-2 MaxRPWC-3 Table 4.1: Resum des algorithmes avec leur complexit de temps et d’espace Chapitre Algorithmes de ltrage pour contraintes non binaires Dans ce chapitre, nous avons aborde les algorithmes pour les consistances RPWC, rPIC, Max-RPWC Trois algorithmes sont proposes pour Max-RPWC : Max-RPWC-1, Max-RPWC-2, Max-RPWC-3 Entre les algorithmes pour Max-RPWC, l’algorithme Max-RPWC-2 a une bonne complexit temporelle mais il a besoin de memoire L’algorithme Max-RPWC-3 a un compromis entre les deux La table ci-dessous donne la resum des algorithmes etudies avec leur complexit temporelle et d’espace Chapitre Achitecture d’AbsCon Dans ce chapitre, nous allons presenter l’architecture du solveur AbsCon Ce solveur permet de resoudre les CSPs binaires et non binaires Il est implement en Java, il est donc independant du plate-forme Ce solveur est integr des heuristiques de recherche et des techniques de propagation L’architecture d’AbsCon est d’abord abordee, ensuite, la resolution d’un CSP dans AbsCon est presentee Puis, nous presentons comment la propagation se deroule 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 probleme, le solveur { problem.* : contenir les classe pour presenter un probleme, tous les problemes doivent etendre la classe "Problem" { variable : pour de nir les variables du probleme { variable.domain : pour de nir le domaine de variables { contraint.* : pour representer 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 Representation d’un CSP Pour representer un CSP sous AbsCon Les classes utilisees sont Problem, Variable, Domain and Constraint Un UML diagramme est donne par la gure 5.1 30 Chapitre Achitecture d’AbsCon Figure 5.1: AbsCon : Representation d’un CSP [1] Dans AbsCon un probleme est caracteris par deux tableaux speci ant un ensemble de variables et un ensemble de contraintes La classe Problem est une classe abstraire dont il est possible de deriver un classe representant un probleme speci que L’utilisateur doit outrepasser deux methode (specifyVariables(), specifyConstraints()) pour speci er les variables et les contraintes Une variable est caracterisee par un domaine et par un tableaux speci ant l’ensemble des contraintes portant sur cette variable Notez que la classe Variable a une reference sur un objet ValueChooser qui implemente une heuris-tique de choix de valeur Un domaine est associe avec une variable et est caracteris par un tableau speci ant l’ensemble de valeurs autorisees Une contrainte est caracteris par un tableau de variable liant avec elle et par un ensemble de methodes qui peut ^etre appel pendant la propagation 5.3 Resolution d’un CSP Figure 5.2: AbsCon : Resolution d’un CSP [1] Nous decrivons dans cette section les classes utilisees pour resoudre un CSP Ce sont : Solver, VariableChooser, ValueChooser et Propagator Chapitre Achitecture d’AbsCon La classe Solver se situe dans le paquet search.* Elle implemente l’algorithme DFS (Depth First Search) avec Backtracking Quand un objet de Solver est cree, un speci que CSP est associe avec lui Cet objet gere 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 Apres chaque nouvelle assignation, la propagation est appliquee par un objet de Propagation La resolution est arr^etee quand une (ou n) solution est trouve ou quand l’espace de recherche est totalement couverte La classe VariableChooser se situe dans le paquet heuristics.* Elle represente une heuristique de choix de valeur attachee a une variable donnee La classe VariableChooser represente une heuristique de choix de variable tels que : Lexicographic, SmallestDomain (dom), SmallestDomainOnDegree (dom/deg) La classe Propagation se situe dans le paquet propagation.* Elle represente la methode pour propagation, elle est liee avec la classe Constraint pour tester la consistance En fait, le paquet "propagation.*" gere la propagation tel que : ajouter ou retirer une contrainte dans le queue de revision quand necessaire Chaque contrainte a une methode pour reviser la consistance Cette methode est utilisee pour enlever les valeurs inconsistantes Dans AbsCon, des consistances ont et implementees tels que : DC, forward checking, SAC, PWC + GAC, 5.4 La propagation dans AbsCon Nous decrivons dans cette section la propagation dans AbsCon Les paquets pour la propagation sont dans propagation.* Quand on veut developper une propagation, il faut deriver la classe de base Propagation Dans cette classe, nous avons des methodes de base qui sont utilisees pendant la resolution : { enforce() : cette methode est utilisee au depart, pour obtenir la consistance avant de faire la recherche { enforceAfterAssignmentOf(Variable) : pendant la recherche, apres chaque assignation de variable, cette methode est utilisee pour obtenir la consistance en revisant les contraintes portant sur cette variable { enforceAfterRefutationOf(Variable) : si pendant la recherche une assignation est echouee, cette methode est appelee pour achever la consistance D’abord, la valeur dans cette assignation est enlevee et puis les contraintes portant sur cette variable sont revisees { propagate() : pour obtenir la consistance dans trois methodes precedentes, propagate() est appelee L’idee de propagate() est decrite ci-dessous function Propagation.propagate() Chapitre Achitecture d’AbsCon // 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: methode propagate() La propagation dans AbsCon est orientee variables, signi ant que la queue Q utilisee pour la propagation contient des variables Quand une variable x est choisie dans Q, toutes les contraintes portant sur x sont sollicitees pour ltrer (c i:f ilterF rom(x)) La methode ci:f ilterF rom(x) va reviser la consistance pour tous les variables dans c i Lorsqu’elle detecte une valeur inconsistante, alors cette valeur est enlev et la variable est mise dans la queue Les sections suivantes vont presenter quelques algorithmes de propagation dans AbsCon 5.5 DC La propagation de DC(ou AC) est de nie dans la classe AC sous le paquet propagation.* Elle etend la classe Propagation Pour obtenir la DC les fonctions suivantes sont appelees : { enforce() : cette methode est appelee au depart (avant la recherche) pour forcer la consistance Elle met tous les variables dans la queue, ensuite appelle la methode propagate() pour forcer la DC { enforceAfterAssiggmentOf(Variable) : cette methode est appelee pendant la recherche apres chaque assignation, la variable assignee est mise dans la queue et la methode propagate() est appelee pour forcer la consistance { enforceAfterRefutationOf(Variable) : cette methode est appelee pendant la recherche, quand une assignation est echouee, la valeur est enlevee, la variable est mise dans la queue et la methode propagate() est appelee 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 de nition 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, Chapitre Achitecture d’AbsCon le sous probleme (X; D(X)xi=a; C) peut ^etre rendu AC.L’idee de StrongConsistency est d’ajouter la methode enforceMore() dans les methodes enforce(), enforceAfterAssiggmentOf(Variable), enforceAfterRefutationOf(Variable) La methode enforeMore() va examiner la consistance pour chaque future variable (les variables non assignees) par la methode makeSingletonTestOn(Variable) dans la classe SAC La methode makeSingle-tonTestOn(Variable) teste le SAC en assignant une valeur a une variable En suite, si le sous-probleme ne peut pas ^etre rendu AC, cette valeur est enlevee La propagation s’arr^ete quand il n’y a plus de changement Quand il y a du changement, on redemarre la methode enforceMore() 5.7 PWC+GAC L’algorithme PWC+GAC est implementer par deux classes : PWCGAC et ConstraintHardExtensionPWCGAC La classe PWCGAC gere la propagation et la classe ConstraintHardExtensionPWCGAC est pour presenter les contraintes Ce sont des contraintes speciales qui connaissent leurs contraintes voisines et ces contraintes sont appelees par la classe PWCGAC pendant la propagation pour reviser la consistance PWC+GAC La classe PWCGAC etend la classe AC Elle permet de propager les contraintes necessaires pour obtenir la consistance Quand la propagation PWCGAC est creee, elle va trouver les intersections entre les contrainte de type ConstraintHardExtensionPWCGAC et les ajouter dans ces contraintes Ce processus est necessaire pour examiner l’extensibilit des tuples Pendant la propagation, la methode propagate() est appelee Et puis elle appelle la methode ConstraintHardExtensionPWCGAC.runPropagator(Variable) pour reviser la consistance PWC+GAC L’idee de cette methode est decrite ci-dessous c.runPropagator(Variable) function // 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: methode runPropagator() Nous avons present dans ce chapitre la structure d’AbsCon, la resolution d’un CSP et la propagation dans CSP Cette partie nous permet de comprendre les demarches dans AbsCon et d’implementer les algorithmes de consistances fortes dans le chapitre suivant Chapitre Implementation et experimentation Dans ce chapitre, nous abordons notre implementation des algorithmes pour les consis-tances fortes Plus particulierement, ce sont les algorithmes : RPWC-1, rPIC1, Max-RPWC-1, Max-RPWC-3 En suite, nous montrons le resultat experimental et l’analyse de ce resultat est egalement donnee 6.1 Implementation Comme nous avons present les algorithmes dans le chapitre 4, les contraintes necessaires sont sollicitees pendant la propagation et dans la fonction Revise(x j; ci; DF C), les contraintes cm intersectees avec ci sont egalement sollicitees Compte tenu de l’archi-tecture d’AbsCon, nous faisons deux classes principales pour la propagation : { DFC : C’est la classe generale pour les consistances RPWC, rPIC, Max-RPWC Cette classe gere la propagation comme ajouter et retirer une variable dans la queue de propagation, appeler les contraintes portant sur cette variable pour reviser 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 represente les contraintes de CSP Elle permet de reviser une consistance (RPWC, rPIC, .) A chaque fois, quand la contrainte est sollicitee La methode runPropagator(Variable) de cette classe est appelee Cette methode joue le r^ole de la fonction Revise(x j; ci; DF C) qui revise la consistance (RPWC, rPIC, .) pour chaque valeur d’une variable 35 Chapitre Implementation et experimentation Ci-dessous l’idee de la methode runPropagator(Variable) Quand la contrainte c i est sollicitee, la fonction ci.runPropagator(Variable) est appelee Elle revise la consistance (RPWC, rPIC, ) pour chacune de ses variables La fonction Revise(x j; ci; DF C) est integree dans cette methode Cette fonction est implementee selon les algorithmes presentes (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 implement les algorithmes : RPWC-1, rPIC-1, MaxRPWC-1, Max-RPWC-3 L’algorithme Max-RPWC-2 n’a pas et implement car il a une grande complexit en espace Pour veri er la correction de notre implementation, nous avons test notre resultat avec les algorithmes ayant et implementes dans AbsCon comme GAC (l’algorithme STR2) et l’algorithme pour PWC+GAC 6.2 Experimentation L’experimentation est lance avec le solveur AbsCon sur un PC de 4GB RAM, Core i52520M, Ubuntu Les problemes utilises sont renault, random-fcd dans [11] Ce sont des problemes utilises pour la competition de solveur de CSP [12] Le nombre de variables intersectees dans les contraintes de ces problemes est varie entre et 10 Nous comparons les algorithmes : RPWC1, rPIC1, MaxRPWC1, MaxRPWC3, GAC(algorithme STR2) et PWC+GAC (deja implement dans AbsCon) Les criteres a considerer 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 resultat est plus facile a comparer la puissance d’elagage des algorithmes La table 6.1 montre le resultat sur les instances du probleme modi ed renault Dans chaque case, le temps d’execution (s) et le nombre de node (n) sont montre L’arite de chaque contrainte varie entre 2-10 Quand on considere le nombre de n uds decouverts (n), l’algorithme GAC doit passer le maximum de noeud, ensuite, ce sont les algorithmes Chapitre Implementation et experimentation RPWC1, rPIC1, Max-RPWC1, Max-RPWC3 L’algorithme PWC+GAC passe le mini-mum nombre de noeud par rapport aux autres algorithmes Ce resultat correspond bien a la theorique parce que la puissance d’elagage de chaque consistance permet de reduire le nombre de noeuds passes 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 montree Au niveau du temps d’execution, les algorithmes RPWC1, rPIC1, Max-RPWC1, Max-RPWC3 sont moins competitifs Le temps d’execution de ces algorithmes sont souvent plus lent par rapport a GAC (STR2) sauf les instances renault-3, renault-5 Cela peut ^etre expliquee par la complexit des algorithmes A chaque noeud, le temps pour executer ces algorithmes est plus long que celui de l’algorithme GAC (STR2) Entre deux algorithmes : Max-RPWC1 et MaxRPWC3, l’algorithme Max-RPWC3 est souvent plus rapide que Max-RPWC1 Probleme renault-0 renault-1 renault-2 renault-3 renault-4 renault-5 renault-6 renault-7 renault-8 renault-9 Table 6.1: Resultat experimental sur les instances du probleme modi ed renault Nous avons experiment ensuite sur les instances du probleme random-fcd Ces ins-tances sont generees par le modele RB [13] Les instances di ciles sont choisies pour experimenter La table 6.2 montre le resultat Dans cette experimentation, le temps d’execution pour chaque algorithme est limite a 2000 secondes, si un algorithme depasse ce temps, il est arr^et 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 de temps des algo-rithmes RPWC, rPIC, Max-RPWC1, Max-RPWC3 sont encore assez grande C’est Chapitre Implementation et experimentation pour cette raison, ces algorithmes ne peuvent pas resoudre tous les instances Dans ce resultat, l’algorithme Max-RPWC3 est toujours plus rapide que Max-RPWC1 L’algorithme PWC+GAC est competitif avec GAC(STR2), pour quelques instances, il est plus rapide que GAC (STR2) Probleme 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 Table 6.2: Resultat experimental sur les instances du probleme random-fcd Nous avons montre le resultat experimental, entre les algorithmes etudies dans ce travail, Max-RPWC3 est prometteur pour la pratique Il est souvent plus rapide que Max-RPWC1 et rPIC1 Pour quelques instances, Max-RPWC3 est plus rapide que GAC (STR2) L’algorithme PWC+GAC (qui est deja implement dans AbsCon) est competitif 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 Chapitre Conclusion Dans ce travail, nous avons etudi 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 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 etudies dans ce memoire Parmi lesquels, l’algorithme MaxRPWC3 est le plus interessant pour sa puissance d’elagage et sa complexit de temps Pour la partie pratique, nous avons d’abord etudi le solveur AbsCon Sur ce solveur, quelques algorithmes de propagation sont deja implementes tels que GAC (STR2), SAC, PWC+GAC Ensuite, nous avons implement les algorithmes RPWC1, rPIC1, MaxRPWC1, MaxRPWC3 dans ce solveur Nous avons experiment ces algorithmes pour analyser l’avantage d’utilisation des consistances fortes Le resultat pratique montre que les consistances fortes permet de reduire 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 de ces algorithmes est assez grande, dans le cas qu’ils ne peuvent pas reduire assez l’espace de recherche, ils resolvent plus lent que GAC Parmi les algorithmes implementes dans ce travail, MaxRPWC3 est prometteur L’algorithme PWC+GAC marche plus rapide entre les algorithmes de consistances fortes Pour perspectives, nous proposons d’ameliorer l’algorithme MaxRPWC3 Il faut d’abord ameliorer l’implementation de cette algorithme On peut ameliorer la partie backtracking pour le pointeur lastP Wxj ;a;ci;cm dans cette implementation Puis, il faut trouver une facon e cace pour le teste d’extensibilit des tuples d’une contrainte en memorisant les indexes de ses PW-supports Comme PWC+GAC est e cace dans la plus part 39 Chapitre Conclusion problemes, nous proposons de considerer la generalisation de la consistance PWC+GAC Dans certain cas, reviser la consistance forte pour toutes les contraintes est couteux, nous essayerons de reviser la consistance sur une partie contraintes d’un CSP Cela peut reduire l’espace de recherche et elle est moin couteux L’etape suivante est d’envisager la combinaison de ces consistances Bibliographie [1] Sylvain Merchez, Christophe Lecoutre, and Frederic Boussemart Abscon : A pro-totype 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 pro-gramming Elsevier, 2006 [3] Kostas Stergiou Strong domain ltering consistencies for non-binary constraint satisfaction problems International Journal on Arti cial Intelligence Tools, 17 (05) :781{802, 2008 [4] Christian Bessiere, Jean-Charles Regin, Roland HC Yap, and Yuanlin Zhang An optimal coarse-grained arc consistency algorithm Arti cial Intelligence, 165(2) : 165{185, 2005 [5] Romuald Debruyne and Christian Bessiere Domain ltering consistencies Journal of Arti cial 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 From restricted path consistency to max-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 prepro-cessing In AAAI/IAAI, Vol 1, pages 202{208, 1996 [10] Christian Bessiere, Kostas Stergiou, and Toby Walsh Domain ltering consistencies for non-binary constraints Arti cial Intelligence, 172(6) :800{822, 2008 [11] URL http://www.cril.univ-artois.fr/~lecoutre/benchmarks.html 41 Bibliography [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 satis able instances arXiv preprint cs/0509032, 2005 ... L’idee de consistance de domaine global est que chaque valeur de variable appartient a au moins une solution Imposer la consistance de domaine global est un probleme NP-di cile Au lieu de considerer... connaissances de base de la programmation par contrainte : la formulation d’un CSP, comment resoudre un CSP Quelque notions de consistance de base sont aussi presentees : la consistance de domaine. .. contrainte Dans ce cas, la meilleure propriet de consistance est la consistance de domaine (DC) 2.4 Les consistance plus faibles que DC Pour certains problemes, obtenir la consistance de domaine (DC) est

Ngày đăng: 30/10/2020, 21:18

w