Introduction aux systèmes à base de règles

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Chapitre annexe. Récursivité
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Conception de Site Webs dynamiques Cours 5
Transformation de documents XML
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Domaines nominaux XSLT
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
INTRODUCTION A MATLAB ENVIRONNEMENT MATLAB.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
INFOR 101 Chapitre 3 Marianne Morris.
Récursivité.
Expressions et assignations
Analyse lexicale Généralités Expressions rationnelles Automates finis
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Programmation fonctionnelle Le langage LISP
Quatre exemples sous WebCLIPS
Python La programmation objet
Introduction à la programmation (Java)
Semaine #1 INF130 par Frédérick Henri.
Semaine #1 INF135 par Frédérick Henri.
Principes de programmation
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Expressions et affectations
Partie II Sémantique.
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Programmation logique Le Langage PROLOG
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI Jean-Jacques DUMÉRY -1-
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Animateur : Med HAIJOUBI
Travaux Pratiques Représentation des connaissances
Architecture d’un système expert
Introduction à l’environnement logiciel Clips
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
Les adresses des fonctions
Algorithmique et programmation en
Créer des packages.
Un survol du language C.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Le langage Racket (Lisp)
Objets Opérateurs Listes
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
CSI2520 (map abs ‘( )) ( ) (map (lambda (x y) (* x y)) ‘( ) ‘( )) ( )  Permet d’appliquer une fonction aux.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Les bases de l’algorithmique
6/10/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département d’Ingénierie Informatique,
Introduction aux systèmes à base de règles
Module 133 Développer des applications Web Introduction à PHP.
CLIPS Module Intelligence artificielle. Principes Langage de description de S.E. Faits et règles typés Assertion et délétion Chaînage avant Hiérarchie.
Scripts et fonctions Instructions de contrôle
Objets et Actions Élémentaires.
Initiation aux bases de données et à la programmation événementielle
Algorithmique Algorithmique  Pascal
Introduction au langage C
IFT 703 Informatique cognitive ACT-R Modèle symbolique et perceptuel
Création d’un modèle. Meta-process Le processus du plus haut niveau en ce qui nous concerne ◦ contient  un ensemble de modèles  le temps simulé en milli-secondes.
Algorithmes sur Open Office. 1. Ouvrir Visual Basic de Open Office.
FACTORY systemes Module 5 Section 1 Page 5-3 Les scripts de traitement FORMATION INTOUCH 7.0.
IFT359 – Programmation fonctionnelle Thème 07 Fermeture, affectation ou monades 1.
Transcription de la présentation:

Introduction aux systèmes à base de règles Les bases du langage CLIPS 1

Introduction Programmation déclarative VS programmation procédurale Pseudo-parallélisme Recherche heuristique et stratégies de recherche Inférence et graphe des connaissances Programme interprété VS compilé Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 2

Architecture d’un SABR Base de Faits Base de Règles Moteur d’inférence Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 3

La base de faits Mémoire à court terme Données préliminaires Dynamisme Déclenchement des règles Structuration des informations Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 4

La base de règles Mémoire à long terme Permanence des connaissances Connaissances abstraites « Expertise » du système Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 5

Le moteur d’inférence Programme algorithmique Chaînage avant VS arrière Working Memory (WM) Résolution des conflits Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 6

Chaînage arrière Guidé par les connaissances Conclusion  Conditions "Que dois-je faire pour atteindre le but ? » PROLOG Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 7

Chaînage avant Guidé par les données Conditions  Conclusions "Que puis-je conclure des informations qui sont en ma possession ? » ART*Enterprise, CLIPS. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 8

Chaînage avant - Fonctionnement (1/3) Activation des règles dont les conditions sont remplies par les faits en mémoire (Pattern matching par unification ou filtrage) Les règles activées sont placées dans la WM (agenda) => Action unification Activation Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 9

Chaînage avant - Fonctionnement (2/3) Résolution des conflits (conflict resolution) Critères de sélection : depth, breadth, simplicity, complexity, lex, mea, and random. Défaut : depth. Changements avec (setstrategy) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 10

Chaînage avant - Fonctionnement (3/3) Application de la règle sélectionnée (firing) Exécution du RHS de la règle. L’action peut modifier la base de faits, (assert) Reconsidération compléte de la WM selon le mode stratégique choisi. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 11

De LISP à CLIPS LISP : Lists processing LISP  ART (Brightware inc.) ART  CLIPS CLIPS  C Language Integrated Production System (CLIPS) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 12

LISP - Les listes Traitement des listes : syntaxe avec parenthèses La liste des éléments « atomiques » a,b,c,d, s ’écrit : (a b c d) Récursivement une liste peut être un élément (cette fois non atomique !) (a b c (x y z)) Le séparateur est l’espace Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 13

LISP - Système préfixé Habituellement système infixé : 2 + 2 <opérande> opérateur <opérande> LISP : Système préfixé : + 2 2 opérateur <opérande> <opérande> Facilité de programmation : le premier atome de la liste a une signification particulière. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 14

LISP- Evaluation des expressions Une expression numérique : (+ (* 2 3) (- (/ 8 2) (round 2.25))) correspond à (2*3) + ((8/2) - (round 2.25)) ce qui par une première évaluation se lit : (+ 6 (- 4 2)) puis (+ 6 2) ce qui retourne l’évaluation finale : 8 Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 15

CLIPS Version CLIPS 6.0 Utilisez le HELP . Ecrivez vos interactions dans un éditeur ! (Ctr-C / Ctrl-V) Fonctions "TOP-LEVEL" : (exit) arrête CLIPS. (clear) équivaut à arrêter et redémarrer CLIPS (reset) supprime les informations dynamiques et remet à jour l'agenda. (run) lance un programme CLIPS. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 16

CLIPS - Les types de données float, (réels) integer, (entiers) symbol, (symbole) string, (chaîne de caractères) externaladdress, factaddress, instancename, instanceaddress. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 17

Les SYMBOL Elément du langage Sémantique liée à sa représentation textuelle Commence par n'importe quel caractère imprimable (ASCII) suivi de 0, 1 ou plusieurs caractère(s) imprimable(s); un délimiteur met fin au symbole (espace,  ", CR, LF, &, …) Exemples : assert @+=-% bad_value hello HELLO B76-HI NB : CLIPS est CASE-SENSITIVE Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 18

Les STRING (chaînes de caractères) Ensemble de caractères imprimables entre guillemets « \ » et «"» doivent être précédés d’un \ Exemples : "Hello world !" "@3%&" "C:\\temp\\test.clp"   "Exec \\\\FS3\\sys\\test.clp \"Hello world !\" " Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 19

Les nombres Float (réels) : 2e2 -> 200.0 5E3 -> 5000.0 Integer (entiers) : 10 -> 10 Avec signe : +2 -> 2 -5e4 -> -50000.0 Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 20

Les variables Locales Globales Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 21

Les variables locales Liaison à une valeur à l'instant t. Pas de déclaration typée Pas de variable sans valeur liée (bound) Syntaxe : ?<nom> Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 22

Les variables globales Globales au module Syntaxe : (defglobal ?*<nom>* = <valeur>) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 23

Les listes Normal : (fait 1 2) Sous forme de variable : $?<nom> Création : (create$ a b c) -> (a b c) Fonctions de manipulation : membre$ delete$ explode$ insert$ replace$ length$ nth$ Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 24

Les faits Faits ordonnés Faits non-ordonnés Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 25

Les faits ordonnés N champs entre parenthèses (N = 1 to LogicalMax) Champ (1) = SYMBOL : il est obligatoire ! Il ne doit pas être égal au nom d'une fonction. (<SYMBOL>| <SYMBOL> { [<AllTypes>] }) Exemples : (hello) (fait hello) (distance Lausanne Genève 69.9) (GOAL "My String" LeSymbol) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 26

Les faits ordonnés - Assertion Assertion unique et "manuelle" : CLIPS> (assert (couleur VERT)) <Fact-0> Assertion "manuelle" d'une liste de faits : CLIPS> (deffacts couleurs (couleur VERT) (couleur ROUGE) (couleur BLEU) ) CLIPS> (reset) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 27

Les faits ordonnés - retrait (retract <index_fait> | {<index_fait> <index_fait>} | *) Exemples : CLIPS> (assert (couleur VERT)) <Fact-0> CLIPS> (retract 0) CLIPS> (facts) CLIPS> CLIPS> (retract 1 3 5) CLIPS> (retract *) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 28

Les faits ordonnés - retrait (undeffacts <nom_liste_faits>) Exemple : CLIPS> (deffacts faits (fait 1) (fait 2)) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact) CF 1.00 f-1 (fait 1) CF 1.00 f-2 (fait 2) CF 1.00 For a total of 3 facts. CLIPS> (undefafacts faits) CLIPS> (facts) f-0 (initial-fact) CF 1.00 f-1 (fait 1) CF 1.00 f-2 (fait 2) CF 1.00 For a total of 3 facts. CLIPS> (restet) For a total of 1 fact. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 29

Les faits non-ordonnés (deftemplate …) ~= record PASCAL ou structure en C Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 30

Les règles Schéma : Rule header Pattern(s) (LHS : Left-hand side) THEN arrow action (LHS : right-hand side) IF pattern THEN action Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 31

Les règles Exemple : (defrule Maregle "ceci est un commentaire" (declare (salience 99)) (fait LeFaitVoulu) => (assert (trouver CeQueJeCherche)) ) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 32

Les règles Analyse de l'exemple : (defrule <nom> "<commentaire>" (declare (salience <coefficient d'importance>)) (<pattern>) => (<action>) ) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 33

Les fonctions Exemple : (deffunction MaFonction "fonction qui imprime un message" (?Message) (printout t ?message crlf) ) Appel de la fonction : CLIPS>(Mafonction "Hello World !") Hello World ! CLIPS> Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 34

Les fonctions Analyse de l'exemple : (deffunction <nom> "<commentaire>" (<paramètres>) (<action>) ) Fonctions à effet de bord VS à retour de valeur. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 35

Les fonctions A retour de valeur : (deffunction add () (return (+ 1 2)) ; si le return est omis, la ; dernière expression est ; renvoyée ) Appel : CLIPS>(add) 3 CLIPS> (+ 2 (add)) 5 CLIPS> Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 36

Fonctions procédurales (Bind ?x <valeur>) : permet de lier une valeur à une variable (if <expression> then <action> [else <action>]) Itérations : loop-for-count, while, switch Groupement d’évaluations : progn Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 37

Les opérateurs Mathématiques : +, -, /, *, **, div, abs, max,min, exp, log, mod, round, sqrt, cos, sin, tan, … Booléens : AND, OR, NOT De comparaison : <,>,<=,>=,<>,=,eq,neq,intergerp, stringp, floatp, ... Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 38