400 likes | 557 Views
Introduction aux systèmes à base de règles. Les bases du langage CLIPS. 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é.
E N D
Introduction aux systèmes à base de règles Les bases du langage CLIPS
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
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
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
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
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
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
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
unification => Action 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) Activation Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999
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
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
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
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
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
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
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
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
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
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
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
Les variables • Locales • Globales Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999
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
Les variables globales • Globales au module • Syntaxe : (defglobal ?*<nom>* = <valeur>) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999
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
Les faits • Faits ordonnés • Faits non-ordonnés Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999
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
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
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
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) CLIPS> (facts) f-0 (initial-fact) CF 1.00 For a total of 1 fact. Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999
Les faits non-ordonnés • (deftemplate …) ~= record PASCAL ou structure en C Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999
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
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
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
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
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
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
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
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