Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parChristophe Bernard Modifié depuis plus de 9 années
1
Introduction aux systèmes à base de règles
Les bases du langage CLIPS Partie II 1
2
Les faits non-ordonnés
~= record PASCAL ou structure en C Enregistrement de la structure (deftemplate …) Chaque champ est nommé Un champ est appelé slot ou multislot Exemple : (deftemplate etudiant (slot age (range 18 77) (default 20)) (multislot faculte (allowed-values Hec Droit SSP Lettres) (default Hec)) (slot moyenne (type FLOAT)) ) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 2
3
Les faits non-ordonnés
Assertion comme faits ordonnés (assert (…)) L'ordre des champs n'a pas d'importance Les champs qui ont une valeur par défaut n'ont pas besoin d'être initialisés Seuls les multislot peuvent prendre une liste de valeurs Exemple : CLIPS> (assert (etudiant)) <Fact-0> CLIPS> (facts) f (etudiant (age 20) (faculte Hec) (moyenne 0.0)) CF 1.00 For a total of 1 fact. CLIPS> Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 3
4
Les règles Schéma : Rule header Pattern(s) (LHS : left-hand side)
THEN arrow action (RHS : right-hand side) IF pattern THEN action Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 4
5
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 5
6
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 6
7
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 7
8
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 8
9
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 9
10
Fonctions procédurales
(Bind ?x <valeur>) : permet de forcer la liaison d'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 10
11
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 11
12
Construction de faits et de règles
Assurer le pattern matching complet ou partiel entre des faits, et le LHS de la règle Faits-données et faits de contrôle Graphe de résolution : Ex = Etat Fx = fonction de transition Ea Eb Ec f1 f2 Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 12
13
Construction de faits et de règles
Les états sont l'ensemble ou un sous-ensemble des faits en mémoire à l'instant t Les fonctions de transition sont les règles en mémoire à l'instant t Exemple d'état : ((pere-de Philippe Michel) (pere-de Ernest Philippe)) Exemple de fonction de transition : (defrule grand-pere (pere-de ?x ?y) (pere-de ?y ?z) => (assert(grand-pere-de ?x ?z) Etat suivant : ((pere-de Philippe Michel) (pere-de Ernest Philippe) (grand-pere-de Ernest Michel)) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 13
14
Construction de faits et de règles - choix de valeurs
~ = Not ; | = Or & connexion des précédents Ex1 : (defrule passage (feu ~vert) => (printout t "Ne pas traverser")) Ex2 : (defrule localisation (faculté Hec|Droit) (assert (lieu BFSH1)) Ex3 : (defrule les-petits (taille ?taille&~GRAND&~MOYEN) (printout t "la taille est " ?taille crlf)) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 14
15
Construction de faits et de règles - choix de valeurs
":" ou (test) Test booléen par une fonction de comparaison (<,>,=, <>, eq, neq, integerp, stringp, ...) sur les faits. Ex1 : (defrule example-1 (data-1 ?y) (data-2 ?x&:(> ?x ?y)) => (printout t ?x " est plus grand que " ?y crlf)) Ex2 : (defrule example-2 (data-2 ?x) (test (> ?x ?y)) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 15
16
Construction de faits et de règles - choix de faits
and, or, not. Exemple : (defrule traverser (and (not (gauche voiture)) (not (droite voiture)) ) => (printout t "Vous pouvez traverser…" crlf)) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 16
17
Construction de faits et de règles - Faits de contrôle
Dynamisme / usage pour enchaînement des règles Exemple : (defrule etape-1 (fait 1) => (assert (etape 1))) (defrule etape-2 ?fait <- (etape 1) ; NB pas de parenthèses (fait 2) (assert (etape 3)) (retract ?fait)) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 17
18
Entrée de données Au clavier : (read) (readline) Exemple :
(defrule read-input (initial-fact) => (printout t "Donnez le nom d'une couleur " crlf) (assert (color (read)))) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 18
19
Entrée de données Par fichier : contenu du fichier faits.txt
(fait Hello) Déroulement CLIPS> (open "C:\\faits.txt" Fichier "r") TRUE CLIPS> (assert-string (readline Fichier)) <Fact-0> CLIPS> (facts) f (fait Hello) CF 1.00 For a total of 1 fact. CLIPS>(close Fichier) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 19
20
Les objets Abstraction Héritage Encapsulation Polymorphisme
Liaison dynamique Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 20
21
Les objets Classes Instances Messages Attributs Méthodes
Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 21
22
Les objets (classes) La classe 1ère est OBJECT
Les classes prédéfinies sont : FLOAT INTEGER SYMBOL STRING MULTIFIELD EXTERNAL-ADDRESS FACT-ADDRESS INSTANCE-ADDRESS INSTANCE-NAME OBJECT PRIMITIVE NUMBER LEXEME ADDRESS INSTANCE USER INITIAL-OBJECT Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 22
23
Les objets (classes) Le nom d'une classe s'écrit en MAJUSCULES
(defclass MACLASSE (is-a USER)) CLIPS> (describe-class USER) Abstract: direct instances of this class cannot be created. Direct Superclasses: OBJECT Inheritance Precedence: USER OBJECT Direct Subclasses: INITIAL-OBJECT Recognized message-handlers: init primary in class USER delete primary in class USER print primary in class USER direct-modify primary in class USER message-modify primary in class USER direct-duplicate primary in class USER message-duplicate primary in class USER CLIPS> Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 23
24
Les objets (classes) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 24
25
Les objets (classes) (defclass <NOM_CLASSE> (is-a <SUPER-CLASS>) (role <concrete|abstract>) (slot <nom-attribut> (<facet> <valeur-facet>))) Exemple : (defclass PERSONNE (is-a USER) (role concrete) (pattern-match reactive) (slot age (create-accessor read-write)) ) Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 25
26
Les objets (classes) Les facettes sont : default ...
Access read-write | read-only | initialize-only storage local | shared propagation inherit | no-inherit source exclusive | composite pattern-match reactive | non-reactive create-accessor ?NONE | read | write | read-write visibility private | public Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 26
27
Les objets (instances)
(make-instance [<nom-instance>] of <classe> <slot-override>) Exemple : CLIPS>(make-instance Philippe (age 26)) [Philippe] CLIPS> (unmake-instance Philippe) TRUE CLIPS> Cours pratiques de systèmes à base de connaissances. Semestre d’été 1999 27
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.