Vous êtes sur la page 1sur 9

Systmes Experts

3 eme Anne ENSIMAG 1999/00


James L. Crowley
Sance 4 :

27 octobre 1999

Systmes de Productions : CLIPS 6.0


Systmes de Productions............................. 2
Clips : C Language Integrated Production System........2
Architecture d'un Systme de Production .......................3

Liste de Faits........................................... 4
Les types prdfinis en clips..........................................5
Deftemplates................................................................5
deffacts.......................................................................7

Les Rgles en CLIPS................................. 9


Syntaxe du "defrule" ....................................................9

Systmes de Productions

Sance 4

Systmes de Productions
Les productions correspondent aux "rflexes conditionns" observs
chez les animaux et chez les hommes.
Dans un systme de productions, le raisonnement est exprim sous forme de
rflexes conditionns : condition raction
Une raction peut tre une affirmation d'un fait ou d'une action entreprendre.
Les faits sont exprims sous forme de liste, de structure ou d'objet.
L'association des faits et rgles sont faits par un algorithme de
"mise en correspondance".
La prsence de variables dans les rgles rend complexe (et donc cher)
ce calcul de mise en correspondance. Il existe un algorithme "rapide"
pour cette mise en correspondance : l'algorithme RETE.
Langages de programmation :
OPS-5 (n '78) => ART (n '80) => CLIPS (n '85) => CLIPS 6 (n '94)
Clips : C Language Integrated Production System
L'origine de CLIPS (CLIPS 1.0) est une version "C" du systme "ART"
(Automated Reasoning Tool) ralis par la NASA et distribu "gratuitement"
(jusqu' version 5.0). CLIPS, ART et OPS-5 sont bass sur l'algorithme RETE.
Depuis, CLIPS a volu inclure la programmation oriente objet et
un systme de maintenance de vrit. (CLIPS 6.0).
CLIPS est un systme ouvert. Il est distribu avec sa source.
Il est facile d'ajouter les procdures crites en C.
CLIPS est le noyau pour plusieurs milliers de systmes expert.
la NASA, CLIPS est utilis afin de faire des systmes experts pour
1) Contrle des processus
2) Diagnostic des pannes.
3) Planification des missions.
4-2

Systmes de Productions
Architecture d'un Systme de Production

Mmoire de Travail
("Facts List")
Interface
Utilisateur

MATCH
(Rete)

Sance 4

Agenda

Rules
Excution

Slection

Le cycle "Recognize-Act" est la base du moteur d'infrence.


Il comporte 3 phases :
Correspondance (appariement des faits et rgles)
Slection
(slection dune activation pour excution)
Excution
(lexcution dune rgle peut engendrer la modification
de la mmoire de travail).
Chaque fait est identifi par un "indice". (ou estampille ou "recency")
Dans chaque cycle, toutes les rgles sont "mises en correspondance"
avec toute la mmoire de travail.
Les associations de rgles et faits sont stockes dans l'agenda.
Une des associations est choisie pour l'excution.
Il existe plusieurs modes de triage de l'agenda.
Par dfaut, l'agenda est une pile (LIFO)

4-3

Systmes de Productions

Sance 4

Liste de Faits
La mmoire de travail de CLIPS est la "FACTS LIST"
Un fait peut tre
Une liste de "champs"
Une structure compose d'un nom, et d'une liste de paire : (attribut valeur)
Une instance d'un objet.
Dans la version 6.0 il y a un langage objet : COOL.
Nous allons utiliser COOL dans les dernires sances du cours
Ici nous utilisons les listes et les stuctures.
Les faits sont crs et dtruits par "assert", "retract", "clear" et "reset".
Affirmation d'un fait :
(assert <<FAIT>>)
Ngation d'un fait :
(retract <<FAIT>>)
Vider la Facts List :
(clear)
Initialisation des listes des faits : (reset)
(reset) => (assert (initial-fact))
f-0 (initial-fact)
Il y a cinq mots cls ne pas utiliser dans le premier champ :
mots cls : test, and, or, not, declare
Chaque fait est identifi par un "indice". C'est un nombre unique.
L'indice joue un rle fondamental dans la phase slection.

4-4

Systmes de Productions

Sance 4

Les types prdfinis en clips


Il y a huit types de donnes : symbol, string, float, integer, external-address,
fact-address, instance-name, et instance-address;
Ils sont dfinis par un arbre :
OBJECT
USER
PRIMITIVE

NUMBER

INTEGER

INSTANCE

ADDRESS

INITIAL-OBJECT

MULTIFIELD

FLOAT

INSTANCE-NAME

LEXEME

SYMBOL

INSTANCE-ADDRESS

FACT-ADDRESS

STRING

EXTERNAL-ADDRESS

Deftemplates
Les structures sont dfinies par un template
Les templates permettent de spcifier les faits non-ordonns dans les rgles
Une template est compose de :
un nom
des champs ("slots")
des valeurs par dfaut.
Les types sont : MULTIFIELD, EXTERNAL-ADDRESS,
LEXEME, SYMBOL, STRING, NUMBER, INTEGER, FLOAT

4-5

Systmes de Productions
Exemple:

Sance 4

(deftemplate personne
; une relation pour une
personne
"record pour une personne" ; commentaire optionnel
(slot name
; nom de la personne
(default "Pierre Dupont")) ; par dfaut
(slot age
; ge de la personne
(default -1))
; si on ne sait pas
)
On peut crer une instance par :
(assert (person))
(assert (person (name "joe")))
(assert (person (name "jim") (age 39)))
CLIPS> (facts)
f-0
(person (name "Pierre Dupont") (age -1))
f-1
(person (name "joe") (age -1))
f-2
(person (name "jim") (age 39))
For a total of 3 facts.
Commandes pour les templates :
(list-deftemplates)
(ppdeftemplate <template-name>)
(undeftemplate <template-name>)
exemples:
CLIPS> (list-deftemplates)
person
For a total of 1 deftemplate.
CLIPS> (ppdeftemplate person)
(deftemplate person "record pour une person"
(slot name (default "Pierre Dupont"))
(slot age ((default -1)))
CLIPS> (undeftemplate person)
On peut dfinir les "types" et valeurs par dfaut.
On peut fournir les symboles possibles avec "allowed-symbols"

4-6

Systmes de Productions
Exemple :

Sance 4

(deftemplate person
;
une relation pour une
personne
"record pour une personne" ; commentaire optionnel
(slot name
; nom de la personne
(type STRING)
(default "Pierre Dupont")) ; Par dfaut
(slot age
; masculin ou fminine
(type NUMBER)
(default -1)
; si on ne sait pas
(range -1 127)) ; declare les valeurs possible
(slot metier
; sa mtier
(type SYMBOL)
(allowed-values artiste ingenieur comercant)
(default comercant)
)
)
Pour les nombres on peut dfinir le "range".
(slot age
(type NOMBRE)
(range -1 120))
deffacts
Un ensemble de faits peut tre associ par une expression "deffacts"
(deffacts <NOM> ["<commentaire>"]
[(<<FAIT-1>>) (<<FAIT-2>>) ... (<<FAIT-N>>) )
exemples :
1) les faits "initial-facts" sont affirms par un "reset"
(deftemplate emplacement
(slot nom (type SYMBOL) (default NIL))
(slot x (type NUMBER) (default -1))
(slot y (type NUMBER)(default -1))
(multislot voisins (default NIL))
)
(deffacts reseaux-d-emplacements
(emplacement (nom A) (x 0) (y 0) (voisins B C))
(emplacement (nom B) (x 0) (y 1) (voisins A D))
(emplacement (nom C) (x 1) (y 0) (voisins A I))
)
4-7

Systmes de Productions

Sance 4

2) Les autres faits sont aussi affirms par un "reset"


(deffact faits-de-nuit
"Ceux-ci sont vrai la nuit"
(soleil couch)
(toiles visibles)
)

4-8

Systmes de Productions

Sance 4

Les Rgles en CLIPS


Syntaxe du "defrule"
(defrule <rule-name> [<comment>]
[<declaration>]
; Rule Properties
<conditional-element>*
; Left-Hand Side (LHS)
=>
<action>*)
; Right-Hand Side (RHS)
Si la rgle <rule-name> n'existe pas, elle est dclare.
Si une rgle avec <rule-name> existe, elle est remplace par defrule.
Il n'y a pas de limites de nombres de conditions ou nombres d'actions.
Les actions sont excutes d'une manire squentielle.
S'il n'y a pas de "conditional-element", "(initial-fact)" est pris par dfaut
<conditional-element> ::= <pattern-CE> |
<assigned-pattern-CE> |
<not-CE> |
<and-CE> |
<or-CE> |
<logical-CE> |
<test-CE>

Une condition (CE) peut tre une liste dattributs ou un Template.


Liste : (<constant-1> ... <constant-n>)
Deftemplate :
(<deftemplate-name> (<slot-name-1> <constant-1>)

(<slot-name-n> <constant-n>))

La condition peut tre un littral (constant) ou ce peut contenir les variables.

4-9

Vous aimerez peut-être aussi