1 / 18

Quand le programme est un problème

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

holleb
Download Presentation

Quand le programme est un problème

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Quand le programme est un problème Propagation de contrainte et programmation automatique Journée scientifique en l'honneur de Jean-Louis LAURIERE

  2. Propagation de contrainte et programmation automatique • PLAN • Quelques mots d’ALICE • Son extension : RABBIT Journée scientifique en l'honneur de Jean-Louis LAURIERE

  3. Propagation de contrainte et programmation automatique • ALICE • Un langage déclaratif pour poser les problèmes • Un 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’avance • Un 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 Journée scientifique en l'honneur de Jean-Louis LAURIERE

  4. 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] Journée scientifique en l'honneur de Jean-Louis LAURIERE

  5. 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} Journée scientifique en l'honneur de Jean-Louis LAURIERE

  6. Propagation de contrainte et programmation automatique 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] 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} Journée scientifique en l'honneur de Jean-Louis LAURIERE

  7. Propagation de contrainte et programmation automatique x3 + 119 = 66 x Raisonnons 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} Journée scientifique en l'honneur de Jean-Louis LAURIERE

  8. Propagation de contrainte et programmation automatique x3 + 119 = 66 x Raisonnons 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} Journée scientifique en l'honneur de Jean-Louis LAURIERE

  9. Propagation de contrainte et programmation automatique x3 + 119 = 66 x Résolution par RABBIT. idem : x3 < 66 x, soit x 8 Puis RABBIT déduit : x3º 15 x modulo 17 (vient de 119 = 717 et 66=317+15) D’où x2º 15 modulo 17 car x 17 (vient de x (x2 – 15)º 0 modulo 17, avec la règle : ab º 0 modulo k se réécrit (a º 0 modulo k) ou (b º 0 modulo k) si k premier) Donc : x2 = p  17 + 15 et p {1, 2} puis énumération sur p Journée scientifique en l'honneur de Jean-Louis LAURIERE

  10. 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 ? Journée scientifique en l'honneur de Jean-Louis LAURIERE

  11. 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 Journée scientifique en l'honneur de Jean-Louis LAURIERE

  12. Problème combinatoire Compilation et exécution du programme Solutions du problème combinatoire Propagation de contrainte et programmation automatique SIREN : un système expert de génération automatique de programmes résolvant des problèmes Manipulation formelles de contraintes Propagation de contraintes Génération du programme d’énumération Journée scientifique en l'honneur de Jean-Louis LAURIERE

  13. 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 Propagation de contrainte et programmation automatique SIREN : structure des programmes générés Journée scientifique en l'honneur de Jean-Louis LAURIERE

  14. 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érer • Le domaine de recherche est encore grand • Il faut énumérer de manière très efficace, donc avec un programme d’énumération compilé Journée scientifique en l'honneur de Jean-Louis LAURIERE

  15. Propagation de contrainte et programmation automatique RABBIT : programmes générés Il faut déterminer l’ordre d’instanciation des variables et de prise en compte des contraintes Tant qu'il existe des contraintesAssocier un poids à chaque opérateur de chacune des contraintes restantes = <= >= != "$ ==> autres 100 30 30 2 20 10 5 1 Diviser 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 contraintes affectées de leur poids et du coefficient multiplicateur de xi quand 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. Journée scientifique en l'honneur de Jean-Louis LAURIERE

  16. Propagation de contrainte et programmation automatique RABBIT : programmes générés compilation des contraintes Exemples : • 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 Journée scientifique en l'honneur de Jean-Louis LAURIERE

  17. Propagation de contrainte et programmation automatique RABBIT : extension d’ALICE Propagation de contraintes choix Propagation de contraintes Propagation de contraintes Propagation de contraintes choix choix choix Génération d’un programme Propagation de contraintes Propagation de contraintes Génération d’un programme Propagation de contraintes Génération d’un programme choix échecs échec Génération d’un programme Propagation de contraintes échecs solutions solution solution solution Journée scientifique en l'honneur de Jean-Louis LAURIERE

  18. Propagation de contrainte et programmation automatique RABBIT : parallélisation ? Propagation de contraintes choix Propagation de contraintes Propagation de contraintes Propagation de contraintes choix choix choix Génération d’un programme Génération d’un programme Génération d’un programme Génération d’un programme Propagation de contraintes Génération d’un programme échecs échec Génération d’un programme échecs solutions solution échecs solution Journée scientifique en l'honneur de Jean-Louis LAURIERE

More Related