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

Introduction aux systèmes à base de règles

  • Upload
    penney

  • View
    32

  • Download
    1

Embed Size (px)

DESCRIPTION

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é. - PowerPoint PPT Presentation

Citation preview

Page 1: Introduction aux systèmes à base de règles

Introduction aux systèmes à base de règles

Les bases du langage CLIPS

Page 2: Introduction aux systèmes à base de règles

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é

Page 3: Introduction aux systèmes à base de règles

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

Page 4: Introduction aux systèmes à base de règles

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

Page 5: Introduction aux systèmes à base de règles

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

Page 6: Introduction aux systèmes à base de règles

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

Page 7: Introduction aux systèmes à base de règles

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

Page 8: Introduction aux systèmes à base de règles

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.

Page 9: Introduction aux systèmes à base de règles

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

Page 10: Introduction aux systèmes à base de règles

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)

Page 11: Introduction aux systèmes à base de règles

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.

Page 12: Introduction aux systèmes à base de règles

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)

Page 13: Introduction aux systèmes à base de règles

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

Page 14: Introduction aux systèmes à base de règles

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.

Page 15: Introduction aux systèmes à base de règles

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

Page 16: Introduction aux systèmes à base de règles

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.

Page 17: Introduction aux systèmes à base de règles

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.

Page 18: Introduction aux systèmes à base de règles

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

Page 19: Introduction aux systèmes à base de règles

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 !\" "

Page 20: Introduction aux systèmes à base de règles

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

Page 21: Introduction aux systèmes à base de règles

Cours pratiques de systèmes à base de connaissances.

Semestre d’été 1999

Les variables

• Locales

• Globales

Page 22: Introduction aux systèmes à base de règles

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>

Page 23: Introduction aux systèmes à base de règles

Cours pratiques de systèmes à base de connaissances.

Semestre d’été 1999

Les variables globales

• Globales au module

• Syntaxe : (defglobal ?*<nom>* = <valeur>)

Page 24: Introduction aux systèmes à base de règles

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$

Page 25: Introduction aux systèmes à base de règles

Cours pratiques de systèmes à base de connaissances.

Semestre d’été 1999

Les faits

• Faits ordonnés

• Faits non-ordonnés

Page 26: Introduction aux systèmes à base de règles

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)

Page 27: Introduction aux systèmes à base de règles

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)

Page 28: Introduction aux systèmes à base de règles

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 *)

Page 29: Introduction aux systèmes à base de règles

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.

Page 30: Introduction aux systèmes à base de règles

Cours pratiques de systèmes à base de connaissances.

Semestre d’été 1999

Les faits non-ordonnés• (deftemplate …) ~= record PASCAL ou

structure en C

Page 31: Introduction aux systèmes à base de règles

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

Page 32: Introduction aux systèmes à base de règles

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))

)

Page 33: Introduction aux systèmes à base de règles

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>)

)

Page 34: Introduction aux systèmes à base de règles

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>

Page 35: Introduction aux systèmes à base de règles

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.

Page 36: Introduction aux systèmes à base de règles

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>

Page 37: Introduction aux systèmes à base de règles

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

Page 38: Introduction aux systèmes à base de règles

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, ...