Vous êtes sur la page 1sur 24

Systmes Experts

3 eme Anne ENSIMAG 1999/00


James L. Crowley
Sance 6 :

10 novembre 1999

Systmes de Productions : CLIPS 6.0


L'algorithme RETE ................................... 3
Le rseau de dcisions ..................................................3
L'arbre de jonctions : l'unification de faits.....................5
Remarque sur la complexit :........................................6

L'Agenda ............................................... 7
Slection (rsolution de conflit) :..................................7
Strategies de rsolution de conflit : ................................8
Illustration de lAgenda : ..............................................9
Salience :................................................................... 10
Hirarchie des Saliences :............................................ 10

Phases et lments de contrle.....................12


Expression de la structure de contrle par rgles........... 14
Expression dclarative de la structure de contrle ......... 16
Autres formes de structure de contrle......................... 16

Arbres de dcisions ..................................18


Classification des animaux........................................... 19
Arbre de dcision par chanage arrire :....................... 23

Systmes de Productions
Architecture d'un systme de production
Mmoire de Travail
("Facts List")
Interface
Utilisateur

MATCH
(Rete)

Sance 6

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

6-2

Systmes de Productions

Sance 6

L'algorithme RETE
Dans un systme de productions, en principe, pour chaque condition de chaque
rgle, il faut parcourir la liste des faits.
Afin dviter le cot de calul CLIPS (et OPS-5 et ART ) sont construits avec
l'algorithme RETE.

MT

Match
Rete

Agenda

Rgles

RETE est un algorithme incrmental d'unification.


De ce fait, RETE rduit fortement le temps d'execution d'un systme d'xecution.
L'algorithme RETE "vite" l'itration.
RETE vite l'itration. Il est incrmental. Il fonctionne avec les modifications
(assert, retract, modify) de la liste des faits (faits).
RETE utilise un rseau de dcisions fait par la compilation des rgles.
L'arbre de dcisions contient l'information de la mmoire de travail.
RETE et le mot latin pour rseau.
Une modification de la mmoire de travail est propage travers un "rseau"
pour engendrer des modifications dans l'agenda.
L'agenda est compos d'une liste d "activations".
Le rseau de dcisions
La partie condition des rgles est compose de tests ("CONDITIONS").
(defrule nom
(condition-1)
(condition-2)
=>
(actions)
)
6-3

Systmes de Productions

Sance 6

Chaque condition de chaque rgle est compile en filtres :


Condition
Rgle

MT

Condition

Condition

Les filtres de conditions sont indexs par


Le "type" d'une template, ou
Le premier champs d'une liste.

Rgle

Agenda

(Depuis clips 6, le premier champs d'une liste sert de "type" pour la liste.
D'o la ncessit de commencer les faits par un "symbole"
Ces filtres forment "l'arbre de patterne". (un arbre de dcision).
La sortie est un "arbre de jonction.
Exemple d'un arbre de patterne :
(deftemplate personne
(slot nom)
(slot metier)
)
(defrule ski-dimanche
(aujourdhui dimanche)
(personne (metier ?p:&~pretre))
=>
(assert (fait du ski))
)

6-4

Systmes de Productions

Sance 6

Item1 = aujourdhui

item2 = dimanche

Facts

faits
Facts
type = personne

metier prete

Arbre de "Pattern"

Ski Dimanche
Arbre de jonction

L'arbre de jonctions : l'unification de faits


Pour chaque rgle il y a un arbre de jonction. Il sert
1) maintenir une liste des objets qui satisfont chaque condition de la rgle.
2) assure que les attributs variables sont les mmes.
A l'entre de l'arbre de jonction, il y a une liste de faits, ayant satisfait les
conditions (passes l'arbre de patterns).
A l'intrieur, il y a un arbre de tests pour unifier les faits.
Le tests mettent en correspondance les variables d'attibuts.
Exemple :
(defrule exemple
(personne nom ?x)
(pre-de ?x ?y)
=>

6-5

Systmes de Productions

Sance 6

Remarque sur la complexit :


Pour le temps d'excution d'un cycle :
Soit :
P : Nombre de rgles
W : Nombre d'lments dans les faits
C : Nombre de conditions dans une rgle.
Le complexit de calcul d'un cycle "recognize-act" est
Meilleur cas O(log2 P)
plus mauvais cas O(P W c)
Dans le cas normal, le croissance de temps d'excution est pratiquement
linaire avec le nombre de faits et de rgles, mais avec un taux de croissance
trs faible. On peut, ainsi, avoir les systmes avec les milliers de faits et rgles.

6-6

Systmes de Productions

Sance 6

L'Agenda
AGENDA : l'agenda est une liste des instances des rgles associes avec les
variables. Chaque activation est une association des faits et rgles.
Refraction:

une fois qu'un fait associ une rgle est excut,


lassociation est limine de l'agenda.

Slection (rsolution de conflit) :


Principes de slction :
Rfraction : une association de rgles et faits ne peut tre excute quune fois.
Recency : les activations sont tries la base du plus grand indice de leurs faits.
Variation : MEA, le fait satisfaisant la premire condition dtermine le
rcency.
Spcificit : les activations sont tries la base du nombre de tests dans les
conditions.
Par exemple :
(defrule example
(item ?x ?y ?x)
(test (and (numberp ?x) (> ?x (+ 10 ?y)) (< ?x 100)))
=>)

a specificity 2

6-7

Systmes de Productions

Sance 6

Strategies de rsolution de conflit :


CLIPS contient sept modes de "slection" (stratgies de rsolution de conflit)
1) "Depth Strategy" (par profondeur): option par dfaut.
L'agenda est tri par "saliency",
pour des valeurs de "saliency" gales,
l'agenda est une PILE d'activations. (LIFO)
2) "Breadth Strategy" (largeur d'abord).
L'agenda est tri par "saliency", pour une valeur de "saliency" l'agenda
est une queue des activations. (FIFO)
3) LEX strategy (Lexographic). Pour compatibilit avec OPS-5.
L'agenda est une PILE, pas de saliency. Les activations sont tries par le
"recency" des faits. Pour les activations les
plus rcentes, les activations sont tries par le nombre de conditions. (mlange de
"depth" et "complexity").
4) MEA strategy (Means-Ends-Analysis) Pour compatibilit avec OPS-5 les
activations sont tries sur la base du recency de la premire condition de la rgle,
puis par nombres de conditions
5) Complexity Strategy : les rgles avec le plus de conditions ont priorit.
6) Simplicity : les rgles avec le moins de conditions ont priorit.
7) Random : alatoire (ordre d'entre des rgles?)
Le strategy "Depth" est recommand.

6-8

Systmes de Productions

Sance 6

Illustration de lAgenda :
(set-strategy depth)
(get-strategy)
(defrule rule-A
?f <- (a)
=>
(printout t "Rule A fires with " ?f crlf)
)
(defrule rule-B
?f <- (b)
=>
(printout t "Rule B fires with " ?f crlf)
)
(defrule rule-A-and-B
?f1 <- (a)
?f2 <- (b)
=>
(printout t "Rule B fires with A =" ?f1 " and B = " ?f2 crlf)
)
(assert (a))
(assert (a))
(assert (b))
(set-strategy depth)
(set-strategy breadth)
(set-strategy lex)
(set-strategy mea)
(set-strategy complexity)
(set-strategy simplicity)
(set-strategy random)
(set-strategy depth)

6-9

Systmes de Productions

Sance 6

Salience :
Normalement l'agenda est une pile.
CLIPS fournit une mthode de slection de priorit des rgles. "Salience"
(sailliance)
(defrule fire-first
(declare (salience 30))
(priority first)
=>
(printout t "fire me first" crlf)
)
La valeur de salience peut tre entre 10 000 et 10 000.
Les dbutants ont tendance abuser de "salience".
Cela permet de commander l'ordre d'excution des rgles. Or, justement, si le
systme est bien conu, on n'a pas besoin d'tre concern par l'ordre
exact des rgles, mais plutt des blocs de rgles.
Un systme bien fait utilisera 3 ou 4 niveaux de salience.
Il ne doit jamais tre ncessaire den utiliser plus que 7 .
En place de salience, il faut structurer les rgles avec les lments de contrle.

Hirarchie des Saliences :


En gnral dans un systme expert, il y a quatre niveaux de salience.
Je les marque ici par les chelles de 100, mais les chiffres exacts sont arbitraires.
Niveau
Contraints
Expert
Query
Contrle

Salience
300 ;; Rgles qui permettre une rduction des hypothses.
200 ;; Connaissance du domaine (infrer et trier les hypothses)
100 ;; Interroger l'utilisateur
0
;; transitions de phases.

6-10

Systmes de Productions

Sance 6

6-11

Systmes de Productions

Sance 6

Phases et lments de contrle


En gnral on cherche sparer les rgles en un ensemble excutable en parallle.
Chaque ensemble est une "phase". Les phases sont dmarques par la prsence d'un
lment dans la liste des faits du style :
(phase <NOM-DE-PHASE>)
Il faut chercher sparer le problme en phases, et crire un ensemble de rgles qui
ragissent chaque phase.
Exemple : un systme de surveillance d'un appareil lectronique (ex : satellite)
est compos de trois phases :
1) Dtection - dtection d'existence d'une panne
2) Isolation - dtermination de l'identit du composant en panne.
3) Rcupration - reconfiguration pour contourner la panne

Dtection

Identification

Recouperation

On peut imaginer trois faons de coder ces rgles :


1) Coder la condition de chaque phase dans les rgles.
Pb: les rgles deviennent complexes.
Il est difficile de dterminer quand une phase est termine.
Pb: le contrle est inscrit dans les rgles.
2) Utiliser le salience pour dfinir une hirarchie des rgles.
exemple :

Dtection : salience 3
Identification : salience 2
Recouperation : salience 1.

Pb: il est difficile d'tre sr de la squence d'excution


6-12

Systmes de Productions
3) Utiliser un lment "phase" pour marquer chaque phase et
utiliser les rgles pour exprimer les transitions.

Sance 6

Cette troisime solution est prfrable.


Les rgles de transition constituent la structure de contrle du systme.
Cette structure peut tre entirement exprime par des rgles, ou
son expression peut tre dans les faits avec quelques rgles dinterprtation.

6-13

Systmes de Productions

Sance 6

Expression de la structure de contrle par rgles


Il s'agit d'une rgle par transition d'tat.
Par exemple :
(defrule detection-vers-identification
(declare (salience -10))
?phase <- (phase dtection)
(panne detecte)
;; conditions de dtection de la panne
=>
(retract ?phase)
(assert (phase identification))
(printout t "il y a une panne!" crlf)
)
(defrule identification-vers-rcupration
(declare (salience -10))
?phase <- (phase identification)
(panne id ?p) ;; conditions didentification
panne
=>
(retract ?phase)
(assert (phase rcupration))
(printout t "Le(a) " ?p " est en panne." crlf)
)
(defrule rcupration-vers-dtection
(declare (salience -10))
?phase <- (phase rcupration)
(panne isole) ;; conditions didentification
panne
=>
(retract ?phase)
(assert (phase detection))
(printout t "panne limine" crlf)
)

de la

de la

6-14

Systmes de Productions
Puis l'intrieur de chaque phase on a des rgles de connaissance
du domaine :

Sance 6

par exemple :
(defrule trouver-panne ; une triche - on demande
(phase identification)
=>
(printout t "eh alors? quelle est cette panne? ")
(assert (panne id =(read)))
)
;; function factice pour set
(deffunction set (?a ?b)
(printout t ?a " is set to " ?b crlf))
;; tester la fonction
(set moteur off)
;; expertise du domaine
(defrule rcuprer-du-fault-moteur
(phase rcupration)
(panne id moteur)
=>
(set moteur off) ;; fonction definie par l'utilisateur.
(set back-up-moteur on)
(assert (panne isole))
)

6-15

Systmes de Productions

Sance 6

Expression dclarative de la structure de contrle


Il est possible d'exprimer les phases comme une liste dans une "deffacts".
puis utiliser une seule rgle pour effectuer la transition :
(deffacts controle-liste
(phase dtection)
(phase-apres dtection identification)
(phase-apres identification rcupration)
(phase-apres rcupration dtection)
)
(defrule control-des-phases
(declare (salience -10))
?P <- (phase ?phase)
(phase-apres ?phase ?prochaine)
=>
(retract ?P)
(assert (phase ?prochaine))
)
Autres formes de structure de contrle
Le contrle peut tre autre chose qu'une squence de phases.
Il est courant d'utiliser les arbres et les rseaux de contextes.
Arbre de phases : exemple - l'arbre de contextes de Mycin.
Rseau de phases : certains problmes se structurent en rseau
Dans ce cas, le contrle devient un parcours de graphe !
A chaque phase, nous avons un ensemble d'actions possibles.
Certaines actions sont spcifiques au problme
(connaissance du domaine)
Certaines de ces actions nous amnent d'autres phases (contrle)

6-16

Systmes de Productions

Sance 6

6-17

Systmes de Productions

Sance 6

Arbres de dcisions
Les arbres de dcision sont utiles pour les problmes de classification.
Caractristiques d'un problme de classification :
1) L'ensemble des rponses possibles est fini et connu davance.
(exemples : problme de diagnoses et de taxonomie.
2) L'espace de solutions est rduit par une srie de tests.
Les arbres de dcisions ne fonctionnent pas bien pour les problmes de
planification, ordonnancement, ou synthses.
Ils fonctionnent mal s'il faut construire la solution partielle chaque tape.
Un arbre de dcisions est compos de noeuds et de branches.
Les noeuds peuvent tre les dcisions ou les rponses.
Les ensembles de rponses possibles sont les feuilles de l'arbre.

6-18

Systmes de Productions

Sance 6

Classification des animaux


Exemple d'un arbre de dcisions tant un systme pouvant "apprendre" identifier
les animaux :
L'arbre sera reprsent par les noeuds du type dcision ou rponse :
Racine
(Decision)

n1
decision

n3
reponse
chat

n2
reponse
serpent

n4
reponse
chien

(deffacts arbre
(noeud racine dcision "Est-ce un animal de sang-chaud?" n1
n2)
(noeud n1 decision "Est-ce quil ronronne ?" n3 n4)
(noeud n2 reponse serpent)
(noeud n3 reponse chat)
(noeud n4 reponse chien)
)
;; vielle rgle d'init
(defrule init
(initial-fact)
=>
(assert (noeud-actuel racine))
)

6-19

Systmes de Productions
;; rgle demander pour le noeud de dcision

Sance 6

(defrule faire-dcision
?N <- (noeud-actuel ?nom)
(noeud ?nom decision ?q ?oui ?non)
=>
(retract ?N)
(format t "%s (oui ou non) " ?q)
(bind ?rponse (read))
(if (eq ?rponse oui)
then (assert (noeud-actuel ?oui) )
else (assert (noeud-actuel ?non))
)
)
;; rgle pour traiter les rponses
(defrule faire-rponse
?N <- (noeud-actuel ?nom)
(noeud ?nom rponse ?r)
=>
(printout t "Je pense que c'est un " ?r crlf)
(printout t "c'est correct ? (oui ou non) ")
(bind ?rep (read))
(if (eq ?rep oui)
then (assert (phase demande-encore))
(retract ?N)
else (assert (phase corrige-rponse))
)
)
;; rgle pour essayer encore
(defrule essaie-encore
?phase <- (phase demande-encore)
=>
(retract ?phase)
(printout t "essaie encore ? (oui ou non))
(bind ?rep (read))
(if (eq ?rep oui)
then (assert (noeud-actuel racine))
else (save-facts "animal.dat")
)
)

6-20

Systmes de Productions
;; rgles pour apprendre une nouvelle rponse

Sance 6

(defrule corrige-rponse
?P <- (phase corrige-rponse)
?N <- (noeud-actuel ?nom)
?D <- (noeud ?nom rponse ?r)
=>
(retract ?P ?N ?D) ;;
demander la bonne rponse
(printout t "quel est l'animal? ")
(bind ?new (read))
(printout t
"quelle question poser pour distinguer " crlf)
(printout t "un " ?new " d'un " ?r "? ")
(bind ?question (readline))
(bind ?newnode1 (gensym*))
(bind ?newnode2 (gensym*))
(assert (noeud ?newnode1 reponse ?new))
(assert (noeud ?newnode2 reponse ?r))
(assert
(noeud ?nom decision ?question ?newnode1 ?newnode2))
(assert (phase demande-encore))
)
;; Rgles d'ouverture et de lecture du fichier animal.dat
(defrule init
(initial-fact)
=>
(assert (file =(open "animal.dat" data "r")))
)

6-21

Systmes de Productions
;; ouverture et fermeture du fichier animal.dat

Sance 6

(defrule no-file
?f <- (file FALSE)
=>
(retract ?f)
(assert (noeud-actuel racine))
)
;; lecture du fichier
(defrule init-file
?f <- (file TRUE)
=>
(bind ?in (readline data))
(printout t ?in crlf)
(if (eq ?in EOF) then (assert (eof))
else
(assert-string ?in)
(retract ?f)
(assert (file TRUE))
)
)
(defrule eof
(declare (salience 30))
?f <- (file TRUE)
?eof <- (eof)
=>
(retract ?f ?eof)
(close data)
(assert (noeud-actuel racine))
)

6-22

Systmes de Productions

Sance 6

Arbre de dcision par chanage arrire :


Le chanage arrire est utilis pour les systmes de diagnoses,
et le raisonnement dirig par les buts.
PROLOG est mieux adapt au chanage arrire, mais
le chanage arrire peut tre programm en CLIPS.
Un exemple est le systme de MYCIN
Un autre exemple est le systme "ANIMAL.CLP"
Pour programmer un chanage arrire, reprsenter les faits par les paires :
(<ATTRIBUTE> <VALUE>)
Puis faire un interprter des rgles en CLIPS,
entrer les rgles dans la base de faits :
(if <CONDITION> then <GOAL-ATTRIBUTE> is <VALUE>)
o <CONDITION> peut tre :
<ATTRIBUTE> is <VALUE> ou
<ATTRIBUTE> is <VALUE> and <CONDITIONS>
Une rgle d'interprtation est :
(defrule interpret
(but ?nom)
(not (attribut ?nom ?))
(if ?variable $? then ?nom ? ?)
=>
(assert (but ?variable))
)
quand il n'y a pas de rgle, on demande :
(defrule demander-attribut-valeur
?but <- (but ?nom)
(not (attribut ?nom ?))
(not (if ?variable $? then ?nom ? ?))
=>
(retract ?but)
(printout t "Quelle est le valeur de " ?nom "? ")
(assert (attibut ?nom =(read)))
)
6-23

Systmes de Productions

Sance 6

6-24

Vous aimerez peut-être aussi