Programmation Logique par Contraintes

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
LES NOMBRES PREMIERS ET COMPOSÉS
Ma surprise du Zoo.
[number 1-100].
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Vocabulaire 6.2 Français II Bon voyage ! 1.
CALCUL MENTAL Bernard Izard 6° Avon CM I - TABLES x +
Licence pro MPCQ : Cours
Additions soustractions
Distance inter-locuteur
Portée des variables VBA & Excel
Les numéros 70 –
Les numéros
ACTIVITES Les fractions (10).
Les identités remarquables
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Estimation de la survie comparaison des courbes de survie FRT C3.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
Ordonnancement des mouvements de deux robots
1 7 Langues niveaux débutant à avancé. 2 Allemand.
SERIE I : ELECTROSTATIQUE
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Jack Jedwab Association détudes canadiennes Le 27 septembre 2008 Sondage post-Olympique.
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Cours de physique générale I Ph 11
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
Session 7 1 IST/VIH/SIDA.
Le Concours de Conaissance Francais I novembre 2012.
Titre : Implémentation des éléments finis sous Matlab
Programmation logique Démonstrateur automatique
Tableaux de distributions
Tableaux de distributions
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
LES NOMBRES PREMIERS ET COMPOSÉS
Les chiffres & les nombres
1.Un rang de données multicolores 2. Deux permutations des n premiers entiers 3. b permutations des k premiers entiers 4. Choix de n points dans [0,1]
1 INETOP
Calculs et écritures fractionnaires
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Appliquer la métthode Branch and Bound au problème de lassignation des tâches avec la matrice suivante: 1234 a11 88 b c33415 d Calcul de.
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
La statistique descriptive
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Les équations et inéquations du 1er degré
Titre : Implémentation des éléments finis en Matlab
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Aire d’une figure par encadrement
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
ASI 3 Méthodes numériques pour l’ingénieur
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Mise en forme en Mathématiques
MAXIMISER les RESULTATS
Elaboré par M. NUTH Sothan 1. 2 Soit x, y et z des coordonnées cartésiennes à 3 dimension. G un ensemble de points dans le plan (u, v). Déf. : On appelle.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Nom:____________ Prénom: ___________
LES COURSES SUR PISTE.
LES PILES ET FILES.
Commission paritaire de suivi des opérations de reclassement repositionnement dans le cadre du droit d’option Statistiques novembre 2010.
Rappels de statistiques descriptives
Transcription de la présentation:

Programmation Logique par Contraintes CHIP P.De Loor

Plan Limites de la programmation logique

Limites de la programmation logique 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 ?

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 ?

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(3-1-1-1, _L195) ? creep Call: (12) 3-1-1-1==0 ? creep Fail: (12) 3-1-1-1==0 ? creep !!!

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 ?

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

Généralités sur la PLC Origines

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

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.

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)

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

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 …

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

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 + 1000*M + 100*O + 10*R + E ^= 10000*M + 1000*O + 100*N + 10*E + Y

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 + 1000*M + 100*O + 10*R + E #= 10000*M + 1000*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,_).

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 100000 (couteux)

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)

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

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.

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.

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

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

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.

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)

Contraintes symboliques sur les domaines 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] ? ; ... 1 2 4 5 3

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 <2,5,8>

Prédicats de Choix indomain(X) indomain(X,Method) Method : 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 )

Exemple 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] ? ; X = 40 Y = Y in [27..29] Z = Z in [1..3] ?

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 ?

Prédicats de choix List : liste des variables ou terms 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

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.

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).

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] ? ...

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.

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

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

Exemple Xi sera la ième ville visitée 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

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

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

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). Taux d ’utilisation Exemple de tâche i Hi Si Ei (souvent t)

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

Contraintes globales sur Domaines 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 1 1 2 2 3 3 cycle(2,L)

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

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_constrained,indomain), writeln([X1,X2,X3,X4,X5]). 94?- top. [1, 3, 3, 4, 4]

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] ? ;

Prédicats d ’information sur les domaines domain_info(X,Min,Max,Size,Occurrence,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

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). Y = 2 NbA = 0 ?

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

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)

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

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).

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)

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

Contraintes arithmétiques sur les rationnels X, Y : termes rationnels X^=Y X^>=Y X^<=Y X^>Y X^<Y power(X,Pow,Y)(Pow : entier) ne permet pas le calcul des racines nième (pas des rationnels) sqrt(X,Y)

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.

Exemple Page 61 user ’s guide

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

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é

Arrondis et conversion

CHIP Les classes