Programmation par contraintes Cours 3 : Programmation logique avec contraintes PLC



Documents pareils
Cours de Master Recherche

Bases de données Cours 5 : Base de données déductives

Initiation à la Programmation en Logique avec SISCtus Prolog

Intelligence Artificielle Planification

Stratégie de recherche adaptative en programmation par contrainte

Fondements de l informatique Logique, modèles, et calculs

Utilisation des tableaux sémantiques dans les logiques de description

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Intelligence artificielle appliquée à l automatique

Systèmes décisionnels et programmation avancée

1ère partie Nadine Cullot. Bases de données déductives. Bases de données déductives Introduction et Motivation

Grammaires d unification

Résolution d équations non linéaires

Évaluation et implémentation des langages

Introduction à la Programmation par Contraintes (PPC) Ruslan Sadykov LIX, École Polytechnique

Arbres binaires de recherche

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Rappels sur les suites - Algorithme

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Présentation du langage et premières fonctions

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Algorithme. Table des matières

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

ALGORITHMIQUE ET PROGRAMMATION En C

Les structures de données. Rajae El Ouazzani

Algorithmique et Programmation, IMA

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Programmation linéaire

données en connaissance et en actions?

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

chapitre 4 Nombres de Catalan

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Chapitre 2. Eléments pour comprendre un énoncé

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

OCL - Object Constraint Language

Resolution limit in community detection

L apport des contraintes globales pour la modélisation et la résolution d applications industrielles

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

TP 1. Prise en main du langage Python

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Glossaire des nombres

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

STAGE IREM 0- Premiers pas en Python

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Algorithmique et Programmation Fonctionnelle

Logique : ENSIIE 1A - contrôle final

Plus courts chemins, programmation dynamique

Chapitre 5 : Flot maximal dans un graphe

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Model checking temporisé

Maple: premiers calculs et premières applications

Exercices - Polynômes : corrigé. Opérations sur les polynômes

M é ca n ism e Pr o lo g. Ex e m p le

Programmation par contraintes. Laurent Beaudou

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Algorithmes de recherche

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

MIS 102 Initiation à l Informatique

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

UE Programmation Impérative Licence 2ème Année

Intelligence Artificielle et Robotique

Codage d information. Codage d information : -Définition-

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 1 : Qu est-ce que la programmation?

Les algorithmes de base du graphisme

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Langage SQL : créer et interroger une base

La fonction exponentielle

Logique. Plan du chapitre

Qu est-ce qu une probabilité?

Demande d admission au Centre pédagogique Lucien-Guilbault Secteur primaire

Définitions. Numéro à préciser. (Durée : )

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Université de Bangui. Modélisons en UML

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Contrainte de flot pour RCPSP avec temps de transfert

UE C avancé cours 1: introduction et révisions

Machines virtuelles Cours 1 : Introduction

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Filtrage stochastique non linéaire par la théorie de représentation des martingales

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Intégration et probabilités TD1 Espaces mesurés

Algorithmique des Systèmes Répartis Protocoles de Communications

Devenez un véritable développeur web en 3 mois!

Table des matières. I Mise à niveau 11. Préface

Francis BISSON ( ) Kenny CÔTÉ ( ) Pierre-Luc ROGER ( ) IFT702 Planification en intelligence artificielle

TP3 : Manipulation et implantation de systèmes de fichiers 1

Logiciel Libre Cours 3 Fondements: Génie Logiciel

4.2 Unités d enseignement du M1

Cours d Informatique

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Le langage SQL Rappels

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Transcription:

Cours 3 : avec contraintes PLC ESIL Université de la méditerranée Odile.Papini@esil.univ-mrs.fr http://pages-perso.esil.univmed.fr/ papini/

Plan du cours 3 1 Introduction 2 3 4

Bibliographie Livres : K. Marriott and P. Stuckey. Programming with constraints. MIT Press 1998 F. Fages. Programming Logique par contraintes. Ellipes, 1996 K. R. Apt. Principles in Constraint Programming. Cambridge Univ Press, 2003 Supports de cours : Support de cours : Gilles Pesant école polytechnique de Montréal : http ://www.cours.polyti.ca/inf6101/

Applications industrielles de la PPC Conception de matériel informatique vérification de circuits connexion des couches de circuits moins efficace que le code dédié mais plus flexible utilisateurs : Dassault, Siemens

Applications industrielles de la PPC Placement d objets placement de containers remplissage de containers utilisateurs : Michelin

Applications industrielles de la PPC Problèmes de découpage minimisation de pertes lors de la découpe de matériaux (papier, verre, bois, métaux, ) utilisateur : Dassault pour les pièces d avion performances dépendent du contexte papier : facile, programmation linéaire métaux : plus difficile, programmation par contraintes

Applications industrielles de la PPC Allocation d espace portes pour les avions quais pour les trains et les bateaux utilisateur : Aéroport CDG

Applications industrielles de la PPC Allocation de fréquences trouver des fréquences radio pour les : tèléphones portables communications radio armée,

Applications industrielles de la PPC Ordonnancement de la production planifier les tâches sur des machines dans une usine plus important succès de la PPC meilleures performances que la RO plusieurs installations commerciales librairies dédiées à l ordonnancement (ILOG scheduler)

Applications industrielles de la PPC emploi du temps emploi du temps construction d horaires de personnel : santé, commerce, usine, planification des équipages sur les avions, les trains tournée de véhicules

programmation déclarative premier langage de programmation logique : PROLOG (Luminy, 1973) basé sur la logique des prédicats premier paradigme à intégrer les contraintes

Définition un programme logique est un ensemble fini de règles de la forme : A. ou A B 1,,B n. A : tête de la règle B 1,,B n : corps de la règle A, B i pour 1 i n : atomes

vs programmation impérative programmation impérative à l origine ordinateur conçu pour calculer ne traite pas de situations non spécifiées à l avance codage d un algorithme dans un langage de programmation chaque type de question nécessite l écriture d une partie ou d un programme différent programmation logique représentation des connaissances sur un sujet dans un formalisme adéquat représentation à partir de laquelle sont déduites des rèponses aux questions de l utilisateur

vs programmation impérative programmation logique programmation impérative règle ensemble de règles question (but) preuve substitution, unification procédure programme appel de procédure exécution passage de paramètres

Langage celui du calcul des prédicats : un ensemble infini dénombrable de symboles de prédicats ou prédicats : S p un ensemble infini dénombrable de symboles fonctionnels : S F un ensemble infini dénombrables de variables : V un atome est de la forme : P(t 1,, t n ) où t 1,, t n sont des termes et P est un prédicat un terme est : une variable x un symbole fonctionnel f (constantes : symboles fonctionnels d arité 0) f (t 1,, t n ) où t 1,, t n sont des termes

programmation logique : programme logique mécanisme d inférence mécanisme d inférence : déclenché par une requête(but) fournit certaines conséquences du programme l ensemble des conséquences d un programme logique constitue sa signification (sémantique)

Trois sémantiques d un programme logique déclarative (plus petit modèle) dénotationnelle (point fixe, par chaînage avant) opérationnelle (procédurale, par chaînage arrière) (résolution SLD) les trois sémantiques sont équivalentes

sémantique déclarative d un programme logique On pose une question Q à un programme logique P sémantique déclarative : P = Q.? est-ce que Q est une conséquence logique de P? interprétation du symbole en logique des prédicats A B 1,, B n. : A B 1,, B n. programme logique P : ensemble de clauses de Horn sémantique déclarative : recherche des conséquences logiques d un ensemble de clauses de Horn

sémantique déclarative d un programme logique : conséquences logiques d un ensemble de clauses de Horn revoir le cours sur la logique des prédicats si besoin à partir d un ensemble de clauses de Horn construction d une base de Herbrand B H construction d un modèle de Herbrand on montre l existence d un plus petit modèle de Herbrand associé à un programme P : M P intersection de tous les modèles de Herbrand associés à P

sémantique déclarative d un programme logique P = Q? construction de la base de Herbrand B H correspondant à P Q B H construction du système de Herbrand S H correspondant à P P = Q ssi S H { Q} est insatisfaisable ssi S H { Q} n a pas de modèle de Herbrand ssi Q est vrai dans tous les modèle de Herbrand ssi Q M P

sémantique déclarative d un programme logique : exemple P = r? P = s? Programme logique P : p. q. r p,q. r p, q. s r. r p,s. s p, q, r.

sémantique déclarative d un programme logique : exemple P = r? P = s? Programme logique P : p. q. r p,q. r p, q. s r. r p,s. s p, q, r. univers de Herbrand U H? base de Herbrand B H? système de Herbrand B H? modèle de Herbrand de P M P?

sémantique dénotationnelle d un programme logique sémantique du point fixe : plus petite solution de I = T P (I) I : interprétation de Herbrand T P : oprérateur de transformation des interprétations de Herbrand 2 B H 2 B H I T P (I) T P (I) = {A B H B 1,, B n I }, avec A B 1,, B n inst(p) et inst(p) : ensemble des instances de P obtenu en remplaçant les variables de P par des termes de l univers de Herbrand

sémantique dénotationnelle d un programme logique une interprétation supportée de P est une interprétation I telle que : pour tout A I il existe une règle A B 1,,B n inst(p) et B 1,,B n I Soit P un programme logique et I une interprétation I est un modèle de P (noté I = P) ssi T P (I) I I est un modèle supporté de P ssi T P (I) = I sémantique du point fixe : définition constructive du plus petit modèle de Herbrand

sémantique dénotationnelle d un programme logique : exemple P = r? P = s? Programme logique P : p. q. r p,q. r p, q. s r. r p,s. s p, q, r.

sémantique dénotationnelle d un programme logique : exemple P = r? P = s? Programme logique P : p. q. r p,q. r p, q. s r. r p,s. s p, q, r. I? point fixe de T P (I) = I? construction du modèle de Herbrand de M P, r M P? s M P?

sémantique opérationnelle d un programme logique : résolution transformation de P en clauses de Horn puis Résolution (à la Robinson) SLD résolution (Résolution avec règle de sélection) règle de simplification des buts qui procède par unification avec les têtes des règles du programme variante du principe de résolution de Robinson principe d inférence complet pour la logique des prédicats

sémantique opérationnelle d un programme logique P un programme logique : relation de re-écriture des buts : plus petite relation satisfaisant au principe de résolution SLD (A A 1,,A n )Θ P σ UP(B i,a) (B 1,,B i,,b k ) (B 1,,B i 1,A 1,,A n,b i+1,,b k )σ Θ : substitution de renommage pour éviter les conflits de variables : Var(A,A 1,,A n ) Var((B 1,,B i,,b k ) = but sélectionné : B i but résolvant : (B 1,,B i 1,A 1,,A n,b i+1,,b k )σ unificateurs principaux de B i et A : UP(B i,a)

sémantique opérationnelle d un programme logique une étape de la SLD résolution : G i, C, σ G ième atome du but de la règle C du programme P : le but vide

sémantique opérationnelle d un programme logique : exemple P = p(x)? Programme logique P : R1 p(0). R2 p(s(s(x))) p(x).

sémantique opérationnelle d un programme logique : exemple P = p(x)? Programme logique P : R1 p(0). R2 p(s(s(x))) p(x). But : p(x), on renomme x avec Θ(x) = x 1 on obtient p(x 1 ) : avec R1 on l unifie avec p(0) donc σ 1 = {x 1 0} p(x 1 ) 1, R1, σ1 avec R2 on l unifie avec p(s(s(x))) avec σ 2 = {x 1 s(s(x 2 ))} p(x 1 ) 2, R2, σ2 1, R1, σ1

sémantique opérationnelle d un programme logique dérivation SLD une dérivation SLD pour un but G : suite finie ou infinie de buts G j, j 0, de variantes de règles C j de P, de substitutions σ j tels que : G 0 = G et pour tout j 0 : G j ij, C j, σ j G j+1

sémantique opérationnelle d un programme logique : exemple P = r? P = s? Programme logique P : p. q. r p,q. r p, q. s r. r p,s. s p, q, r.

sémantique opérationnelle d un programme logique réfutation SLD une réfutation SLD pour un but G : est une dérivation SLD finie qui se termine avec le but vide : G ij, C j, σ j G 1 in, C n, σ n

sémantique opérationnelle d un programme logique stratégies de sélection 2 sources de non-déterminisme : choix du but à résoudre choix de la règle à utiliser procédure de résolution SLD comporte : stratégie de sélection qui fixe : le choix du but à résoudre stratégie de recherche qui fixe : le choix de la règle à utiliser à chaque étape stratégie de recherche est complète si tous les choix de règles pour résoudre un but donné sont employés Programmation aprés unpar nombre contraintes fini d étapes

construction d un arbre de dérivation SLD un arbre de dérivation SLD pour un but G est un arbre étiqueté par des buts tels que i) la racine est étiqueté par G ii) les noeuds étiquetés par le but vide sont des feuilles iii) les noeuds étiquetés par un but (A 1,,A i,,a n ), n 0, où A i est l atome sélectionné ont autant de fils qu il ya de résolvantes du but avec A i. Un but déterministe est but qui étiquette un noeud qui n a qu un seul successeur

Langage de programmation PROLOG construit sur une implantation de la résolution SLD : la liste des buts à résoudre est gérée par une pile : stratégie de sélection des buts le but le plus à gauche stratégie de recherche exploration de l arbre de dérivation en profondeur d abord variables : commencent par une lettre majuscule ou par le caractère règles : A :- B 1,,B n. faits : A. buts :?- A 1,,A m.

exemple de programme PROLOG (syntaxe GNU PROLOG) arc(a, b). arc(b, c). chemin(x, Y) :- arc(x, Y). chemin(x, Y) :- arc(x, Z), chemin (Z, Y). but :?- chemin(a, c).

Syntaxe GNU PROLOG : http : \\www.gprolog.org/ manual variables : chaînes alphanumériques commençant par une majuscule constantes : entiers ou flottants, chaînes de caractères entre guillemets, chaînes alphanumériques commençant par une minuscule fonctions : chaînes alphanumériques commençant par une minuscule prédicats : chaînes alphanumériques commençant par une minuscule exemples repas(x, Y, Z) :- hors doeuvre(x), plat(y), dessert(z). hors doeuvre(melon). repas(melon, X, Y).

quelques prédicats prédéfinis sur les termes en GNU PROLOG (=)/2 : termes unifiables (\ =)/2 : termes non unifiables (==)/2 : termes égaux (\ ==)/2 : termes différents exemple plat vegetarien(x) :- plat(x), X \ == roti), X \ == steak.

quelques prédicats prédéfinis pour les expressions arithmétiques en GNU PROLOG (is)/2 : évaluation d expression arithmétique (+)/2, ( )/2, ( )/2, (/)/2, (mod)/2 : opérations sur les expressions arithmétiques (=:=)/2 : égalité d expressions arithmétiques (= \ =)/2 : inégalité d expressions arithmétiques (=<)/2, (<)/2, (>=)/2, (>)/2, : comparaisons d expressions arithmétiques. exemple nat(0). nat(n) :- Nat(N1), N is N1 + 1.

listes en GNU PROLOG exemple : liste de 4 entiers : [1,2,3,4] liste vide : [ ] liste : [X Y] X : tête de liste Y : queue de liste exemples de manipulation de listes parcours de liste construction directe de liste construction indirecte de liste

listes en GNU PROLOG liste : arbre particulier : peigne dessin liste : [X Y], X : tête de liste, Y : queue de liste liste : [X 1, X 2, Y] X 1 : premier élément, X 2 : second élément, Y : queue de liste liste : [X 1, X 2,, X n Y] X 1 : premier élément,, X n : nième élément, Y : queue de liste

parcours de listes en PROLOG algorithme du parcours récursif d une liste fonction parcours(l : liste) début si L = [ ] alors arrêt sinon écrire X parcours(y) finsi fin

parcours de listes en PROLOG programme PROLOG de parcours d une liste parcours([ ]). condition d arrêt de la récursivité parcours([x Y]) :- write(x), parcours(y). appel récursif

construction directe de listes en PROLOG algorithme de contruction de la liste des éléments de rang pair (L a un nombre pair d éléments) : fonction rang pair(l, L : listes) début si L = [ ] alors L = [ ] sinon L = [Y U] rang pair(l, U) finsi fin

construction directe de listes en PROLOG construction directe d une liste d éléments de rang pair rang pair([ ],[ ]). condition d arrêt de la récursivité rang pair([x,y L], [Y U]) :- rang pair(l, U). appel récursif

construction directe de listes en PROLOG construction dans la descente de la récursivité 2 listes : liste initiale, liste résultat construction dans la tête de règle construction des èléments dans l ordre

construction indirecte de listes en PROLOG algorithme d inversion de liste : fonction renverse(l, L, R : listes) début si L = [ ] alors R = L sinon renverse(y, L, R) L = [X L] finsi fin

construction indirecte de listes en PROLOG construction indirecte d une liste d éléments dans l ordre inverse renverse([ ], L, L). condition d arrêt de la récursivité renverse([x Y], L, R) :- renverse(y, [X L], R). appel récursif

construction indirecte de listes en PROLOG construction dans la remontée de la récursivité construction dans le corps de règle 3 listes : liste initiale, liste auxiliaire, liste résultat construction des èléments dans l ordre inverse

prédicat de coupure :! prédicat de coupure (ou cut ) dans la règle : A A 1,,A m,!,b 1,,B n abandon des choix restant sur A,A 1,,A m lorsque le prédicat de coupure est sélectionné

prédicat de coupure : exemple hors doeuvre(melon). hors doeuvre(celeri). viande(roti). poisson(sole). dessert(fruit). viande(steak). poisson(rouget). dessert(flan). plat(x) :- viande(x). plat(x) :- poisson(x). repas(x, Y, Z) :- hors doeuvre(x), plat(y), dessert(z). buts : repas(melon, Y, Z),!. repas(celeri, Y, Z), poisson(y),!.

Utilisation du prédicat de coupure :! expression conditionnelle : si alors sinon : début si X mod 2 = 0 alors écrire ( pair ) sinon écrire ( impair ) finsi fin parite(x) :- Y is X mod 2, Y is 0,!, write( pair ). parite(x) :- write( impair ).

par contraintes : PLC par contraintes : intégration de solveur de contraintes naturelle en PROLOG PROLOG peut être considéré comme un langage de programmation par contrainte : domaine des variables : univers de Herbrand contraintes : égalité entre termes

par contraintes : PLC PROLOG : langage de programmation par contraintes : exemple p(x, Y, Z) :- Z is X+Y.?- p(3, 4, Z). Z = 7?- p(x, 4, 7). ERREUR MAIS

par contraintes : PLC par contraintes : généralisation de la programmation logique mécanisme d inférence + solveur de contraintes enrichit le domaine du discours contraintes dans : le programme le but la question

par contraintes : PLC par contraintes : généralisation de la programmation logique considérer d autres structures mathématiques S que l univers de Herbrand généralisation de la résolution SLD remplacer l unfication sur les termes par la résolution de contraintes dans S formules logiques : clause de Horn de la forme A c 1,, c m B 1,, B n c i, 1 i m : contraintes B j, 1 j n : atomes définition d une classe de langages de programmation PLC(S)

par contraintes : PLC Langage des contraintes langage du premier ordre défini par : un ensemble dénombrable de symboles de prédicats ou prédicats : S C (contenant true et =) un ensemble dénombrable de symboles fonctionnels : S F un ensemble infini dénombrable de variables : V contrainte atomique : proposition atomique de ce langage ensemble de contraintes basiques : ensemble de formules du premier ordre contenant des contraintes atomiques et fermé par renommage des variables langage de contraintes : fermeture par conjonction et quantification existentielle de l ensemble des contraintes basiques

par contraintes : PLC Interprétation du langage de contraintes choix d une structure mathématique S = (D,E,O,R) où : D : domaine E : E D : associés à chaque symbole de constante, notés [c] pour c S F d arité 0 O : ensemble d opérateurs sur D associés à chaque symbole de fonction notés [f ] : D n D pour tout f S F d arité n R : ensemble de relations sur D associés à chaque symbole de prédicat notés [p] : D n {0,1} pour tout p S C d arité n

par contraintes : PLC Interprétation du langage de contraintes S-valuation : fonction ρ : V D cρ : proposition dont la valeur de vérité est déterminée par S si S = cρ alors ρ est une solution de c c est satisfaisable si c admet une solution dans S

par contraintes : PLC Complétude pour la satisfaction des contraintes On suppose que dans S le problème de la satisfaisabilité des contraintes est décidable ( c, soit S = (c) soit S = (c)) S est représenté par une théorie axiomatique T définie sur l alphabet vérifiant S = T (correction) soit T (c), soit T = (c) (complétude pour la satisfaction des contraintes) S = (c) ssi T (c)

par contraintes :PLC(S) Programmes PLC(S) un programme logique est constitué de : règles de la forme : A c 1,,c m B 1,,B n A : tête de la règle c 1,,c m B 1,,B n, m 0, n 0 : corps de la règle A, B j pour 1 j n : atomes c i 1 i m : contraintes basiques atome : proposition atomique formé sur S P, S F et V, S P S C =

par contraintes :PLC(S) sémantique déclarative(plus petit modèle) opérationnelle (procédurale, par chaînage arrière) (résolution CSLD)

par contraintes :PLC(S) différentes classes de langages de programmation logique par contraintes LPC(H), univers de Herbrand : Prolog LPC(T R), termes rationnels : Prolog II LPC(λ) : λ-prolog LPC(R) : réels : Prolog IV LPC(B) : booléens LPC(FD) : domaines finis : CHIP, Gnu-Prolog

par contraintes : PLC par contraintes : différents solveurs CHIP Eclipse PROLOG IV Gnu-Prolog

par contraintes :PLC(F D) Solveur Gnu-Prolog résolution des contraintes par propagation : consistance d arc types de contraintes : arithmétiques booléenes symboliques

par contraintes :PLC(F D) prédicats prédéfinis en Gnu-Prolog site web de Gnu-Prolog : http : //www.gprolog.org/ documentation : http : //www.gprolog.org/ manual (chapitre 8) différents types de prédicats : variables sur les domaines finis contraintes sur les domaines finis arithmétiques booléenes symboliques résolution

par contraintes :PLC(F D) conventions de description de prédicats prédéfinis en Gnu-Prolog designation : nom prédicat/arité description partie schéma d appel : mode et type de chaque argument mode : + instancié à l appel mode : - non instancié à l appel, mode :? instancié à l appel types : terme, variable, variable FD, liste de X partie description partie exemple

Prédicats prédéfinis en Gnu-Prolog définition d intervalle designation : fd max integer/1 schéma d appel : fd max integer(?integer) intrevalle : 0.. fd max integer

Prédicats prédéfinis en Gnu-Prolog variables sur les domaines finis designation : fd domain/3 schéma d appel : fd domain(+liste de variables FD,+entier,+entier) ou fd domain(?variable FD,+entier,+entier) description : fd domain(l,min,max) ou fd domain(x,min,max)

Prédicats prédéfinis en Gnu-Prolog variables sur les domaines finis : exemple modélisation CSP du problèmes des 4 reines : fd domain([x1,x2,x3,x4],1,4) ou fd domain(x1,1,4), fd domain(x2,1,4), fd domain(x3,1,4), fd domain(x4,1,4)

Prédicats prédéfinis en Gnu-Prolog variables sur les domaines finis designation : fd domain/2 schéma d appel : fd domain(+liste de variables FD,+liste d entiers) ou fd domain(variable FD,+liste d entiers) description : fd domain(l,valeurs) ou fd domain(x,valeurs) (Valeurs : liste de valeurs)

Prédicats prédéfinis en Gnu-Prolog contraintes arithmétiques : consistance d arc partielle Expr1 et Expr2 : deux expressions arithmétiques égalité : Expr1 = Expr2 inégalité : Expr1 \ = Expr2 inférieur : Expr1 < Expr2 inférieur ou égal : Expr1 =< Expr2 supérieur : Expr1 > Expr2 supérieur ou égal : Expr1 >= Expr2

Prédicats prédéfinis en Gnu-Prolog contraintes arithmétiques : consistance d arc totale Expr1 et Expr2 : deux expressions arithmétiques égalité : Expr1 = Expr2 inégalité : Expr1 \ = Expr2 inférieur : Expr1 < Expr2 inférieur ou égal : Expr1 =< Expr2 supérieur : Expr1 > Expr2 supérieur ou égal : Expr1 >= Expr2

Prédicats prédéfinis en Gnu-Prolog contraintes booléennes Expr1 et Expr2 : deux expressions booléennes équivalence : Expr1 <=> Expr2 non équivalence : Expr1 \ <=> Expr2 non : Expr1 \ Expr2 ou : Expr1 \/ Expr2 ou exclusif : Expr1 Expr2 supérieur ou égal : Expr1 /\ Expr2

Prédicats prédéfinis en Gnu-Prolog contraintes de cardinalité : contraintes sur le nombre de contraintes satisfaites fd cardinality/2 fd cardinality/3 fd at least one/1 fd at most one/1 fd only one/1

Prédicats prédéfinis en Gnu-Prolog contraintes symboliques fd all different/1 : contraint les variables de la liste à prendre des valeurs différentes 2 à 2 fd relation/2 : définition des contraintes en extension fd element/3 : contraint une variable à prendre une valeur de rang donné dans une liste fd element var/3 : contraint une variable à prendre une valeur fd atmost/3 : contraint au moins une variable à prendre une valeur dans une liste de valeurs fd atleast/3 : contraint au plus une variable à prendre une valeur dans une liste de valeurs fd exactly/3 : contraint exactement une variable à prendre une valeur dans une liste de valeurs

Prédicats prédéfinis en Gnu-Prolog résolution designation : fd labeling/1 schéma d appel : fd labeling(+liste de variables FD) description : fd labeling(l) : affecte une valeur à chaque variable FD de L afin de satisfaitre toutes les contraintes exemple Problème des 4 reines : déclaration des 4 variables X1, X2, X3 et X4 écriture des contraintes sur X1, X2, X3 et X4 rechercher d une solution : fd labeling([x1,x2,x3,x4])

Prédicats prédéfinis en Gnu-Prolog résolution designation : fd labeling/2 schéma d appel : fd labeling(+liste de variables FD,+liste d options) description : fd labeling(l,o) : affecte une valeur à chaque variable FD de L afin de satisfaitre toutes les contraintes. O : liste d options pour l ordre d affectation des variables exemple Problème des 4 reines résolution avec heuristique echec-d abord : fd labeling([x1,x2,x3,x4],[variable method(first fail)])

PLC(FD)avec Gnu-Prolog Méthodologie définir le(s) domaine(s) fini(s) et déclarer les variables description des contraintes résolution exemple problem([x, Y, Z]) :- fd domain(x, 0, 5), fd domain([y,z], 3, 7), X+Y < 2 * Z, fd labeling([x, Y, Z],[]).

PLC(FD) avec Gnu-Prolog Exemple problem([x, Y, Z]) :- fd domain(x, 0, 5), fd domain([y,z], 3, 7), X+Y < 2 * Z, fd labeling([x, Y, Z],[]).?- problem(l).?- L = [0, 3, 3]?;?- L = [0, 3, 4]?;?- L = [0, 3, 5]?;