Quand le programme est un problème

18
22 mars 2006 Journée scientifique en l 'honneur de Jean-Louis LA Quand le programme est un problème Propagation de contrainte et programmation automatique

description

Quand le programme est un problème. Propagation de contrainte et programmation automatique. Propagation de contrainte et programmation automatique. PLAN Quelques mots d’ALICE Son extension : RABBIT. Propagation de contrainte et programmation automatique. ALICE - PowerPoint PPT Presentation

Transcript of Quand le programme est un problème

Page 1: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Quand le programme est un problème

Propagation de contrainte et programmation automatique

Page 2: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

PLAN

Quelques mots d’ALICE

Son extension : RABBIT

Page 3: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

ALICEUn langage déclaratif pour poser les problèmesUn résolveur général incorporant des méthodes de résolution variées qui s’appliquent de manière non déterminée à l’avanceUn niveau « méta » qui choisit à tout instant la meilleure méthode à appliquer sur le (sous-) problème à résoudre i.e. compte-tenu des choix déjà faits et des implications déjà déduites

Page 4: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

ALICE, un exemple :trouver les solutions entières positives de l’équation : x3 + 119 = 66 x

Tout d’abord, on déduit : x3 < 66 x

i.e. x2 < 66 , soit x 8

Donc x [1, 8]

Page 5: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

x3 + 119 = 66 x

Raisonnons sur les parités.

119 est impair, 66 x est pair x, donc x3 est impair, donc x est impair.

D’où x {1, 3, 5, 7}

Page 6: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

On tient compte de l’égalité des intervalles :66 x [120, 462] donc : x [ 120 /66, 462/66]Soit : x [2, 7] mais compte-tenu des valeurs possibles de x, on obtient finalement x {3, 5, 7}

x3 + 119 = 66 x

Raisonnons sur les intervalles. x [1, 7], d’où l’équation sur les intervalles :

[1, 343] + [119, 119] = [66, 462]

i.e. : [120, 462] = [66, 462]

Page 7: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

x3 + 119 = 66 xRaisonnons encore sur les intervalles. On a : x [3, 7], d’où :

[27, 343] + [119, 119] = [198, 462]i.e. : [146, 462] = [198, 462]On tient compte de l’égalité des intervalles :x3 + 119 [198, 462] donc : x3 [79, 343] x3 79 x 5, donc : x [5, 7]on obtient finalement x {5, 7}

Page 8: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

x3 + 119 = 66 xRaisonnons toujours sur les intervalles. On a : x [5, 7], d’où :

[125, 343] + [119, 119] = [330, 462]i.e. : [244, 462] = [330, 462]On tient compte de l’égalité des intervalles :x3 + 119 [330, 462] donc : x3 [211, 343] x3 211 x 6, donc : x [6, 7]on obtient finalement la solution x {7}

Page 9: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

x3 + 119 = 66 xRésolution par RABBIT. idem : x3 < 66 x, soit x 8Puis RABBIT déduit : x3 15 x modulo 17 (vient de 119 = 717 et 66=317+15)D’où x2 15 modulo 17 car x 17(vient de x (x2 – 15) modulo 17, avec la règle :ab modulo k se réécrit (a modulo k) ou (b modulo k) si k

premier)Donc : x2 = p 17 + 15 et p {1, 2} puis énumération sur p

Page 10: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

Un petit problème posé par Jean-Louis Laurière.

Trois joueurs A, B, C organisent un tournoi d’échecs, chaque joueur dispute 7 parties contre chacun de ses 2 adversaires. A l’issue du tournoi,

A déclare : je suis satisfait, car c’est moi qui ai gagné le plus de parties

B déclare : je suis satisfait, car c’est moi qui ai perdu le moins de parties

C déclare : je suis satisfait, car j’ai gagné le tournoi

Combien C a-t-il fait de parties nulles ?

Page 11: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

Modélisation du problème

GAB, NAB, GBC, NBC, GAC, NAC [0, 7]

GAB + NAB <= 7

GBC + NBC <= 7

GAC + NAC <= 7

2 GAB + GAC + NAB - GBC >= 8

GAB + 2 GAC + GBC + NBC + NAC >= 15

2 GAB - GBC + GAC - NBC + NAB + NAC <= 6

- GAB + GAC + 2 GBC + NBC >= 8

2 GAB + 2 GBC + 4 GAC + NBC + NAB + 2 NAC <= 27

- 2 GAB + 2 GAC + 4 GBC + 2 NBC - NAB + NAC <= 13

Page 12: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

SIREN : un système expert de génération automatique de programmes résolvant des problèmes

Problème combinatoireManipulation formelles de contraintes

Propagation de contraintes

Génération du programme d’énumération

Compilation et exécution du programme

Solutions du problème combinatoire

Page 13: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

SIREN : structure des programmes générés

pour toute valeur de GAB

pour toute valeur de NAB

si (GAB + NAB) 7 alors

pour toute valeur de GBC

pour toute valeur de NBC

si (GAB + NAB) 7 alors

etc.

pour toute valeur de GAC

si contraintes résiduelles satisfaites alors

écriture de la solution

fin si

fin pour

fin si

fin pour

Page 14: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

RABBIT : extension d’ALICE

Il existe des cas où le schéma choix + propagation n’est pas efficace

La résolution après propagation est bien avancée

Il reste peu de contraintes mais difficiles à analyser

Il faut énumérerLe domaine de recherche est encore grand

Il faut énumérer de manière très efficace, donc avec un programme d’énumération compilé

Page 15: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

RABBIT : programmes générésIl faut déterminer l’ordre d’instanciation des variables et de prise en compte des contraintes

Tant qu'il existe des contraintes

Associer un poids à chaque opérateur de chacune des contraintes restantes = <= >= != ==> autres100 30 30 2 20 10 5 1Diviser ce poids par le nombre de variables de la contrainte.

Associer une masse à chaque inconnue :

masse de xi = nombre d'occurrences de xi dans l'ensemble des contraintesaffectées de leur poids et du coefficient multiplicateur de xiquand il existe.

Déterminer la contrainte dont la masse est la plus forte.Empiler cette contrainte et les variables qu'elle concerne dans l'ordre de leurs masses et

ignorer dorénavant cette contrainte.

Fin Tantque.

Page 16: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

RABBIT : programmes généréscompilation des contraintesExemples :

Cas des inégalités Haut(i1) + Haut(i2) + Haut(i3) + 6 < hauteur

est traduit en : Si ( Haut(i1) + Haut(i2) + Haut(i3) + 6 < hauteur)

Cas du "Quel que soit" i [4, K] P(i)

donne : Pour ( i= 4; i<= K; i++) Si !P(i) Alors échec

Cas du "Il existe" i [K, K+4] P(i)

donne : ok= 0;

Pour ( i= K; i<= K+4; i++) Si P(i) Alors ok= 1.

Si !ok Alors échec.

Cas des implications V(i) < n W(V(i)) = V(i+1)

devient : Si V(i) < n alors

Si W(V(i)) != V(i+1) alors échec

Page 17: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

RABBIT : extension d’ALICEPropagation de contraintes

Propagation de contraintes

Propagation de contraintes

choix

Propagation de contraintes

choix

Propagation de contraintes

choixchoix

échec

Génération d’un

programme

échecs

Génération d’un

programme

solutions

Génération d’un

programme

Propagation de

contraintes

choix

Propagation de contraintes

solution

Propagation de

contraintes

solution

échecs

Génération d’un

programme

solution

Page 18: Quand le programme est un problème

22 mars 2006 Journée scientifique en l'honneur de Jean-Louis LAURIERE

Propagation de contrainte et programmation automatique

RABBIT : parallélisation ?Propagation de contraintes

Propagation de contraintes

Propagation de contraintes

choix

Propagation de contraintes

choix

Propagation de contraintes

choixchoix

échec

Génération d’un

programme

échecs

Génération d’un

programme

solutions

Génération d’un

programme

solution échecs

échecs

Génération d’un

programme

solution

Génération d’un

programme

Génération d’un

programme