La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Programmation Logique par Contraintes CHIP P.De Loor.

Présentations similaires


Présentation au sujet: "1 Programmation Logique par Contraintes CHIP P.De Loor."— Transcription de la présentation:

1 1 Programmation Logique par Contraintes CHIP P.De Loor

2 2 Plan Limites de la programmation logique

3 3 Petit programme prolog fact(0,1). fact(X,Y):- X2 is X-1, fact(X2,Z), Y is Z*X. ?- fact(3,X). X = 6 ?- fact(Y,6). [WARNING: Arguments are not sufficiently instanciated] Exception: ( 9) _L168 is _G123-1 ?

4 4 Limites de la programmation logique « is » n est pas qu une unification copie(X,Y):- X is Y. ?- copie(X,56). [WARNING: Arguments are not sufficiently instanciated] Exception: ( 9) _L169 is _G127 ?

5 5 Limites de la programmation logique Prolog ne « raisonne » pas sur les opérations fact(0,1). fact(X,Y):- X2 = X-1, fact(X2,Z), Y = Z*X. ?- fact(3,X). : Call: (11)fact( , _L195) ? creep Call: (12) ==0 ? creep Fail: (12) ==0 ? creep !!!

6 6 Limites de la programmation logique Petit programme CHIP fact(0,1). fact(X,Y):- X ^> 0, X2 ^= X-1, fact(X2,Z), Y ^=Z*X. ?-fact(5,X). X=120 ? ?-fact(120,Y). Y=5 ?

7 7 Limites de la programmation logique Optimiser ? maximiser(, Min, Max, Val ):- X==Max, Y is Val.

8 8 Généralités sur la PLC Origines

9 9 Généralités sur la PLC Domaines d applications

10 10 Généralités sur la PLC Ré-utilisation de la programmation logique, syntaxe prolog. CLP(X) concepts : J.L Lassez et J. Jaffar 87. Preuves : - Les solutions trouvées sont correctes. - Toutes les solutions sont trouvées.

11 11 CHIP généralités Version industrielle de la PLC Prolog + contraintes Société COSYTEC Contraintes sur Domaines Contraintes sur Rationnels Contraintes Booléennes Classes Interface Oracle, C, Xwindows Concurrents : ILOG-SOLVER, PROLOG IV + générique, + I.A. (déclaratif)

12 12 Domaines finis : Applications Types Emplois du temps Planification (capacités finies) Placement d objets ou de formes Optimisation de stratégies (jeux) Coloriage de cartes Optimisation de parcours Problème d assignation

13 13 Contraintes sur les domaines finis Un domaine –est une variable X –peut avoir plusieurs valeurs entières. –le nombre des valeurs est fini. –possède des bornes min et max Les contraintes peuvent être –arithmétiques, –symboliques, –globales …

14 14 Contraintes sur les domaines finis : exemple Puzzle Cryptarithmétique S E N D +M O R E M O N E Y Chaque caractère est un chiffre (0..9) [S,E,N,D,M,O,R,Y] :: 0..9

15 15 Contraintes sur les domaines finis : exemple Les contraintes : Tous les chiffres sont différents alldifferent([S,E,N,D,M,O,R,Y]) Les nombres ne commencent pas par 0. S^\=0, M^\=0 L addition doit être satisfaite. 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E ^= 10000*M *O + 100*N + 10*E + Y

16 16 Contraintes sur les domaines finis : exemple crypt :- [S,E,N,D,M,O,R,Y]::0..9, alldifferent([S,E,N,D,M,O,R,Y]), S#\=0, M#\=0, 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E #= 10000*M *O + 100*N +10*E + Y, labeling([S,E,N,D,M,O,R,Y],0,first_fail, indomain), % vu après writeln([S,E,N,D,M,O,R,Y]). allSolutions :-findall(_,crypt,_).

17 17 Définition de domaines finis X est compris entre 1 et 10 X::1..10 Liste de variables [X1,X2,X3]::1..10 Limite des domaines entre 0 et (couteux)

18 18 Types de domaines finis Suite d entiers consécutifs X::A..B, (explicitement représentés en mémoire) Ensemble de valeurs X::[V1, V2, V3], (restriction a priori de domaine : grande liste = couteux) Intervalles X::A:B, (Seuls le min et le Max sont mis à jour) (très peu couteux pour des grands domaines) (impossibilité d enlever des valeurs intermédiaires)

19 19 Domaines : exemples wflags(64). (force l affichage des domaines) ?- X::1..5. X = X in {1..5} ? ?- X::1:5. X = X in [1..5] ? ?- X::[5,9,2] ? X = X in {5,9,2} ?

20 20 Termes linéaires sur des domaines finis Un entier naturel (c) Un domaine (X) c * X ou X * c (c : entier, X : variable) X + Y Pas de négatifs ni de signes « - » dans un terme.

21 21 Prédicats d information sur les variables integer(X) –réussit si X est un entier dvar(X) –réussit si X est une variable à domaine fini dvarint(X) –réussit si X est un entier ou une variable à domaine fini.

22 22 Unification sur les domaines finis Domaine X et variable « libre » Y –Y devient un domaine équivalent à X. Domaine X et entier c –si c appartient au domaine, X devient l entier c –sinon échec de l unification (fail) Domaine X et Domaine Y –calcul de leur intersection –si intersection vide, échec –si l intersection est une valeur, X et Y deviennent un entier de cette valeur –si l intersection est un ensemble, les domaines de X et Y sont réduits à cet ensemble

23 23 Contraintes arithmétiques sur les domaines X, Y : domaines c : variable entière X #< Y X #<= Y X #> Y X #>= Y X #= Y X #\= Y X #\ Y + c

24 24 Contraintes arithmétiques sur les domaines distance(X,Y,Comp,Dist) –distance : |X-Y| –Comp : (>,=,<) –Dist : entier notin(X, From, To) –les valeurs de X ne sont pas entre From et To. X::1..10, notin(X,5,9). X = X in {1..4,10}? X::1:10, notin(X,5,9). No (more) solutions.

25 25 Contraintes symboliques sur les Domaines allDifferent(List) atleast(N,List,V) –au moins N de List ont la valeur V atmost(N,List,V) –au plus N de List ont la valeur V maximum(X,List) –le domaine X possède la plus grande valeur de List. minimum(X,List)

26 26 circuit(L), - les éléments de L doivent être un circuit Hamiltonien. 38?- length(L,5), L::1..5, circuit(L), labeling(L,0,first_fail,indomain). L = [2, 3, 4, 5, 1] ? ; L = [2, 3, 5, 1, 4] ? ; L = [2, 4, 1, 5, 3] ? ; L = [2, 4, 5, 3, 1] ? ; L = [2, 5, 1, 3, 4] ? ; L = [2, 5, 4, 1, 3] ? ;... Contraintes symboliques sur les domaines

27 27 Contraintes symboliques sur les domaines element(Index, List, Value) X::0..10, element(X,[3,5,9],C). X X in {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} C C in

28 28 Prédicats de Choix indomain(X) –choix d une valeur de X –par défaut : commence par la plus petite valeur du domaine. indomain(X,Method) Method : - min (idem que indomain/1 ) - max (la plus grande) - middle - 3 (un entier )

29 29 ex1(X,Y,Z):- [X,Y,Z]::1:100, X #> Y+10, Y #> Z + 25, indomain(X). 97?- ex1(X,Y,Z). X = 38 Y = 27 Z = 1 ? ; 1 call(s) delayed X = 39 Y = Y in [27..28] Z = Z in [1..2] ? ; 1 call(s) delayed X = 40 Y = Y in [27..29] Z = Z in [1..3] ? Exemple

30 30 Prédicats de choix Assigner une liste de valeur ? Labeling([]). Labeling([H|T]):- indomain(H), labeling(T). –Dans quel ordre évaluer les variables ? –Quelles valeurs tester ?

31 31 Prédicats de choix Labeling(List,Arg,Method,Pred) List : liste des variables ou terms Arg : 0 pour liste de variable n° du terme si liste de term Method : voir page suivante Pred : prédicat d affectation, généralement indomain mais possibilité de configuration

32 32 Prédicats de choix Les heuristiques (Méthodes) d ordre d affectation : first_fail variable de plus petit domaine, théoriquement plus rapide (petit arbre de recherche) most_constrained comme first_fail mais si conflit, préférer la variable intervenant le plus souvent dans les contraintes, solution performante.

33 33 Prédicats de choix smallest variable ayant la plus petite valeur de son domaine : économiser de la mémoire. Largest l inverse de smallest, utiliser si l on connaît une valeur max possible (?) max_regret variable ayant la plus grande différence entre la plus petite et la 2ème plus petite valeur de son domaine ->pour les variables de type cout, ce critère est une bonne mesure du « travail » qu il rest à faire (convergence).

34 34 Exemple top(L,N):- length(L,N), L::1..N, alldifferent(L), labeling(L,0,first_fail, indomain). 99?- top(L,7). L = [1, 2, 3, 4, 5, 6, 7] ? ; L = [1, 2, 3, 4, 5, 7, 6] ? ; L = [1, 2, 3, 4, 6, 5, 7] ? ; L = [1, 2, 3, 4, 6, 7, 5] ?...

35 35 Prédicats d opimisation Recherche la meilleur solution Recherche rapide (un findall est exclu) min_max(Goal, C) Goal : prédicat à satisfaire C : liste de couts minimise la valeur de C.

36 36 Prédicats d optimisation Accélérer la recherche : min_max(Coal, C, lower, Upper) Une solution inférieure à lower peut être considérée optimale. Une solution supérieure à Upper ne peut l être. min_max(Coal, C, lower, Upper, Percent) fixe un pourcentage Percent minimum entre deux solutions qui se suivent dans la recherche. min_max(Coal, C, lower, Upper, Percent, Timeout) la recherche s arrête après Timeout secondes

37 37 Exemple top :- X::1..10, Y::1..10, X+2 #< Y, min_max(labeling([X,Y],0,first_fai l,indomain),X+Y). 108?- top. THE SOLUTION IS labeling([1, 4], 0, first_fail, indomain) ITS COST IS 5 min_max -> proven optimality

38 38 Exemple travel(Cities, Costs) :- Cities=[X1,X2,X3,X4,X5,X6,X7], Costs = [C1,C2,C3,C4,C5,C6,C7], Cities::1..7, element(X1,[0,205,377,581,461,878,345], C1), element(X2,[205,0,882,427,390,1105,540], C2), element(X3,[677,882,0,619,316,201,470], C3), element(X4,[581,427,619,0,412,592,570], C4), element(X5,[461,390,316,412,0,517,190], C5), element(X6,[878,1105,201,592,517,0,69], C6), element(X7,[345,540,470,570,190,691,0], C7), circuit(Cities), min_max(labeling(Costs,0,max_regret,indomain),C1 +C2+C3+C4+C5+C6+C7). Xi sera la ième ville visitée Ci représente le coût pour aller de la ville i a j. Exemple : pour aller de la ville 2 à la ville 3 ça coute 882

39 39 Exemple 29?- travel(Citees,Cout). THE SOLUTION IS labeling([377, 205, 201, 427, 412, 69, 190], 0 ITS COST IS min_max -> proven optimality Citees = [3, 1, 6, 2, 4, 7, 5] Cout = [377, 205, 201, 427, 412, 69, 190] ? ; no (more) solutions

40 40 Contraintes globales sur domaines diffn(+ListOfRectangle) –Les rectangles ne doivent pas se chevaucher. –Leur position et leur taille sont des domaines diffn([[1,1],[3,2],[5,3]]). –« Rectangles » à n-dimension (hypercubes) –contraintes sur les volumes, les distances, les régions : diffn(+Rectangles, +Min_volume, +Max_volume, +End, +Distances, +Regions) début taille

41 41 Contraintes globales sur Domaines Contraintes cumulatives –entre ensembles de domaines –basée sur un élément : tache –répartitions (temporelle, 2D, 3D) –20 méthodes de résolutions conjointes cumulative(Starts, Duration, Resources, Ends, Surfaces, High, End, Intermediate, Interruption). Exemple de tâche i (souvent t) Taux d utilisation SiEi Hi

42 42 Contraintes globales sur Domaines Exemple d utilisation simplifiée : Si, Di et Ri sont des domaines à définir. cumulative([S1,S2,…Sn], [D1,D2,…,Dn], [R1,R2,…,Rn], unused, unused, Limit, End, unused unused). A tout instant Ri Limit Limit End

43 43 Contraintes de précédence –precedence/5 –cumulative + #<= Contraintes de cycle –cycle/2 à cycle/12 –exemple 49?- length(L,3), L::1..10, cycle(2,L), labeling(L,0,first_fail,indomain). L = [1, 3, 2] ? ; L = [2, 1, 3] ? ; L = [3, 2, 1] ? ; no (more) solutions Contraintes globales sur Domaines cycle(2,L)

44 44 Contraintes globales sur domaines Among/5 Nombre d occurrence de valeur dans une suite de domaines : [X1,X2,X3, X4,X5]::1..4, K::1..5, among([1,2,K],[X1,X2,X3,X4,X5],[0,0,0,0,0],[[1,2],[3],[1,3,4]],all), 1 ou 2 apparaissent 1 fois 3 apparaît 2 fois 1,3,4 apparaissent entre 1 et 5 fois

45 45 Contraintes globales sur les domaines Utilisation de among top:- [X1,X2,X3, X4,X5]::1..4, K::1..5, among([1,2,K],[X1,X2,X3,X4,X5],[0, 0,0,0,0],[[1,2],[3],[1,3,4]],all), labeling([X1,X2,X3,X4,X5],0,most_c onstrained,indomain), writeln([X1,X2,X3,X4,X5]). 94?- top. [1, 3, 3, 4, 4]

46 46 Prédicats d information sur les domaines dom(X,L) top(L):- X1::1..4, X1#\=2, dom(X1,L). 37?- top(L). L = [1, 3, 4] ? 39?- X::1..4, indomain(X), dom(X,L). X = 1 L = [1] ? ; X = 2 L = [2] ? ;

47 47 Prédicats d information sur les domaines domain_info(X,Min,Max,Size,Occ urrence,Active) 43?- X::1..4, X#\=3, domain_info(X,Mn,Mx,S,NbO,NbA). X = X in {1..2,4} Mn = 1 Mx = 4 S = 3 NbO = 0 %nb de contraintes où X est utilisée NbA = 0 ? %nb contraintes utilisant X non résolues

48 48 Prédicats d information sur les domaines 46?- X::1..4, Y::2..6, X#\=3, X#>=Y, domain_info(X,Mn,Mx,S,NbO,NbA). 1 call(s) delayed X = X in {2,4} Y = Y in {2..4} Mn = 2 Mx = 4 S = 2 NbO = 1 NbA = 1 ? 47?- X::1..4, Y::2..6, X#\=3, X#>=Y, indomain(Y), domain_info(X,Mn,Mx,S,NbO,NbA). X = X in {2,4} Y = 2 Mn = 2 Mx = 4 S = 2 NbO = 1 NbA = 0 ?

49 49 Prédicats d information is_in_dom(X,V). Réussi si la valeur V se trouve dans le domaine X pc(Term). Affiche toutes les contraintes actives sur toutes les variables du term Term

50 50 Méthodes de recherche partielles Propagation conditionelle If Cond then Pred1 else Pred2 Cond doit etre satisfait pour toutes les valeurs des domaines concernés. Démons de mise à jour touched(Callback, Var, Info, Type) le prédicat Callback(Var,Info) sera appelé lorsque la condition Type sera satisfaite (souvent utilisé avec la bibliothèque graphique XGIP)

51 51 Contraintes Rationnelles Les variables sont continues (nombre infini de valeurs) Résolution type simplex, Gauss Domaine d application –Problèmes mathématiques –Problèmes financiers (analyse d emprunt) –utilisé de façon complémentaire aux contraintes sur domaines

52 52 Définition de variables rationnelles Nombre rationnel = rapport de deux entiers a/b Variable rationnelle : –toute variable utilisée dans une contrainte rationnelle est une variable rationnelle. –Déclaration explicite : positive(X) allpositive(List).

53 53 Termes rationnels Entier ou nombre rationnel Variable rationnelle t1+t2, t1-t2 (ti sont des termes) -t (t est un terme) c*t, t*c, t/c (t : terme, c : nombre entier ou rationnel)

54 54 Tests de type rational(X) réussit si X est un nombre rationnel rvar(X) réussit si X est une variable rationnelle pvar(X) réussit si X est une variable rationnelle positive rlinear(X) réussit si X est un term rationnel linéaire

55 55 Contraintes arithmétiques sur les rationnels X, Y : termes rationnels X^=Y X^>=Y X^<=Y X^>Y X^

56 56 Optimisation pour termes rationnels rmax(X) utilisation du simplex pour trouver la valeur maximum de X rmin(X) valeur maximum de X rmax2(X,Limit) Limit est unifiée à la valeur maximum de X, X n est pas unifiée.

57 57 Exemple Page 61 user s guide

58 58 Regrouper plusieurs contraintes But : optimiser la résolution linear_block(List) exemple page 62 user guide

59 59 Trouver les solutions entières Plus rapide que les domaines, mais moins de type de contraintes cutting(?Obj, +List, -Ncuts,+Time) Obj : terme rationnel à minimiser List : liste de variables Ncuts : nombre de contraintes supplémentaires générées Time: entier non utilisé

60 60 Arrondis et conversion

61 61

62 62 CHIP Les classes


Télécharger ppt "1 Programmation Logique par Contraintes CHIP P.De Loor."

Présentations similaires


Annonces Google