Programmation Logique par Contraintes - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

Programmation Logique par Contraintes

Description:

Les heuristiques (M thodes) d 'ordre d 'affectation : first_fail variable de plus petit domaine, th oriquement plus rapide (petit arbre de recherche) ... – PowerPoint PPT presentation

Number of Views:162
Avg rating:3.0/5.0
Slides: 63
Provided by: pro141
Category:

less

Transcript and Presenter's Notes

Title: Programmation Logique par Contraintes


1
Programmation Logique par Contraintes
  • CHIP
  • P.De Loor

2
Plan
  • Limites de la programmation logique

3
Limites de la programmation logique
  • Petit programme prolog
  • fact(0,1).
  • fact(X,Y)-
  • X2 is X-1,
  • fact(X2,Z),
  • Y is ZX.
  • ?- fact(3,X).
  • X 6
  • ?- fact(Y,6).
  • WARNING Arguments are not sufficiently
    instanciated
  • Exception ( 9) _L168 is _G123-1 ?

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
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 ZX.
  • ?- fact(3,X).
  • Call (11)fact(3-1-1-1, _L195) ? creep
  • Call (12) 3-1-1-10 ? creep
  • Fail (12) 3-1-1-10 ? creep
  • !!!

6
Limites de la programmation logique
  • Petit programme CHIP
  • fact(0,1).
  • fact(X,Y)-
  • X gt 0,
  • X2 X-1,
  • fact(X2,Z),
  • Y ZX.
  • ?-fact(5,X).
  • X120 ?
  • ?-fact(120,Y).
  • Y5 ?

7
Limites de la programmation logique
  • Optimiser ?
  • maximiser(, Min, Max, Val )-
  • XMax,
  • Y is Val.

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

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

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
CHIPgé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
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
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
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
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.
  • 1000S 100E 10N D
  • 1000M 100O 10R E
  • 10000M 1000O 100N 10E Y

16
Contraintes sur les domaines finis exemple
  • crypt -
  • S,E,N,D,M,O,R,Y0..9,
  • alldifferent(S,E,N,D,M,O,R,Y),
  • S\0, M\0,
  • 1000S 100E 10N D
  • 1000M 100O 10R E
  • 10000M 1000O 100N 10E 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
Définition de domaines finis
  • X est compris entre 1 et 10
  • X1..10
  • Liste de variables
  • X1,X2,X31..10
  • Limite des domaines entre 0 et 100000 (couteux)

18
Types de domaines finis
  • Suite d entiers consécutifs
  • XA..B,
  • (explicitement représentés en mémoire)
  • Ensemble de valeurs
  • XV1, V2, V3,
  • (restriction a priori de domaine grande liste
    couteux)
  • Intervalles
  • XAB,
  • (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
Domaines exemples
  • wflags(64). (force l affichage des domaines)
  • ?- X1..5.
  • X X in 1..5 ?
  • ?- X15.
  • X X in 1..5 ?
  • ?- X5,9,2 ?
  • X X in 5,9,2 ?

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
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
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
Contraintes arithmétiques sur les domaines
  • X, Y domaines
  • c variable entière
  • X lt Y
  • X lt Y
  • X gt Y
  • X gt Y
  • X Y
  • X \ Y
  • X \ Y c

24
Contraintes arithmétiques sur les domaines
  • distance(X,Y,Comp,Dist)
  • distance X-Y
  • Comp (gt,,lt)
  • Dist entier
  • notin(X, From, To)
  • les valeurs de X ne sont pas entre From et To.
  • X1..10, notin(X,5,9) .
  • X X in 1..4,10?
  • X110, notin(X,5,9).
  • No (more) solutions.

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
Contraintes symboliques sur les domaines
  • circuit(L),
  • - les éléments de L doivent être un circuit
    Hamiltonien.
  • 38?- length(L,5), L1..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 ?
  • ...

1
2
4
5
3
27
Contraintes symboliques sur les domaines
  • element(Index, List, Value)
  • X0..10, element(X,3,5,9,C).

X
X in 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
C
C in lt2,5,8gt
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

Exemple
  • ex1(X,Y,Z)-
  • X,Y,Z1100,
  • X gt Y10,
  • Y gt 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 ?

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

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
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
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 -gtpour les variables
    de type cout, ce critère est une bonne mesure du
     travail  qu il rest à faire (convergence).

34
Exemple
  • top(L,N)-
  • length(L,N),
  • L1..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
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
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
Exemple
  • top -
  • X1..10,
  • Y1..10,
  • X2 lt Y,
  • min_max(labeling(X,Y,0,first_fail,indomain),XY
    ).
  • 108?- top.
  • THE SOLUTION IS
  • labeling(1, 4, 0, first_fail, indomain)
  • ITS COST IS 5
  • min_max -gt proven optimality

38
Exemple
  • travel(Cities, Costs) -
  • CitiesX1,X2,X3,X4,X5,X6,X7,
  • Costs C1,C2,C3,C4,C5,C6,C7,
  • Cities1..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
    C2C3C4C5C6C7).
  • 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
Exemple
  • 29?- travel(Citees,Cout).
  • THE SOLUTION IS
  • labeling(377, 205, 201, 427, 412, 69, 190, 0
  • ITS COST IS 1881
  • -----------------------------------------
  • min_max -gt proven optimality
  • Citees 3, 1, 6, 2, 4, 7, 5
  • Cout 377, 205, 201, 427, 412, 69, 190 ?
  • no (more) solutions

201
377
3
1
6
205
69
2
7
427
5
4
190
412
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
1 2 3 4 5 6 7 8
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
Taux d utilisation
Hi
(souvent t)
Si
Ei
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
Contraintes globales sur Domaines
  • Contraintes de précédence
  • precedence/5
  • cumulative lt
  • Contraintes de cycle
  • cycle/2 à cycle/12
  • exemple
  • 49?- length(L,3), L1..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

1
1
2
2
3
3
cycle(2,L)
44
Contraintes globales sur domaines
  • Among/5
  • Nombre d occurrence de valeur dans une suite de
    domaines
  • X1,X2,X3, X4,X51..4,
  • K1..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
Contraintes globales sur les domaines
  • Utilisation de among
  • top-
  • X1,X2,X3, X4,X51..4,
  • K1..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_constrained,indo
    main),
  • writeln(X1,X2,X3,X4,X5).
  • 94?- top.
  • 1, 3, 3, 4, 4

46
Prédicats d information sur les domaines
  • dom(X,L)
  • top(L)-
  • X11..4,
  • X1\2,
  • dom(X1,L).
  • 37?- top(L).
  • L 1, 3, 4 ?
  • 39?- X1..4, indomain(X), dom(X,L).
  • X 1
  • L 1 ?
  • X 2
  • L 2 ?

47
Prédicats d information sur les domaines
  • domain_info(X,Min,Max,Size,Occurrence,Active)
  • 43?- X1..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
Prédicats d information sur les domaines
  • 46?- X1..4, Y2..6, X\3, XgtY,
    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?- X1..4, Y2..6, X\3, XgtY, 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

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
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
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
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
Termes rationnels
  • Entier ou nombre rationnel
  • Variable rationnelle
  • t1t2, t1-t2 (ti sont des termes)
  • -t (t est un terme)
  • ct, tc, t/c (t terme, c nombre entier ou
    rationnel)

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
Contraintes arithmétiques sur les rationnels
  • X, Y termes rationnels
  • XY
  • XgtY
  • XltY
  • XgtY
  • XltY
  • power(X,Pow,Y)(Pow entier)
  • ne permet pas le calcul des racines nième (pas
    des rationnels)
  • sqrt(X,Y)

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
Exemple
  • Page 61 user s guide

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

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
Arrondis et conversion
61
(No Transcript)
62
CHIPLes classes
Write a Comment
User Comments (0)
About PowerShow.com