Académique Documents
Professionnel Documents
Culture Documents
▪ Introduction
▪ cycle de fonctionnement du MI
▪ Caractéristiques d’un Moteur d’inférence
▪ Exemple de MI à chaînage avant en profondeur & algorithme
▪ Exemple de MI à chaînage avant en largeur & algorithme
▪ Exemple écrit en CLIPS
2
introduction
▪ Un Moteur d'Inférence (MI) : C’est un programme ou
procédure qui simule le raisonnement humain par
applications répétitives du savoir faire de l’expert (règles
& faits) pour résoudre un d’un problème donné par
déduction de nouveaux faits ou résultats.
3
introduction
▪ Au cours du traitement d’un problème, le moteur d’inférence
génère de nouveaux faits qui enrichiront l’ancienne base des
faits et applique de nouvelles règles et ainsi de suite jusqu’à
l’aboutissement au résultat cherché (succès) ou à une impasse
(échec).
4
introduction
▪ Le Moteur d’inférence est une partie du SE qui est indépendante de la
connaissance. Ainsi, un même Moteur d’inférence peut être appliqué à des
bases de connaissances différentes pour constituer à chaque fois un SE
différent. C’est le cas de Prolog qui possède au un moteur d’inférence
fonctionnant en chaînages arrière ou Clips qui a son tour fonctionnent en
chaînage avant.
▪ Sa généralité est telle qu’il peut déduire des faits dans plusieurs contextes.
5
Cycles d'un Moteur d’Inférence
6
phase d’évaluation
1. la sélection
2. Le filtrage (pattern matching)
3. La résolution de conflits
7
phase d’évaluation
8
phase d’évaluation
9
phase d’évaluation
3. La résolution de conflits : Parmi les règles retenues suite au
filtrage, le moteur décide de la (des) règle(s) qui sera (seront)
exécutée(s).
Ce choix est souvent indépendant du contexte d’application et de la
sémantique des règles mais généralement guidé par des soucis
d’efficacité (par exemple, choix des règles les moins complexes).
Toutefois, des informations heuristiques ou des méta-règles peuvent
être exploitées pour fixer un ordre de priorité entre ces règles.
10
phase d’exécution
11
Cycle de base de fonctionnement d’un
Phase d’évaluation Phase d’exécution
Moteur d’inférence.
Sélection
d’un sous
Exécution Cycle de base de fonctionnement d’un
ensemble R1 € BR
Des actions des règles
Moteur thermique.
de l’ensemble R3
Filtrage
déterminer
l’ensemble de conflit Mise à jour
R2 C R1 De la base des
connaissances
Résolution de conflit
déterminer
l’ensemble de conflit
R3 C R2
13
Caractéristiques d’un Moteur d’inférence
Modes d’invocation des règles :
Les moteurs d'inférences peuvent enchaîner les règles de différentes façons :
c'est ce que l'on appelle le chaînage. Les deux principaux chaînages sont le
chaînage avant et le chaînage arrière, mais il existe des moteurs possédant
un chaînage mixte .
14
Caractéristiques d’un Moteur d’inférence
Principe du chaînage avant :
Un moteur à chaînage avant est aussi appelé un moteur à inférences dirigé par les
données.
Le moteur explore donc toutes les possibilités, jusqu'à trouver le fait recherché ou
jusqu'à ne plus pouvoir appliquer de nouvelles règles.
Ce mode de chaînage est celui proposé par défaut dans des langages de type CLIPS
( C Language Integrated Production System), spécialisés dans la construction de
systèmes experts).
15
Caractéristiques d’un Moteur d’inférence
Un Exemple :
soit BDF = {A, B, C, D}
et soit la règle : A,C ➔ G
16
Caractéristiques d’un Moteur d’inférence
On réitère, jusqu'à ce que les nouveaux buts à atteindre soient présents dans
la base de faits. Si un fait est absent de la base de faits ou prouvé comme
faux, alors on sait que la règle ne peut pas s'appliquer (backtracking).
17
Caractéristiques d’un Moteur d’inférence
Un exemple :
Soit le but à établir P, et soit la règle :
A, B, C ➔ P
Pour résoudre le problème P, il suffit de résoudre les sous problèmes A, B et C.
Ce mécanisme sera répété jusqu’à ce que la dernière liste de faits à établir soit
entièrement dans la BDF.
L’étape de filtration consiste à rassembler toutes les règles dont les conclusions
contiennent le fait à établir.
18
Caractéristiques d’un Moteur d’inférence
Chaque mode de chaînage a ses avantages et ses inconvénients :
19
Caractéristiques d’un Moteur d’inférence
Chaînage mixte
Un mélange des deux chaînages a alors été proposé : le chaînage mixte. Dans
ce nouveau chaînage, on va alterner des périodes en chaînage avant (pour
déduire de nouveaux faits de ceux que l'on vient juste de prouver) et des
périodes de chaînage arrière (dans lesquelles on cherche de nouveaux buts à
prouver) .
20
Caractéristiques d’un Moteur d’inférence
Stratégies de recherche
21
Caractéristiques d’un Moteur d’inférence
Stratégies de recherche
BFS DFS
22
Caractéristiques d’un Moteur d’inférence
Stratégies de recherche
Stratégie en largeur d'abord : le M.I. on développe toutes les règles d’un même
niveau de l’arbre l’une après l’autre avant de passer au niveau suivant.
stratégie profondeur d'abord : le M.I. passe d’un niveau à un autre à chaque fois
qu’on déclenche une règle et on ne revient aux règles restantes que si on épuise
toutes les règles en profondeur sans avoir trouver la solution.
23
Caractéristiques d’un Moteur d’inférence
Régime de contrôle
par tentatives : peuvent remettre en cause des règles déjà appliquées si elles n’ont
pas abouti, et faire un backtracking en retirant aussi les faits qui en étaient déduits.
24
Caractéristiques d’un Moteur d’inférence
Monotonie
Moteur d’inférence monotone : garde chaque fait initial ou ajouté à la BDF jusqu’à
la fin de la recherche.
25
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
26
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
27
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
28
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
29
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
30
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
31
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
32
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
33
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
34
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
35
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
36
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
37
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
38
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
39
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
40
Exemple : MI à chaînage avant en profondeur d'abord monotone avec régime irrévocable
41
/* Soient : BF la base de faits, BR la base des règles
Conditions(Ri) les conditions de déclenchement de la règle Ri de BR
Conclusion(Ri) les conclusions de la règle Ri de BR
F le fait à établir
FIN : variable booléenne initialisée à VRAI
Algorithme chaînage avant en profondeur d'abord monotone avec régime irrévocable */
FIN = true
Tantque not(F In BF)&(FIN = true) Faire
FIN = false
Pour toutes (Ri) de BR Faire
Si Conditions(Ri) In BF alors
{ BF = BF + Conclusion(Ri)
BR = BR – (Ri)
FIN = true }
finSi
finPour
fintantque
Si (F In BF) alors
renvoyer(‘ ... Succès ... ’)
Sinon
renvoyer(‘ ... Échec ... ’)
finSi
42
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
43
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
44
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
45
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
46
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
47
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
48
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
49
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
50
Exemple : MI à chaînage avant en largeur d'abord monotone avec régime irrévocable
Règle désactivée
Règle activée
51
/* Soient : BF la base de faits, BR la base des règles
Conditions(Ri) : les conditions de déclenchement de la règle Ri de BR
Conclusion(Ri) : les conclusions de la règle Ri de BR
F : le fait à établir
FIN : variable booléenne initialisée à VRAI
Q : file d’attente
Algorithme chaînage avant en largeur d'abord monotone avec régime irrévocable */
FIN = true
Tantque not(F In BF)&(FIN = true) Faire
FIN = false
Pour toutes (Ri) de BR Faire
Si Conditions(Ri) In BF alors Enfiler(Ri,Q) finSi
finPour
Tantque Q ≠ Ø Faire
{ R= Défiler(Q)
BF = BF + Conclusion(R)
BR = BR – (R)
FIN = true }
fintantque
fintantque
Si (F In BF) alors
renvoyer(‘ ... Succès ... ’)
Sinon
renvoyer(‘ ... Échec ... ’)
finSi 52
Exemple écrit en CLIPS
; Base-Des-Faits:
(deffacts Faits
(A)
(D)
(E)
(G)
)
; Base-des-Regles:
(defrule R1 (and (A) (B) (C)) => (printout t "la règle R1 se déclenche" crlf) (assert (H)))
(defrule R2 (and (A) (U) (C)) => (printout t "la règle R2 se déclenche" crlf) (assert (F)))
(defrule R3 (and (E) (G) (B)) => (printout t "la règle R3 se déclenche" crlf) (assert (S)))
(defrule R4 (and (D) (G)) => (printout t "la règle R4 se déclenche" crlf) (assert (C)))
(defrule R5 (and (A) (E)) => (printout t "la règle R5 se déclenche" crlf) (assert (B)))
(defrule R6 (and (U) (S) (T)) => (printout t "la règle R6 se déclenche" crlf) (assert (F)))
(defrule R7 (and (G) (H)) => (printout t "la règle R7 se déclenche" crlf) (assert (R)))
(defrule R8 (and (D) (E)) => (printout t "la règle R8 se déclenche" crlf) (assert (T)))
(defrule R9 (and (R) (S) (H)) => (printout t "la règle R9 se déclenche" crlf) (assert (F)))
(defrule R10 (and (A) (U)) => (printout t "la règle R10 se déclenche" crlf) (assert (B)))
53
54
55
56
57
58