Upload
guarin-alonso
View
109
Download
3
Embed Size (px)
Citation preview
Introduction aux systèmes à base de règles
Les bases du langage CLIPS
Cours pratiques de systèmes à base de connaissances.
Semestre d’été 1999
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
Données Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données Données
Données-faits
Données Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données DonnéesDonnées Données Données Données
Base de connaissancesrègles
Moteur d’inférences
ApplicationINPUT
OUTPUT
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
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
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 expressionsUne 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)
3CLIPS> (+ 2 (add))5CLIPS>
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, ...