Académique Documents
Professionnel Documents
Culture Documents
27 octobre 1999
Liste de Faits........................................... 4
Les types prdfinis en clips..........................................5
Deftemplates................................................................5
deffacts.......................................................................7
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
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
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
4-8
Systmes de Productions
Sance 4
(<slot-name-n> <constant-n>))
4-9