• Aucun résultat trouvé

Raisonnement par Contraintes: Approches de Satisfaction de Contraintes Dynamiques et Distribuées

N/A
N/A
Protected

Academic year: 2021

Partager "Raisonnement par Contraintes: Approches de Satisfaction de Contraintes Dynamiques et Distribuées"

Copied!
143
0
0

Texte intégral

(1)

Faculté des Sciences, 4 Avenue Ibn Battouta B.P. 1014 RP, Rabat – Maroc Tel +212 (0) 37 77 18 34/35/38, Fax : +212 (0) 37 77 42 61, http://www.fsr.ac.ma

N° d’ordre : 2874

THÈSE DE DOCTORAT

Présentée par

HAMMOUJAN Saida

Discipline : Sciences de l’ingénieur Spécialité : Informatique

Raisonnement Par Contraintes:

Approches De Satisfaction De Contraintes Dynamiques Et Distribuées

Soutenue le 20 Mai 2016 devant le jury

Président

:

SLAOUI Said ……….. Professeur, FSR, Université Mohammed V, Rabat

Examinateurs

:

BOUYAKHF El Houssine ……….. Professeur, FSR, Université Mohammed V, Rabat BENELALLAM Imade …………. Professeur Habilité, INSEA, Rabat

BELAISSAOUI Mustapha ……… Professeur Habilité, ENCG, Université Hassan I, Settat EZZAHIR Redouane ………. Professeur Habilité, ENSA, Université Ibn Zohr, Agadir BENKHALIFA Mohammed ……. Professeur, FSR, Université Mohammed V, Rabat KABBAJ Adil ……… Professeur, INSEA, Rabat

(2)

Avant propos

Les travaux de recherche présentés dans cette thèse ont été réalisés au sein du Laboratoire Informatique, Mathématiques Appliquées, Intelligence Artificielle et Reconnaissance de Forme (LIMIARF), Faculté des Sciences de Rabat, Univer-sité Mohammed V, sous la direction du professeur BOUYAKHF El Houssine et le co-encadrement du professeur habilité BENELALLAM Imade de l’INSEA de Rabat. Tout d’abord, il est avec une immense gratitude que je reconnais tout le sou-tien, les conseils et l’orientation de mon superviseur, le professeur BOUYAKHF El Houssine. Je tiens à le remercier tout particulièrement de m’avoir laissé une large autonomie tout en fournissant des conseils appropriés.

Je tiens à exprimer ma reconnaissance à Monsieur BENELALLAM Imade, son disponibilité et son soutien m’ont permis d’achever ce travail. Je suis redevable à lui et espère maintenir notre collaboration à l’avenir.

Je remercie chaleureusement le professeur SLAOUI Said de la Faculté des Sciences de Rabat, d’avoir accepté de présider le jury de ma thèse.

Je remercie également le professeur habilité BELAISSAOUI Mustapha de l’ENCG de Settat, rapporteur de cette thèse, d’avoir accepté d’évaluer mon travail.

Je suis reconnaissante au professeur habilité EZZAHIR Redouane de l’ENSA d’Agadir, rapporteur de cette thèse, d’avoir accepté de lire de manière approfondie mon manuscrit.

Je remercie également le professeur BENKHALIFA Mohammed de la Faculté des Sciences de Rabat, examinateur de cette thèse, d’avoir accepté d’examiner ce travail.

Je tiens à remercier le professeur KEBBAJ Adil de l’INSEA de Rabat, examina-teur de cette thèse, pour l’intérêt qu’il a porté à mon travail.

Je tiens également à remercier tous les collègues du laboratoire LIMIARF, sur-tout les membres de l’équipe IA, pour leur amitié et bonne humeur qui ont égayé ma vie au laboratoire.

Enfin merci à tous les membres de ma petite et ma grande famille, pour leur sou-tien durant toutes ces années d’études, je ne saurais être qu’infiniment reconnaissant quant aux sacrifices qu’ils ont consentis.

(3)

Résumé

Le formalisme des problèmes de satisfaction de contraintes (CSP) permet de repré-senter sous une forme simple et agréable un grand nombre de problèmes. Pour résoudre un CSP, il suffit de modéliser le problème, de spécifier les contraintes et leur résolution étant prise en charge automatiquement par une méthode de résolution (solveur). Tout au long de cette thèse, nous avons apporté certaines contributions dans le cadre des CSP dynamiques et CSP distribués. Premièrement, Dans le cadre des problèmes DCSP, nous avons proposé deux méthodes de réparation. Extended Partial order Dynamic Backtra-cking (EPDB) : C’est un algorithme qui exploite la flexibilité de l’algorithme P DB en le combinant avec les heuristiques d’ordonnancement pour sélectionner la variable pertinente lors de la génération ou la résolution du nogood. Dynamic Constraint Ordering (DCO) : Ces heuristiques d’ordonnancement de contraintes guide l’algorithme PDB pour corri-ger la solution d’un problème perturbé d’une manière efficace et rapide. Deuxièmement, nous avons réalisé trois approches de résolution des problèmes CSP distribués. Asynchro-nous Maintenance of Arc-Consistency (AMAC) : Cette méthode vise à réduire l’espace de recherche en propageant d’une manière asynchrone les inconsistances causées par les suppressions potentielles des valeurs. Asynchronous Maintenance of Arc-Consistency with Dynamic Ordering (AMAC_DO) : C’est un algorithme qui consiste à limiter la taille du sous-arbre exploré en utilisant les heuristiques de choix de variables durant le maintien de la consistance d’arc asynchrone. Interleaved Asynchronous Arc Consistency (ILAAC) : Cette contribution a la propriété de transformer un graphe de contraintes en un pseudo-arbre et d’exécuter plusieurs processus de recherche sur les différentes branches du pseudo-arbre tout en maintenant la consistance d’arc. Plusieurs tests expérimentaux ont été faits pour évaluer les performances de ces contributions. Les résultats obtenus montrent que ces mé-thodes de réparation ou de résolution sont efficaces par rapport aux techniques existantes.

Mots clefs : Problème de satisfaction de contraintes dynamique (DCSP) ; Problème de satisfaction de contraintes distribué (DisCSP) ; Maintenance de la consistance d’arc ; Heuristiques d’ordonnancement.

(4)

Abstract

The formalism of constraint satisfaction problems (CSP) can be represented in a simple and enjoyable form a large number of problems. To solve a CSP, It is sufficient to model the problem, specify constraints and their resolution is automatically handled by a resolution method (solver). Throughout this thesis, we have made some contributions in the frame-work of dynamic CSP and distributed CSP. Firstly, In the context of DCSP problems, we proposed two repair methods. Extended Partial order Dynamic Backtracking (EPDB) : This is an algorithm that exploits the flexibility of the P DB algorithm combining it with the ordering heuristics to select the relevant variable when generating or resolving a no-good. Dynamic Constraint Ordering (DCO) : These constraint ordering heuristics guide the PDB algorithm to correct solution of a problem disturbed in a quick and efficient manner. Secondly, we realized three approaches for solving DisCSP problems. Asynchro-nous Maintenance of Arc-Consistency (AMAC) : This method is intended to reduce the search space by propagating asynchronously the inconsistency caused by the potential de-letions of values. Asynchronous Maintenance of Arc-Consistency with Dynamic Ordering (AMAC_DO) : This is an algorithm that consists of limiting the size of the explored sub-tree using heuristics choice of variables during the asynchronous maintenance of arc consistency. Interleaved Asynchronous Arc Consistency (ILAAC) : This contribution has the property of turning a constraint graph into a pseudo-tree and run multiple research process on the different branches of the pseudo-tree while maintaining arc consistency. Several experimental tests were made to evaluate the performance of these contributions. The obtained results show that the repair or resolution methods are efficient compared to existing techniques.

Keywords : Dynamic constraint satisfaction problem (DCSP) ; Distributed constraint satisfaction problem (DisCSP) ; Maintaining arc consistency ; Ordering heuristics.

(5)

Table des matières

Table des figures vii

Liste des tableaux ix

Introduction générale 1

A

Raisonnement par contraintes Centralisé

6

I Problèmes de satisfaction de contraintes 7

1 Introduction . . . 7

2 Notions et Définitions . . . 8

2.1 Exemples . . . 9

2.1.1 Problème des n reines . . . 10

2.1.2 Problème de coloriage de graphes . . . 11

3 Méthodes de résolutions . . . 12

3.1 Backtrack (BT) . . . 12

3.2 Conflict-Directed Backjumping (CBJ) . . . 14

3.3 Backtracking dynamique (DBT) . . . 16

3.4 Forward-Checking (FC) . . . 17

3.5 La Consistance d’arc ("arc consistency", AC) . . . 18

3.5.1 AC3 . . . 19

3.5.2 AC-2001 . . . 20

3.5.3 Maintien Arc Consistency (MAC) . . . 21

4 Méthodes de recherches heuristiques . . . 22

5 Problèmes de satisfaction de contraintes dynamiques . . . 23

5.1 Méthodes existantes : . . . 24

5.1.1 Partial order Dynamic Backtracking (PDB) . . . 25

(6)

v Table des matières

II Extended Partial-ordering Dynamic Backtracking 29

1 Introduction . . . 29

2 Travaux en relation . . . 30

3 Extended Partial-order Dynamic Backtracking . . . 31

3.1 Description de l’algorithme . . . 35

4 Résultats Expérimentaux . . . 37

4.1 Expériences sur les problèmes aléatoires uniforme binaire DCSP 38 4.2 Expériences sur le problème de planification des réunions . . 40

4.3 Discussion . . . 41

5 Conclusion . . . 44

III Heuristiques d’ordonnancement dynamique des contraintes 45 1 Introduction . . . 45

2 Travaux effectués . . . 46

3 Dynamic Constraint Ordering : . . . 47

3.1 Description . . . 49

4 Résultats expérimentaux . . . 54

5 Conclusion . . . 59

B

Raisonnement par Contraintes Distribué

60

IV Problèmes de Satisfaction de Contraintes Distribués 61 1 Introduction . . . 61

2 Problèmes de Satisfaction de Contraintes Distribués . . . 62

2.1 Définition . . . 62

2.2 Exemple de DisCSP . . . 64

2.2.1 Problème de Réseau de capteurs mobiles distribué . . 64

2.2.2 Problème de planification de réunions . . . 65

3 La résolution d’un problème DisCSps . . . 67

3.1 Asynchronous Backtracking ABT . . . 68

3.2 Nogood Based Asynchronous Forward Checking AFC-ng . . . 73

3.3 Asynchronous Forward Checking tree AFCtree . . . 76

4 Conclusion . . . 80

V Maintenance Asynchrone de la consistance d’arc 81 1 Introduction . . . 81

(7)

vi Table des matières 3 Asynchronous Maintenance of AC . . . 83 3.1 Description de l’algorithme . . . 84 4 Preuve de correction . . . 87 5 Résultats expérimentaux . . . 88 6 Conclusion . . . 90

VI Ordonnancement dynamique des variables dans la consistance d’arc 92 1 Introduction . . . 92

2 Algorithme AMAC révisé . . . 93

3 Ordonnancement dynamique des variables dans AMAC . . . 97

3.1 Description de l’algorithme . . . 99

4 Correction de l’algorithme AMAC_DO . . . . 101

5 Résultats Expérimentaux . . . 103

5.1 Discussion . . . 106

6 Conclusion . . . 107

VIIInterleaved Asynchronous Arc Consistency 108 1 Introduction . . . 108

2 Travaux en relation . . . 109

3 Arrangement en Pseudo-arbre . . . 110

4 Interleaved Asynchronous Arc Consistency . . . 112

4.1 Description de l’algorithme . . . 114

5 Correction de l’algorithme ILAAC . . . . 116

6 Résultats expérimentaux . . . 116

6.1 DisCSPs aléatoires binaires et uniformes . . . 117

6.2 Coloriage de graphe distribué . . . 118

6.3 Discussion . . . 120

7 Conclusion . . . 120

Conclusion générale et perspectives 121

Bibliographie

125

(8)

Table des figures

I.1 Les solutions du problème 4 reines . . . 10

I.2 Coloriage de la carte géographique du Maroc . . . 11

I.3 Exécution du Backtracking sur l’exemple des 4 reines . . . 13

I.4 Exemple d’un problème arc consistant mais sans solution . . . 19

II.1 Réseau de Contraintes . . . 32

II.2 Réseau de Contraintes, Di={1,2 ∀i∈[1,4]} . . . 33

II.3 Nombre de contraintes testées effectué par PDB et EPDB des pro-blèmes uniformes binaires aléatoires avec (p1 = 0.25, p2 = 0.6) . . . . 38

II.4 Temps d’exécution effectué par PDB et EPDB des problèmes uni-formes binaires aléatoires avec (p1 = 0.25, p2 = 0.6) . . . 39

II.5 Nombre de contraintes testées effectué par PDB et EPDB des pro-blèmes uniformes binaires aléatoires avec (p1 = 0.75, p2 = 0.25) . . . 40

II.6 Temps d’exécution effectué par PDB et EPDB sur des problèmes uniformes binaires aléatoires avec (p1 = 0.75, p2 = 0.25) . . . 41

II.7 Nombre de contraintes testées effectué par PDB et EPDB sur le pro-blème MSP . . . 42

II.8 Temps d’exécution effectué par PDB et EPDB sur le problème MSP 43 III.1 (a) Contraintes non-ordonnées (b) Contraintes ordonnées . . . 50

III.2 (a) Problème original (b) problème perturbé . . . 51

III.3 Nombre de contraintes testées effectuées par P DB et P DB_DCO . 56 III.4 Temps d’exécution efféctué par P DB et P DB_DCO . . . 57

III.5 Stabilité de solution effectuée par P DB et P DB_DCO . . . . 58

IV.1 Modèle d’un CSP distribué . . . 63

IV.2 Instance du problème de capteurs mobiles distribué . . . 65

IV.3 Instance du problème de planification des réunions distribué . . . 67

(9)

viii Table des figures V.1 Non concurrent constraints checks et coût de communication exécuté

par AMAC, AFCng, ABT-uac et ABT-dac sur les problèmes DisCSPs aléatoires (P1 = 0,5) . . . 89 V.2 Non concurrent constraints checks et coût de communication exécuté

par AMAC, AFCng, ABT-uac et ABT-dac sur les problèmes DisCSPs aléatoires (P1 = 0,8) . . . 89 V.3 Non concurrent constraints checks et coût de communication exécuté

par AMAC, AFCng, ABT-uac et ABT-dac sur les problèmes DisCSPs aléatoires (p1=0.60, p2=0.50, d=10, 10≤ n≤ 50) . . . 90 VI.1 L’ordre des agents avant (a) et après le backtrack (b) en utilisant

l’heuristique NgdT gd) . . . . 99 VI.2 Nombre total des messages envoyés et ncccs effectués par AMAC_DO,

AM AC et AF Cng sur les problèmes uniformes binaires aléatoires

DisCSPs avec (n = 20, d = 10, p1 = 0.35) . . . 104 VI.3 Nombre total des messages envoyés et ncccs effectués par AMAC_DO,

AM AC et AF Cng sur les problèmes uniformes binaires aléatoires DisCSPs avec (n = 20, d = 10, p1 = 0.75) . . . 105 VII.1(a) Réseau de contraintes (b) pseudo-arbre . . . 111 VII.2Exemple de l’exécution de l’algorithme ILAAC . . . . 113 VII.3Nombre total des messages envoyés et ncccs effectués par AMAC,

AF Cng, AF Ctree et ILAAC sur les problèmes uniformes binaires

aléatoires DisCSPs avec (n = 20, d = 10, p1 = 0.35) . . . 117 VII.4Nombre total des messages envoyés et ncccs effectués par AMAC,

AF Cng, AF Ctree et ILAAC sur les problèmes uniformes binaires aléatoires DisCSPs avec (n = 20, d = 10, p1 = 0.75) . . . 118 VII.5Nombre total des messages envoyés et ncccs effectués par AF Ctree

et ILAAC sur le problème de coloriage de graphe avec (n=20, d=7, 0.1<p<0.9) . . . . 119

(10)

Liste des tableaux

II.1 Exécution de P DB . . . 34

II.2 Exécution de EP DB_dom . . . . 34

III.1 Exécution de PDB . . . 52

III.2 Exécution de PDB_DCO . . . 53

(11)

List of Algorithms

1 Algorithme Bachtracking chronologique . . . 13

2 Algorithme Conflict-directed Backjumping . . . 15

3 Algorithme Forward Checking . . . 18

4 Algorithme AC-3 . . . 20

5 Algorithme AC-2001 . . . 21

6 Algorithme Partial order Dynamic Backtracking . . . 27

7 Description de l’ algorithme EP DB . . . . 36

8 Description de l’algorithme PDB_DCO . . . 51

9 Algorithme ABT (1ère partie) . . . 70

10 Algorithme ABT (2ème partie) . . . 71

11 Algorithme AFCng (1ère partie) . . . 75

12 Algorithme AFCng (2ème partie) . . . 77

13 Algorithme AFCtree . . . 78

14 Algorithme AMAC (Part 1) . . . 85

15 Algorithme AMAC (Part 2) . . . 86

16 Algorithme AMA révisé (partie 1) . . . . 94

17 Algorithme AMA révisé (partie 2) . . . . 96

18 Algorithme AMAC_DO (partie 1) . . . . 100

19 Algorithme AMAC_DO (partie 2) . . . . 102

(12)

Introduction générale

La programmation par contraintes représente une des avancées qui se rapproche le plus du mystère de la programmation et de l’intelligence artificielle : l’utilisateur

définit le problème, l’ordinateur le résout. La notion de contrainte est très

naturelle-ment présente dans notre vie normale, tels que la planification, l’ordonnancenaturelle-ment, l’emploi du temps, dont de nombreux exemples ont été recensés et catalogués. La notion de "Problème de Satisfaction de Contraintes" (CSP) [T93] désigne l’ensemble de ces problèmes, définis par des contraintes et consiste à chercher une solution les respectant. Ces contraintes représentent des restrictions sur les combinaisons des valeurs autorisées pour les variables contraintes. La résolution de CSP est géné-ralement combinatoire dans le sens où il faut envisager un très grand nombre de combinaisons avant d’en trouver une qui satisfasse toutes les contraintes. Bien sou-vent, la puissance de calcul des ordinateurs ne suffit pas pour examiner toutes les combinaisons possibles en un temps acceptable, et il est nécessaire d’introduire des "raisonnements" et des "heuristiques" permettant de réduire la combinatoire et de guider la recherche vers les bonnes combinaisons.

De nombreuses méthodes de résolution ont été conçues pour résoudre les pro-blèmes de satisfaction de contraintes. Ces méthodes essaient, d’une manière efficace et rapide, de trouver une solution à un CSP par l’affectation des valeurs à toutes les variables du problème en satisfaisant toutes les contraintes. Ainsi, de nombreuses heuristiques ont été développées pour améliorer l’efficacité de ces algorithmes de recherche. Souvent, certains problèmes combinatoires subissent des perturbations après la trouvaille d’une solution. Cette classe de problèmes dite dynamique est réso-lue par le formalisme Problèmes de Satisfaction de Contraintes Dynamique (DCSP) [DD88]. Un DCSP est une extension d’un CSP statique qui peut être vu comme une séquence de CSP, où chaque séquence diffère de la précédente par l’ajout ou la suppression de variables, de valeurs dans les domaines ou de contraintes.

Il existe aussi des problèmes de nature distribués où les informations du problème ne sont pas possible de les rassemblées dans un seul site, mais il faut les répartir entres les structures participantes (Agents), car chacun d’eux souhaite garder ces

(13)

2 Introduction générale informations aussi privées que possible. En outre, un système distribué fournit la tolérance de panne, ce qui signifie que si certains agents se déconnectent, une solu-tion pourrait être disponible pour la partie connectée. Le Problème de Satisfacsolu-tion de Contraintes Distribuée DisCSP a de telles propriétés [DIK98]. Ce formalisme est composé d’un ensemble d’agents autonomes, où chaque agent contrôle certains éléments d’information sur l’ensemble du problème. Les agents échangent des mes-sages entre eux pour vérifier la cohérence de leurs affectations proposées contre les contraintes qui contiennent des variables qui appartiennent à d’autres agents [Y00, YDIK98].

Motivation

Dans cette thèse, nous nous sommes intéressés au développement de nouvelles méthodes de réparation des problèmes combinatoires à aspect dynamique et des méthodes de résolution des problèmes DisCSPs. Nous croyons que ces algorithmes sont performants par rapport à ce qui existe actuellement sur le marché des solveurs car ils améliorent l’état de l’art actuel en termes de l’effort de calcul.

Résolution des problèmes de satisfaction de contraintes dynamiques : Les stratégies de planification dynamiques offrent la flexibilité nécessaire pour ré-parer l’ancienne solution à l’aide des résultats de raisonnement précédent. Une des approches principales utilisant cette stratégie est l’algorithme Partial Order Dyna-mic Backtracking (PDB) [GM11]. Cependant, plusieurs questions restent ouvertes jusqu’aujourd’hui, particulièrement en termes de degré de flexibilité dans la stratégie backtracking. Dans un premier lieu, nous nous intéressons à exploiter la flexibilité de l’algorithme P DB en le combinant avec les heuristiques d’ordonnancement pour la sélection de variable lors de la génération ou la résolution des nogoods. En second lieu, nous nous préoccupons de réduire l’effort global nécessaire par l’algorithme

P DB pour réparer une solution en choisissant un bon ordre de contraintes.

Résolution des problèmes de satisfaction de contraintes distribués : De nombreuses méthodes de résolution ont été proposées pour résoudre les problèmes de satisfaction de contraintes distribués (DisCSPs). Parmi ces méthodes nous nous inté-ressons à l’algorithme Nogood-Based Asynchronous Forward Checking qui a prouvé sa performance devant plusieurs algorithmes [EWBBB13]. Bien que l’algorithme AFCng tire profit du mécanisme de forward checking, ce mode de filtrage ne suit pas à la trace les incohérences du réseau jusqu’à ce qu’il n’y ait aucune valeur in-consistante. Pour remédier à ce problème, nous allons proposer une approche qui

(14)

3 Introduction générale exploite simultanément le maintien de la consistance d’arc, d’une manière qui per-met aux inconsistances potentielles causées par les suppressions de valeur d’être propagées d’une manière asynchrone. Ensuite nous nous préoccupons de l’efficacité de l’approche proposée soit en utilisant un ordre dynamique des agents pour limiter la taille du sous-arbre exploré et en exploitant le principe de calcul parallèle pour accélérer le processus de résolution.

Contribution

Journaux internationaux

— S. Hammoujan, I. Benelallam and E.H. Bouyakhf. "Dynamic vs Static agent ordering in Distributed Arc Consistency", International Journal of Advanced Intelligence Paradigms, (IJAIP). (Accepté pour publication en décembre 2015).

— S. Hammoujan, Yosra Acodad, I. Benelallam and E.H. Bouyakhf. "Dynamic Constraint Ordering Heuristics for Dynamic CSPs". Applied Mathe-matical Sciences, Vol. 7, 2013, no. 138, 6889 - 6907.

— I. Benelallam, S. Hammoujan, R. Ezzahir and E.H. Bouyakhf. "Asynchro-nous Maintenance of Arc Consistency". In Journal of Applied Mathe-matical Sciences 2010, Vol. 4, 2010, no. 25, 1197 - 1212.

Conférences internationales

— S. Hammoujan, I. Benelallam and E.H. Bouyakhf. "Interleaved Asynchro-nous Arc Consistency in Distributed Constraint Networks". Tools with Artificial Intelligence (ICTAI), 2012 IEEE 24th International Conference on (Volume :1). 7-9 Nov. 2012. 178 - 185, ISSN :1082-3409.

— Y. Acodad, I. Benelallam, S. Hammoujan and E.H. Bouyakhf. "Extended Partial-order Dynamic Backtracking algorithm for dynamically chan-ged environments". Tools with Artificial Intelligence (ICTAI), 2012 IEEE 24th International Conference on (Volume :1). 7-9 Nov. 2012. 178 - 185, ISSN :1082-3409.

— S. Hammoujan, I. Benelallam and E.H. Bouyakhf. "On the effect of DisCSP Dynamic Variable-Ordering in Constraints Propagation". 19th RCRA International Workshop on Experimental Evaluation of Algorithms for sol-ving problems with combinatorial explosion, In association with the 12-th

(15)

4 Introduction générale AIIA Symposium on Artificial Intelligence (AIIA 2012). Rome, Italy, 14-15 June 2012.

Conférences nationales avec comité de sélection

— S. Hammoujan, I. Benelallam and E.H. Bouyakhf. "Dynamic Variable-Ordering for Filtering Process on DisCSP". 7th International Confe-rence on Intelligence Systems, 16-17 May 2012, Mohammadia, Morocco. — S. Hammoujan, I. Benelallam and E.H. Bouyakhf. "AMAC :

Asynchro-nous Maintenance of Arc Consistency". In proceeding of JOSTIC’08, pages 39-41. 3-4 Novembre 2008, Rabat, Maroc.

Organisation de la thèse

Ce rapport de thèse est constitué de deux principales parties débutent par un rappel de l’état de l’art des deux formalismes CSP et DisCSP.

La première partie est composée de trois chapitres. Le premier chapitre s’inté-resse à l’introduction des différentes définitions et concepts élémentaires liés aux problèmes de satisfaction des contraintes centralisées et les différentes méthodes de résolutions attachées à ce genre de problème. Ainsi, nous décrivons les notions de la propagation de contraintes et le concept d’ordonnancement. Ensuite nous définis-sons le concept de CSP dynamique avec un rappel du principe de l’algorithme de réparation P DB. Dans le deuxième chapitre, nous présentons une nouvelle contribu-tion de la réparacontribu-tion des problèmes CSP dynamique, à savoir l’algorithme EP DB, qui exploite la flexibilité de l’algorithme P DB en le combinant avec les heuristiques d’ordonnancement pour la sélection de variable. Le dernier chapitre est consacré à la présentation d’une nouvelle approche basée sur les heuristiques d’ordonnancement dynamique de contraintes pour réparer une solution dans dynamique CSP s, appelé "Dynamic Constraint Ordering" DCO. Ces heuristiques aident P DB à prendre la décision et à choisir la contrainte la plus pertinente à satisfaire en premier.

La seconde partie est composée de quatre chapitres et elle est consacrée au for-malisme des Problèmes de Satisfaction de Contraintes Distribués (DisCSP). Nous introduisons dans le premier chapitre le concept des CSPs distribués par un rap-pel des principales notions et méthodes de résolution complètes. Dans le deuxième chapitre, nous décrivons une nouvelle contribution qui exploite les avantages de la consistance d’arc pour diminuer l’effort de calcul et le nombre de messages envoyés, à

(16)

5 Introduction générale savoir l’algorithme AMAC. Les deux derniers chapitres serons consacrés à la présen-tation des deux nouvelles approches de contraintes distribués, qui sont une extension de l’algorithme AMAC, à savoir les algorithmes AMAC_DO et ILAAC. Finale-ment, nous présentons une conclusion générale qui résumera nos contributions et nous orienterons sur d’autres perceptives de recherches possibles.

(17)

Première partie

Raisonnement par contraintes

Centralisé

(18)

Chapitre

I

Problèmes de satisfaction de contraintes

1

Introduction

La notion de contrainte est si naturellement présente dans notre vie courante, telles que le raisonnement diagnostique [GP87], l’analyse des circuits [DKS80], la planification [S81], en conception et fabrication de machines [FM87, N90], ordon-nancement [DR90], traitement image [M74],... etc. Le concept du problème de satis-faction de contraintes CSP, indique tous ces problèmes, définis par des contraintes. Résoudre un problème de satisfaction de contraintes consiste à chercher des solu-tions à un réseau de contraintes, qui est, un ensemble d’affectation de valeurs aux variables qui satisfait les contraintes du problème. Ces contraintes représentent des restrictions sur les combinaisons de valeurs autorisées pour les variables contraintes. De nombreux algorithmes de recherche performants ont été conçus pour résoudre les problèmes de satisfaction de contraintes. Ces algorithmes essaient de construire une solution à un CSP en instantiant d’une manière incrémentielle les variables du problème.

Toutefois, trouver une solution à de tels problèmes est très souvent NP-complets. Ainsi, de nombreuses études ont montré que les heuristiques de choix de variables et de valeurs affectent considérablement les performances des algorithmes de recherche. Ces heuristiques peuvent être classées en deux types. Les heuristiques d’ordonnance-ment de variables et les heuristiques d’ordonnanced’ordonnance-ment de valeurs. Les heuristiques de choix de variables traitent l’ordre dans lequel l’algorithme assigne les variables, alors que les heuristiques de choix de valeur établissent un ordre sur lequel les valeurs seront affectées à une variable sélectionnée.

Face à des situations réelles, le CSP peut évoluer en raison de changements dans l’environnement ou dans les conditions d’exécution. La notion de dynamique CSP (DCSP) a été introduite pour représenter ce genre de situations [DD88]. Un DCSP est une extension à un CSP statique qui peut être vu comme une séquence de

(19)

8 I.2 Notions et Définitions CSP, où chacun diffère de la précédente. Contrairement aux approches constructives dans lesquelles une affectation partielle des variables est progressivement étendue, les approches de réparation commencent par une affectation incompatible (c.-à-d. ancienne solution) et cherchent dans l’espace des réparations possibles.

Dans ce premier chapitre, nous introduisons les définitions et les notions théo-riques utiles à la compréhension des problèmes CSP, ainsi les exemples de son utili-sation. Ensuite, nous présentons quelques méthodes de résolution et de recherche en expliquant leur mode de fonctionnement ainsi en montrant l’efficacité et la rapidité de chaque technique. Enfin, nous terminerons par une section qui sera dédiée à la définition du concept CSP dynamique et à la description de ces différentes méthodes de réparation.

2

Notions et Définitions

La résolution d’un problème de satisfaction de contraintes pose sur l’instantiation de toutes les variables d’un problème, en respectant les contraintes imposées par ce dernier.

Definition 2.1 (problème de satisfaction de contraintes) [M74]

On définit un problème de satisfaction de contraintes CSP par le triplet (X, D, C) où :

— X = {x1,x2,...,xn} est un ensemble de n variables.

— D = {d1,d2,...,dn}est un ensemble de domaines avec a ∈ di une valeur du

domaine de la variable xi et i = 1, 2, ..., n.

— C = {c1,c2,...,cm} est Un ensemble de m contraintes qui spécifie les

combi-naisons de valeurs (ou tuples) autorisées pour les variables impliquées. Les variables impliquées dans la contrainte ck ∈ C forment son scope (scope(ck)

⊆ X).

Étant donné un CSP (X,D,C), sa résolution consiste à instancier chaque variable

xi une valeur de son domaine di, de telle sorte que toutes les contraintes soient

satisfaites. Une contrainte est dite satisfaite si la relation définie par cette contrainte est vérifiée pour les valeurs auxquelles sont instanciées les variables impliquées dans cette dernière.

Definition 2.2 (Contrainte)

(20)

va-9 I.2 Notions et Définitions

leurs que peuvent prendre simultanément ces variables. Cette relation peut être dé-finie en intention ou en extension

Pour définir une contrainte en intention, on utilise des propriétés mathématiques connues. Par exemple. On écrit la contrainte "x est plus petit que y" par x < y

Pour définir une contrainte en extension, on énumère les tuples de valeurs appar-tenant à la relation. Par exemple, si les domaines des variables x et y contiennent les valeurs 0, 1 et 2 alors la contrainte "x est plus petit que y" s’écrit sous forme :

Cxy = {(0 1),(0 2),(1 2)}

Definition 2.3 (Arité d’une contrainte) L’arité d’une contrainte est le nombre

de variables sur lesquelles elle porte. On dira que la contrainte est. — unaire si son arité est égale à 1

— binaire si son arité est égale à 2 — n-aire si son arité est égale à n

Remarque : Dans notre cas, on se limitera au cas des contraintes binaires. Definition 2.4 (Variable instanciée)

Une variable xi est instanciée lorsqu’une valeur lui est affectée. Son domaine di est

alors réduit à une unique valeur (singleton).

Definition 2.5 (Affectation)

1. Une affectation peut être soit totale, c’est-à-dire qu’elle instancie toutes les variables du problème, soit partielle pour le cas contraire.

2. Une affectation A viole une contrainte ck si toutes les variables de ck sont

instanciées dans A, et si la relation définie par ck n’est pas vérifiée pour les

valeurs des variables de ck définies dans A.

3. On parlera d’affectation consistante si elle ne viole aucune contrainte, et d’affectation inconsistante si elle viole une ou plusieurs contraintes.

Definition 2.6 (Solution)

Une solution est une affectation totale consistante, c’est-à-dire une valuation de toutes les variables du problème qui ne viole aucune contrainte.

2.1

Exemples

De nombreux problèmes peuvent être naturellement modélisés comme un blème de satisfaction de contraintes. Nous présentons ici quelques exemples de pro-blèmes académiques qui peuvent être modélisés et résolus par le paradigme CSP.

(21)

10 I.2 Notions et Définitions

Figure I.1 – Les solutions du problème 4 reines

2.1.1 Problème des n reines

Le problème des n-reines est un puzzle bien connu qui a été largement utilisé pour illustrer les algorithmes de résolution de CSP. Dans ce problème, nous devons placer n reines dans un échiquier n × n, de sorte que chaque reine ne devrait pas menacer une autre. Une reine peut menacer toute autre pièce sur la même ligne, colonne ou diagonale. Pour résoudre ce problème par CSP, il faut choisir une bonne modélisation, c’est-à-dire définir l’ensemble des variables X ainsi les domaines de chaque variables D(X), ensuite identifier les contraintes C entre les variables. Il existe plusieurs façons de modéliser ce problème par CSP, mais dans notre rapport, on va juste étudier une seule modélisation et c’est la plus efficace pour le cas des n reines. Par exemple, pour modéliser le problème de 4 reines sur un échiquier de 4 lignes et 4 colonnes, on considère 4 variables, et chaque variable est associée à une ligne i de telle sorte que cette variable désigne le numéro de la colonne sur laquelle la reine se trouve, c’est-à-dire qu’il y a une seule reine par ligne.

On peut résumer cette modélisation comme suit : — X = {x1,x2,x3,x4}

— D = d1 = d2 = d3 = d4 = {1,2,3,4}

— C = {c1, c2, c3)} avec.

1. c1 ={xi Ó= xj / ∀ (i, j) ∈ D × D, i Ó= j} (Colonnes différents).

2. c2 ={xi+iÓ= xj+j / ∀ (i,j)∈ {1,2,3,4} et i Ó= j} (Diagonales montant

diffé-rents).

3. c3 ={xi-iÓ= xj-j / ∀ (i,j)∈ {1,2,3,4} et i Ó= j} (Diagonales descendant

différents).

Dans la figureI.1, on présente les deux solution possibles pour le problème de 4 reines.

(22)

11 I.2 Notions et Définitions

Figure I.2 – Coloriage de la carte géographique du Maroc

2.1.2 Problème de coloriage de graphes

La coloration de graphe est l’un des problèmes combinatoires les plus étudiés puisque de nombreuses applications réelles, telle que l’allocation des fréquences, peuvent être facilement formulé comme un problème de coloriage de graphe. Le but de ce problème est de colorer tous les nœuds d’un graphe de sorte que deux sommets adjacents devraient obtenir différentes couleurs où chaque nœud a un nombre fini de couleurs possibles. Le problème de coloriage de graphe peut être modélisé comme un CSP en considérant les nœuds du graphe à colorer comme étant les variables et les couleurs possibles pour chaque nœud forment le domaine. La contrainte entre chaque paire de nœuds adjacents interdit à ces variables d’avoir la même couleur.

La figureI.2présente le problème du coloriage d’une carte. L’objectif dans ce cas est d’attribuer une couleur à chaque région de sorte qu’aucune des régions voisines ont la même couleur. Nous présentons la carte du Maroc avec ses 12 régions comme une instance. Ce problème peut être modélisé comme un CSP en représentant chaque région comme une variable. Le domaine de chaque variable est défini par 4 couleurs possibles. Ainsi, nous obtenons le CSP suivant.

— X = { x1, x2,..., x12 }.

— D = d1 = d2 =... = d12 = {Rouge, Vert, Bleu, Jaune}.

(23)

12 I.3 Méthodes de résolutions

3

Méthodes de résolutions

Il existe plusieurs algorithmes de résolution des problèmes CSP, mais ils se dif-fèrent d’une manière à une autre et ils reposent souvent sur l’affectation successive des variables, le filtrage de domaines, la propagation de contraintes après instancia-tion, et le backtrack si les affectations successives nous entraînent dans une situation où il est prouvé qu’on ne trouvera pas de solution en continuant l’instanciation des variables non instanciées restantes.

Ces algorithmes permettant de résoudre des CSPs sont appelés des "solveurs" de contraintes. Certains de ces solveurs ont été intégrés dans des langages de program-mation, définissant ainsi un nouveau modèle de programmation appelé "program-mation par contraintes" tel que Choco. Pour résoudre un CSP, il suffit de modéliser le problème, de spécifier les contraintes et leur résolution étant prise en charge au-tomatiquement par les solveurs.

L’algorithme le plus basique de recherche de solution est le Backtracking (BT) [GB65], pour lequel aucune propagation n’est effectuée et c’est l’un des algorithmes qu’on va décrire avec Conflict-Directed Backjumping (CBJ) [P93], Dynamic Back-tracking (DBT) [G93] et Forward-Checking (FC) [HE80].

3.1

Backtrack (BT)

L’algorithme backtracking (BT) [GB65,BR75] est l’algorithme de recherche sys-tématique de base pour la résolution de CSP. Cet algorithme consiste à ne pas développer une solution partielle qui viole déjà une contrainte, c’est-à-dire qu’on effectue une affectation successive des valeurs aux variables. À chaque fois qu’on affecte une valeur à une nouvelle variable, on vérifie que la nouvelle affectation est valide. Si toutes les variables sont affectées, alors le problème est résolu. Si à n’im-porte quelle étape, aucune valeur ne peut être affectée à une variable, on revient sur l’affectation qui précède pour changer la valeur de la dernière variable par une autre si elle est disponible. Cela est exécuté de suite jusqu’à ce qu’on trouve une solution ou bien toutes les combinaisons échouent.

L’algorithme1 montre la méthode de recherche Backtracking, sous forme d’une procédure récursive. Cette fonction termine lorsqu’une solution est trouvée (A est totale) ou bien toutes les combinaisons sont testées (la variable la plus prioritaire reçoit A vide et elle n’a plus de valeur a affecté dans son domaine). La complexité du Backtracking est linéaire s’il trouve une solution sans faire du retour arrière, mais dans le pire des cas, il nécessite un temps exponentiel. La technique du backtrack

(24)

13 I.3 Méthodes de résolutions

Figure I.3 – Exécution du Backtracking sur l’exemple des 4 reines

induit une exploration exhaustive de l’espace de recherche de taille dn. L’obtention

d’une solution nécessite donc un temps de calcul de l’ordre de edn, où e est le nombre

des contraintes, n celui des variables et d la taille des domaines. Ce temps devient rapidement prohibitif dès que l’on traite des problèmes de taille importante.

ALGORITHM 1: Algorithme Bachtracking chronologique procedure Backtracking(A) 1. if (isFull(A)) then 2. return A 3. else 4. select xi∈ X \vars(A) ; 5. foreach ( vi ∈ D(xi)) do 6. xi ← vi; 7. if (isLocallyConsistent(A ∪ (xi = vj))) then 8. Backtracking(A ∪ (xi = vi))

L’algorithme BT a deux inconvénients majeurs qui affectent sa complexité durant l’exploitation de l’espace de recherche :

— Découverte redondante d’inconsistantes locales.

— Non prise en compte d’informations triviales sur l’inconsistance d’affectation partielle.

Les Problèmes de Satisfaction de Contraintes (CSP) sont résolus, en général, à l’aide d’algorithme de backtracking. Plusieurs techniques ont donc été étudiées afin

(25)

14 I.3 Méthodes de résolutions d’accroître l’efficacité de résolution des CSP. On peut distinguer deux approches visant à améliorer la performance de cet algorithme.

— Approche rétrospective (Look-Back) : Afin d’éviter le problème de refaire certaines affectations menant à un échec dans l’algorithme BT, on utilise les méthodes de rétrospectives pour identifier les causes de l’échec et à l’aide de ces informations, on peut sélectionner un meilleur point du backtrack ou bien déterminer les instanciations partielles qui ne participent à aucune solution. C’est l’apprentissage à partir des situations d’échec (Backtrack intelligent). — Approche prospective (Look-Ahead) : Le principe des méthodes de

prospec-tive s’impose sur la découverte des valeurs qui violent des contraintes et qui ne conduisent à aucune solution afin de les supprimer. Pour cela, on utilise les propriétés de la consistance locale et on retire les valeurs qui ne participent pas au prolongement de l’instanciation partielle courante en une solution. On retranche ainsi les branches qui ne comportent pas de solution dans l’arbre de recherche. C’est la détection à l’avance des futures situations d’échec (pré-filtrage).

3.2

Conflict-Directed Backjumping (CBJ)

Pendant que la procédure Backtracking n’effectue qu’un simple retour arrière lorsqu’une affectation d’une variable échoue en mettant en cause la dernière variable instanciée, les méthodes rétrospectives tentent d’identifier les causes de l’échec. Elles tirent parti de cette information pour sélectionner un meilleur point de retour.

Dans l’algorithme CBJ "Conflict-directed backjumping" [P93], pour chaque va-riable instanciée xi, CBJ maintient un ensemble dit ensemble de conflits. Cet

en-semble contient toutes les variables responsables de l’échec de l’extension de l’affec-tation A. Cette extension restera impossible tant que les valeurs de A mises en cause dans cette contrainte sont présentes dans l’affectation courante. Tant que le retour en arrière n’atteint pas l’une des variables de l’ensemble de conflits, une extension complète est impossible car aucune valeur ne peut être affectée à la variable xi.

L’algorithme fera donc un saut (Backjump) vers la dernière variable affectée dans l’ensemble de conflits (figure 1.3).

Le pseudo-code de CBJ est illustré dans l’algorithme 2. Au lieu d’enregistrer seulement la variable la plus profonde, CBJ enregistre pour chaque variable xi l’ensemble des variables qui étaient en conflit avec une certaine affectation de xi.

Ainsi, CBJ maintient un ensemble EMCS[i] (Earliest Minimal Conflict Set) pour chaque variable xi où il stocke les variables appartenant à la plus proche violation

(26)

15 I.3 Méthodes de résolutions

ALGORITHM 2: Algorithme Conflict-directed Backjumping procedure CBJ(A) 1. if (isFull(A)) then 2. return A ; 3. else 4. choose xi∈ X \vars(A) ; 5. EMCS[i] ← ∅ ; 6. Di ← D0 i ; 7. foreach (vi∈ Di) do 8. xi ← vi; 9. if (isConsistent(A ∪ (xi, vi))) then 10. CS ← CBJ(A ∪ (xi, vi)) ; 11. if (xi∈ CS) then/ 12. return CS 13. else 14. EMCS[i] ← EMCS[i] ∪ CS \xi; 15. else 16. remove vi from Di;

17. let cij be the earliest violated constraint by (xi = vi) ; 18. EMCS[i] ← EMCS[i] ∪ xj;

19. return EMCS[i] ;

de contraintes avec une affectation de xi. Chaque fois qu’une variable xi est choisie

pour être instancié (ligne 4), CBJ initialise EMCS[i] à l’ensemble vide. Ensuite, CBJ initialise le domaine courant de xi à son domaine initial (lignes 5-6). Ensuite, une

valeur vi cohérente à l’état de la recherche actuelle est recherché pour la variable

xi. Si vi est incompatible avec la solution partielle courante, alors vi est retirée de

domaine actuel di (ligne 16), et xj est ajoutée à EMCS[i] tels que cij est la première

contrainte violés par la nouvelle affectation de xi (ligne 17). EMCS[i] peut être

considéré comme le sous-ensemble des variables passées en conflit avec xi. Quand

un dead-end survient sur le domaine de la variable xi, CBJ revient à la dernière

variable, dite xj, dans EMCS[i] (lignes 10, 11 et 18). Les informations contenues

dans EMCS[i] sont remportées en haut à l’EMCS[j] (ligne 14). Par conséquent, CBJ effectue une forme de « backtracking intelligent" à la source du conflit permettant à la procédure de recherche d’éviter de redécouvrir le même échec dû à la même raison.

Quand un dead-end survient, l’algorithme CBJ fait un saut vers la variable cou-pable. Pendant le processus de backjumping, CBJ efface toutes les affectations des variables moins prioritaire à la variable coupable ce qui cause une perte d’effort si-gnificatif fait pour atteindre ces affectations. Pour remédier à cet inconvénient [G93]

(27)

16 I.3 Méthodes de résolutions a proposé Dynamic Backtracking.

3.3

Backtracking dynamique (DBT)

Des algorithmes de backtracking intelligents ont été développés pour éviter le problème de trashing provoqué par le BT. Bien que, ces algorithmes identifient puis sautent directement à la variable responsable de dead-end, toutes les variables entre le coupable de dead-end et la variable où le dead-end se produit seront réaffectés. [G93]) a proposé l’algorithme Dynamic Backtracking (DBT) afin de maintenir les progrès réalisés avant le backjumping. Dans DBT, les affectations des variables non contradictoires sont conservées pendant le processus de backjumping. Ainsi, les af-fectations de toutes les variables après la variable coupable sont conservées et la variable coupable est déplacée pour être le dernier parmi les variables affectées.

Afin de détecter le coupable de dead-end, CBJ associe un ensemble de conflits (EMCS [i]) à chaque variable (xi). EMCS [i] contient l’ensemble des variables

af-fectées dont les affectations sont en conflit avec une valeur du domaine de xi. De

la même manière, DBT utilise les nogoods pour justifier l’élimination d’une valeur [G93]. Basé sur les contraintes du problème, une procédure de recherche peut déduire les ensembles des affectations incohérents appelées nogoods.

Definition 3.1 (Nogood) Un nogood est une conjonction d’affectations

indivi-duelles, qui a été trouvée incompatibles, soit à cause des contraintes initiales ou à cause de la recherche de toutes les combinaisons possibles.

Un nogood ng est une expression de la forme. ¬[(x1 = v1)∧...∧(xi = vi)∧xj Ó= vj].

ng est logiquement équivalent à (x1 = v1) ∧ ... ∧ (xi = vi) → xj Ó= vj. Quand un

nogood est écrit comme une implication, ses parties gauche et à droite (Lhs et Rhs) sont définis à partir de la position de →.

Il y a clairement plusieurs façons pour représenter une contrainte donnée comme un nogood. Un spéciale nogood est le nogood vide, ce qui est par tautologie faux. Le nogood vide résulte qu’aucune solution n’existe pour le problème. La façon typique dans lesquels de nouveaux nogoods sont obtenus est en résolvant les anciens nogoods. A titre d’exemple, supposons que nous avons produit les nogoods suivants :

(x1 = a) ∧ (x2 = b) → x4 Ó= b

(x1 = a) ∧ (x3 = c) → x4 Ó= c

(28)

17 I.3 Méthodes de résolutions Où a, b et c sont les seules valeurs dans le domaine de x4. Il en résulte que nous

pouvons combiner ces nogoods pour conclure qu’il n’y a pas de solution avec x1 = a,

x2 = b et x3 = c (¬[(x1 = a) ∧ (x2 = b) ∧ (x3 = c)]). En déplaçant x3 à la conclusion,

on obtient (x1 = a) ∧ (x2 = b) → x3 Ó= c.

Dans DBT, quand une valeur est jugée incompatible avec les valeurs précédem-ment affectées, un nogood dirigé est stocké comme une justification de son retrait. Par conséquent, le domaine courant di d’une variable xi contient toutes les valeurs

de son domaine initial qui ne sont pas écartées par un nogood stocké. Lorsque toutes les valeurs d’une variable xi sont exclues par certains nogoods, un dead-end survient,

DBT résout ces nogoods produisant un nouveau nogood (newNogood). Soit xj la

variable la plus récente dans la partie gauche de tous ces nogoods et xj = vj, où xj

est la variable coupable dans l’algorithme CBJ. le Lhs(newNogood) est la conjonc-tion des parties gauches de tous les nogoods sauf xj = vj et Rhs(newNogood) est

xj Ó= vj. Contrairement à CBJ, DBT ne supprime que l’affectation actuelle de xj

et maintient les affectations de toutes les variables entre elle et xi puisqu’ils sont

compatibles avec les anciennes affectations. Par conséquent, le travail effectué lors de l’affectation de ces variables est préservé. La variable coupable xj est alors placé

après xi et une nouvelle affectation pour lui est recherché puisque le nogood généré

(newNogood) élimine sa valeur actuelle (vj).

3.4

Forward-Checking (FC)

L’algorithme Forward-Checking (FC) est la procédure la plus simple pour la vérification de chaque nouvelle instanciation contre les variables futures non ins-tanciées [HE80]. Le but de la vérification en avant est de propager les informations des variables affectées aux variables non encore instanciées. L’algorithme FC a le même principe que l’algorithme Backtracking, en ajoutant simplement une étape de filtrage de domaines des variables non instanciées, à chaque fois qu’une valeur est affectée à une variable.

Le pseudo-code de procédure FC est présenté dans l’algorithme 3. FC est une procédure récursive qui tente de prévoir les effets de choisir une affectation sur les variables non encore attribuées. Chaque fois qu’une variable est affectée, FC vérifie les effets de cette instantiation sur les domaines des variables futures (ligne 7). Donc, toutes les valeurs des domaines de variables futures qui sont incompatibles avec la valeur attribuée (vi) de la variable courante (xi) sont enlevés (lignes 13-14). Les

va-riables futures concernées par ce processus de filtrage ne sont que ceux qui partagent une contrainte avec xi (ligne 12). Par ailleurs, chaque domaine d’une variable futur

(29)

18 I.3 Méthodes de résolutions

ALGORITHM 3: Algorithme Forward Checking procedure FC(A)

1. if (isF ull(A)) then 2. return A ; 3. else 4. select xi∈ X \vars(A) ; 5. foreach (vi∈ Di) do 6. xi ← vi; 7. if (Filter(A, (xi= vi))) then 8. FC(I ∪ (xi = vi)) 9. else

10. foreach (xj ∈ vars(A) such that ∃c/ ij ∈ C) do

11. restore Dj

function Filter(I, (xi= vi)))

12. foreach (xj ∈ vars(A) such that ∃ c/ ij ∈ C) do 13. foreach (vj ∈ Dj such that (vi, vj) /∈ cij) do 14. remove vj from Dj;

15. if (Dj = ∅) then

16. return false ; 17. return true ;

est filtré afin de garder uniquement les valeurs cohérentes avec les variables déjà ins-tanciées. Par conséquent, le FC n’a pas besoin de vérifier la cohérence des nouvelles affectations contre celles déjà instanciées comme dans l’algorithme BT. Le Forward checking est alors la meilleure façon de prévenir les affectations qui garantissent l’échec plus tard.

3.5

La Consistance d’arc ("arc consistency", AC)

Le concept de la consistance local est l’un des concepts le plus important dans les CSP pour améliorer la performance de l’algorithme Backtrack. Les consistances locales ont des propriétés qui peuvent être appliquées dans un CSP, en utilisant (en général) les algorithmes polynômiaux, afin de supprimer les valeurs incompatibles soit avant ou pendant la recherche. L’arc consistant (AC) est l’algorithme qui utilise les propriétés de la consistance local le plus dans les moteurs de la programmation [B06].

Definition 3.2 Variable voisine

Deux variables sont voisines l’une de l’autre si et seulement si elles sont liées par une contrainte.

(30)

19 I.3 Méthodes de résolutions

Figure I.4 – Exemple d’un problème arc consistant mais sans solution

Definition 3.3 La consistance d’arc

Une valeur vérifie la consistance d’arc aussi longtemps qu’elle a au moins un support (une valeur compatible) dans le domaine de chaque variable voisine. On dit alors qu’elle est arc-consistante.

Une valeur est arc-inconsistante s’il existe une variable voisine sur laquelle elle n’a pas de support. Cette valeur ne peut faire partie d’aucune solution réalisable, elle peut donc être retirée de son domaine.

Comme beaucoup d’autres consistances locales, chaque suppression de valeur doit être propagée à travers le réseau. Le retrait d’une valeur ne vérifiant pas la consis-tance d’arc peut en effet rendre non viables des valeurs qui vérifiaient jusqu’alors la consistance d’arc.

La vérification de l’arc-consistance pour toute valeur du domaine d’une variable permet d’établir la fermeture par consistance d’arc du réseau.

— X = {x1, x2, x3}

— D = {d1, d2, d3} tel que d1 = d2 = d3= {1, 2}

— C = {x1 Ó= x2, x1 Ó= x3, x2 Ó= x3}

3.5.1 AC3

L’algorithme AC3 [M77] est considéré comme étant l’algorithme de base pour la consistance d’arc et il est connu par sa simplicité et son efficacité relative qui lui garantit une place de choix dans de nombreuses implémentations, même s’il a subi une sévère concurrence de la part des algorithmes récents. Le principe de l’AC3 s’impose sur la recherche de support pour chaque valeur sur chaque contrainte

(31)

20 I.3 Méthodes de résolutions impliquée sur deux variables pour supprimer les valeurs non viables. pour cela, on utilise la liste Q qui contient ces paires de variables pour les étudier à l’aide de la fonction Revise(xi, xj) qui détermine l’existence d’au moins un support pour chaque

valeur de di sur cij. Si une valeur vi est supprimée parce qu’elle n’a pas de support

sur cij, AC3 réétudier la viabilité de toutes valeurs vk de dk par rapport à cki en

plaçant la paire de variables (xk, xi) dans Q avec k Ó= i et k Ó= j.

ALGORITHM 4: Algorithme AC-3 procedure AC-3()

1. foreach (xi, xj ∈ EG) do Q ← Q ∪ (xi, xj); (xj, xi); 2. while (Q Ó= ∅) do

3. (xi, xj) ← Q.pop() ; 4. if (Revise(xi, xj)) then

5. if (Di = ∅) then return false;

6. else 7. Q ← Q∪ (xk, xi) | xk, xi∈ EG, k Ó= i, k Ó= j 8. return true ; function Revise(xi, xj) 9. change ← false ; 10. foreach (vi ∈ Di) do

11. if (∄vj ∈ Dj such that (vi, vj) ∈ cij) then 12. remove vi from Dj;

13. change ← true ; 14. return change ;

La complexité spatiale de cet algorithme est linéaire car l’unique structure de données d’AC3 est la liste Q. Mais malheureusement, l’absence de toutes mémorisa-tions des supports nuit gravement à la complexité temporelle. La complexité de la fonction Revise est en O(d2

) et dans le pire des cas, AC3 fait appel à cette fonction

O(ed), donc la complexité temporelle dans le pire des cas est en O(ed3

). 3.5.2 AC-2001

L’algorithme AC-2001 [BR01] suit le même cadre que AC-3, mais atteint l’opti-malité en stockant le plus petit support pour chaque valeur sur chaque contrainte. Cependant, AC-2001 utilise un pointeur Last[xi,vi,xj] qui contient vj. AC-2001

dif-fère de AC3 uniquement par sa fonction Revise2001(xi, xj) et par sa phase

d’initiali-sation qui a besoin d’initialiser les pointeurs Last[xi,vi,xj]. Dans Revise2001(xi, xj),

si une valeur vj ∈ dj est un support de (xi, vi) sur cij, AC-2001 attribue vj à

Last[xi,vi,xj]. Quand (xi, cij) sera révisée, les supports seront recherchés pour (xi,

(32)

21 I.3 Méthodes de résolutions

ALGORITHM 5: Algorithme AC-2001 procedure AC-2001()

1. foreach (xi, xj ∈ EG) do Q ← Q ∪ (xi, xj); (xj, xi); 2. while (Q Ó= ∅) do

3. (xi, xj) ← Q.pop() ;

4. if (Revise2001(xi, xj)) then

5. if (Di = ∅) then return false;

6. else 7. Q ← Q∪ (xk, xi) | xk, xi∈ EG, k Ó= i, k Ó= j reset ∆(xj) ; 8. return true ; function Revise2001(xi, xj) 9. change ← false ; 10. foreach (vi ∈ Di) do 11. if (Last(xi,vi,xj) ∈ ∆(xj) then

12. if (∄vj ∈ Dj such that vj >d Last(xi,vi,xj) ∧ cij(vi,vj)) then 13. Last(xi,vi,xj) ← vj 14. else 15. remove vi from Di; 16. add vi to ∆(xi) ; 17. change ← true ; 18. return change ;

3.5.3 Maintien Arc Consistency (MAC)

Le filtrage par consistance d’arc correspond à une étape préalable à la recherche de solution. L’espace de recherche est élagué, puis la recherche est lancée. Cette idée est étendue en entrelaçant le filtrage et l’exploration. À chaque étape de la recherche, une nouvelle phase de filtrage est relancée. La propriété de consistance d’arc n’est plus obtenue une seule fois préalablement à la recherche, mais est en quelque sorte maintenue tout au long de cette recherche.

Le principe de l’algorithme MAC [SF94] est comme suit. L’instanciation d’une variable par une valeur de son domaine est considérée comme la réduction de ce do-maine à la valeur choisie. Cette réduction est donc propagée pour obtenir la consis-tance d’arc. Ce processus est répété lors de chaque instanciation. Cette technique permet d’élaguer considérablement l’espace de recherche, et semble (en l’état actuel des connaissances) présenter le meilleur compromis entre surcoût occasionné par le filtrage et réduction de l’espace de recherche.

Les parties de satisfaction de contrainte de l’algorithme MAC diffèrent de celui de l’algorithme BT. Au lieu de vérifier les contraintes entre la variable actuelle et toutes les variables passées, dans MAC, les contraintes sont vérifiées entre la variable actuelle et toutes les variables futures. Quand une variable va être instantiée,

(33)

22 I.4 Méthodes de recherches heuristiques l’algorithme MAC garantit que n’importe quelle valeur restant dans son domaine est compatible avec toute l’instantiation fait jusqu’ici, aucun contrôle de consistance en arrière n’est exigé. Cependant, une étape de restauration doit être exécutée pour regagner l’état précédent quand une instantiation échoue. Une instantiation échoue si le domaine d’une variable future devient vide suite à la propagation de contrainte.

4

Méthodes de recherches heuristiques

Plusieurs études dans CSP s ont montré que l’ordre d’instantiation a un effet potentiellement profond sur l’efficacité d’algorithmes de résolution [BMFL02]. L’ob-jectif d’une heuristique de choix de variable est de limiter la taille du sous-arbre exploré. Diverse heuristiques pour le choix de bon ordre ont été proposées et elles peuvent être divisées en deux catégories :

- L’ordre Statique (SO), dans lequel l’ordre de variables est indiqué avant de commencer la recherche et les agents sont toujours choisis dans cet ordre. Parmi ces heuristiques on cite l’heuristique lexico où les variables sont ordonnées lexicographi-quement, l’heuristique Deg [DM89,DM94] où les variables sont ordonnées selon leur degré, de sorte que la variable avec le degré le plus haut est choisie en premier et l’heuristique W idth où les variables sont ordonnées de façon à minimiser la largeur du graphe de contraintes [F82].

- L’ordre Dynamique (DO), dans lequel le choix de la variable suivante à prendre en compte à n’importe quel point dépend des informations qui sont disponible pen-dant le processus de recherche. L’heuristique dynamique la plus connue est basée sur la taille de domaine (MinDom) [HE80], qui choisit la variable ayant la plus petite taille de domaine. Cette heuristique est basée sur le principe de fail-first qui consiste sur le choix de la variable restreignant le plus possible les domaines des autres va-riables, "To succeed, try first where you are most likely to fail". L’heuristique ddeg, le degré dynamique, réordonne les variables selon le nombre des variables qui sont im-pliquées dans les contraintes avec variables non instanciées. wdeg est une heuristique qui apprend des échecs précédents pour gérer le choix des variables futures. Lors-qu’une contrainte conduit à un dead-end, son poids est incrémenté par un. Chaque variable a un degré pondéré, qui est la somme des poids de toutes les contraintes portant sur cette variable. Cette heuristique peut simplement sélectionner la variable avec le plus grand degré pondéré [BHLS04a].

D’autres méthodes hybrides de sélection ont aussi été suggérées telle que dom+deg [FD95] utilisant la méthode dom pour la sélection prioritaire et deg pour briser les

(34)

23 I.5 Problèmes de satisfaction de contraintes dynamiques égalités. Une autre heuristique est le dom+ddeg [FD95] qui brise les égalités en sé-lectionnant la variable ayant le plus grand degré futur. Alternativement, in [BR96], les autres combinent dom avec deg dans une nouvelle heuristique appelé dom/deg. Le dom/deg ne donne pas la priorité à la taille du domaine ou le degré de variables, mais il sélectionne la variable qui minimise le rapport de la taille du domaine actuel au degré statique.

Finalement, d’autres heuristiques de type DVO peuvent être utilisées. Ce sont des heuristiques sélectionnant les variables selon la dureté des contraintes associées à celles-ci. Il faudra, dans ce cas précis, vérifier à quel point une contrainte restreint le problème. Cependant, comme mentionné par [BCS01], le défaut de ces heuristiques est la nécessité de vérifier la dureté des contraintes, ce qui est très gourmand en tests de contraintes

5

Problèmes de satisfaction de contraintes

dyna-miques

Récemment, Beaucoup d’efforts ont été dépensés pour augmenter l’efficacité des algorithmes de satisfaction de contraintes : le filtrage, l’amélioration de retours en ar-rière, l’utilisation d’heuristiques efficaces. Cet Effort a abouti à la conception d’outils de raisonnement contraintes qui ont été utilisées pour résoudre de nombreux pro-blèmes réels. Cependant, toutes ces techniques supposent que l’ensemble de variables et de contraintes, qui composent le CSP, est complètement connu et fixé. Ceci est une limitation forte face à des situations réelles où le CSP considéré peut évoluer en raison de :

— l’environnement : l’évolution de l’ensemble des tâches à accomplir et / ou de leurs conditions d’exécution dans les applications de planification ;

— l’utilisateur : l’évolution des besoins des utilisateurs dans le cadre d’une conception interactive ;

La notion de dynamique CSP (DCSP) [DD88] a été introduit pour représen-ter ce genre de situations. Un DCSP peut être vu comme une séquence de CSPs, où chaque séquence diffère de la précédente par l’ajout ou la suppression de cer-taines contraintes. Il est en effet facile de voir que tous les changements possibles à un CSP (contraintes ou modifications de domaine, ajouts ou suppressions de va-riables) peuvent être exprimés en termes d’ajout, de suppression ou modification de contraintes.

(35)

24 I.5 Problèmes de satisfaction de contraintes dynamiques

Definition 5.1 Un problème de satisfaction de contraintes dynamique est défini

par une séquence P0,..., Pk de réseaux de contraintes. Chaque réseau Pi+1 est le résultat de l’application d’une modification élémentaire au problème Pi. Cette modi-fication peut être une restriction ou une relaxation.

Dans le présent document se concentre sur les scénarios où, après une DCSP a été résolu, certaines contraintes ont été ajoutés ou modifiés et que l’ancienne solution doit être réparé à l’aide des résultats de raisonnement précédentes.

Un DCSP doit faire face à un ensemble de changements. Ces changements peuvent être :

— Restriction : de nouvelles contraintes sont imposées sur une paire de variables. — Relaxation : contraintes qui étaient présents dans le CSP sont retirés parce qu’ils ne sont plus intéressant ou parce que le CSP actuelle n’a pas de solution. La suppression d’une contrainte préserve les solutions mais remet en cause toutes les déductions et en particulier tout filtrage ayant pu avoir lieu. L’ajout d’une contrainte préserve les déductions et donc les effets du filtrage mais remet en cause les solutions.

Pour résoudre une telle séquence de CSP, il est toujours possible de résoudre chacun à partir de zéro, comme cela a été fait pour le premier. Mais cette méthode naïve, qui n’a aucun souvenir du raisonnement précédent, présente deux inconvé-nients importants :

— L’inefficacité, ce qui peut être inacceptable dans le cadre d’applications en temps réel (planification, ordonnancement, etc.), où le temps accordé pour la replanification est limité ;

— L’instabilité des solutions successives, qui peuvent être désagréable dans le cadre d’une conception interactive ou une activité de planification, si un cer-tain travail a été commencé sur la base de la solution précédente.

5.1

Méthodes existantes :

Les méthodes existantes peuvent être classées en trois groupes :

— Méthodes heuristiques, qui consistent à utiliser toute affectation consistante précédente (complet ou non) comme une heuristique dans le cadre du CSP courant [HP91].

— Méthodes de réparation locales, qui consistent de partir de toute affectation consistante précédente (complète ou non) et de la réparer, en utilisant une séquence de modifications locales (modifications d’une seule affectation de

(36)

25 I.5 Problèmes de satisfaction de contraintes dynamiques variable) [MJPL92, SLM92, G93].

— Méthodes d’enregistrement de contraintes, qui consistent à enregistrer tout type de contrainte qui peut être déduite dans le cadre d’un CSP et sa justifi-cation, afin de la réutiliser dans le cadre de tout nouveau CSP qui comprend cette justification [DK89, HP91,SV93].

Les méthodes des deux premiers groupes visent à améliorer l’efficacité et la sta-bilité, alors que ceux du dernier groupe ne visent à améliorer l’efficacité. Un peu à l’écart des précédents, un quatrième groupe rassemble des méthodes qui visent à minimiser la distance entre les solutions successives [B93].

5.1.1 Partial order Dynamic Backtracking (PDB)

Les stratégies de planification dynamiques offrent la flexibilité nécessaire pour reconstruire un nouvel ordre entre les variables durant le processus de recherche. L’une des principales approches utilisant cette stratégie est l’algorithme Partial order Dynamic Backtracking (PDB) [GM11]. Dans cet algorithme, des nouveaux concepts ont été introduits : safety condition et weakening.

Definition 5.2 (safety conditions) A safety conditions est défini comme une

assertion sous la forme de : x < y, avec x et y sont des variables.

On note par ≤s la fermeture transitive de <, ce qui signifie que S est acyclique

si ≤s est antisymétrique.

x <s y =⇒ x ≤s y & y sx (I.1)

D’une autre manière : x <s y, si il y a une séquence (éventuellement vide), les

safety conditions :

x < z1 < z2 < .... < zn < y (I.2) Definition 5.3 Pour un ensemble de nogoods Γ, on note pour SΓtoutes les safety

conditions x < y, sachant qu’il y a un nogood γ avec x son antécédent, et y sa conclusion.

Definition 5.4 Une paire éΓ, Sê est acceptable si Γ est acceptable, S est acyclique

Références

Documents relatifs

On peut remettre en question cette présence d’un objet intentionnel pour toutes les émotions, mais je propose que ce que nous appellerions émotion et qui n’aurait

De nos jours, une antibioprophylaxie est fortement recommandée avant l’insertion du cathéter. Néanmoins, plusieurs essais prospectifs ont démontré qu’une

Cet article est structur´e de la mani`ere suivante : la section 2 donne les notations, le type de programmes trait´es, et d´ecrit les ´etapes de l’ex´ecution d’un pro- gramme

Pour cela, nous avons mené des expérimentations réalisées par deux méthodes de résolution différentes : une méthode de résolution statique et une méthode de

Nous montrons cependant dans ce papier que deux ré- seaux P 1 et P 2 , obtenus à partir de deux séquences dif- férentes de décisions effectuées pendant la résolution d’un réseau

Dans ce papier, nous avons mené une étude ex- périmentale sur plusieurs algorithmes n-aires d’arc- consistance de la famille AC et de résolution de type FC, en utilisant notre

Afin d’évaluer la valeur de cette borne inférieure, nous la comparons à la meilleure que nous avons trouvée, soit en récupérant la relaxation linéaire à l’issue de la

ration des oligodendrocytes et l’inté- grité de la myéline, inhibe l’apprentis- sage moteur [15, 16]. Plus récemment, trois groupes de recherche ont montré que les