IA : Réalisation d`un mini système expert

Transcription

IA : Réalisation d`un mini système expert
Année 2003-2004
DEUG MD 2ème année
Structures en Java (projet)
IA : Réalisation d'un mini système expert
Mahdi Zargayouna
Introduction
Considérons le travail de diagnostic d’un médecin : afin de découvrir la maladie d’un patient, ce premier se base sur
les symptômes relevés. Il dispose d’une connaissance des symptômes et des maladies associées sous la forme : Si
(symptômei et symptômej) alors (maladiek). Un système expert reproduit ce mode de raisonnement : la déduction de
nouvelles connaissances. Un système expert est un logiciel qui reproduit le comportement d'un expert humain
accomplissant une tâche intellectuelle dans un domaine précis.
Définitions
•
•
•
•
•
•
Une proposition est une expression quelconque qui peut être évaluée à vrai ou à faux (ex : « le patient a un
écoulement nasal »).
Un fait est une proposition évaluée à vrai.
Une règle d’inférence se présente sous la forme (prémisse) → (conclusion) ; où prémisse = ensemble de
propositions et conclusion = une proposition.
Une base de connaissances est composée d'un ensemble de faits et de règles d'inférence.
Un moteur d’inférence est un programme qui permet, à partir d’une base de règles et d’une base de faits, de
déduire de nouveaux faits.
Un système expert est composé d’une base de connaissances, d’un moteur d’inférence et d’une
interface utilisateur.
Les principes de base d'un système expert
Une règle d'inférence est de la forme: Si prémisse alors conclusion. La partie gauche exprime les conditions
d'applicabilité de la règle. Elle peut contenir une conjonction de propositions. La partie droite représente la
conclusion, qui est une assertion (proposition) à ajouter à la base de faits.
Le cycle de base d'un moteur d'inférence comprend deux phases:
•
•
la phase de filtrage détermine l'ensemble des règles applicables : une règle est applicable si toutes
les propositions de sa prémisse sont dans la base de faits.
la phase d'exécution consiste à appliquer la première règle applicable; cette action consiste à ajouter
un fait à la base.
Trois modes de raisonnement peuvent être utilisés:
•
•
•
le chaînage avant ;
le chaînage arrière ;
Le chaînage mixte.
Dans le cadre de ce projet, seul le chaînage avant est exigé.
Le chaînage avant
Dans le mode de chaînage avant, le moteur d'inférence part des faits pour arriver au but, c'est-à-dire qu'il ne
sélectionne que les règles dont les conditions de la partie gauche sont vérifiées (∈ base de faits), puis applique
la première de ces règles, ce qui ajoute la conclusion à la base. Ce processus est réitéré jusqu'à ce qu'il n'y ait plus de
règles applicables ou que le but soit atteint.
Voici l’algorithme du chaînage avant :
ALGORITHME DU CHAINAGE AVANT
ENTREE : BF (base de faits), BR (base de règles), F (proposition à vérifier)
DEBUT
TANT QUE F n'est pas dans BF ET QU'il existe dans BR une règle applicable FAIRE
Prendre la première règle applicable R
BR = BR - R (désactivation de R)
BF = BF union conclusion(R) (déclenchement de la règle R, sa
conclusion est rajoutée à la base de faits)
FIN TANT QUE
SI F appartient à BF ALORS
F est établi (succès)
SINON
F n'est pas établi (échec)
FIN
Voici un exemple d’exécution :
Base de règles :
R1 : A et B → C
R2 : C et D → F
R3 : F et B → E
R4 : F et A → G
R5 : G et F → B
Base de faits (BF) initiale : {A, C, D}
Fait à démontrer : E
Itération I
E ∉ BF.
Règles déclanchables : {R2} // seule la totalité de la prémisse de R2 appartient à BF
Déclenchement de R2 : ajout du fait F
Base de règles I
R1 : A et B → C
R2 : C et D → F // règle inactive
R3 : F et B → E
R4 : F et A → G
R5 : G et F → B
Base de Fait I
{A, C, D, F}
Itération II
E ∉ BF .
Règles déclenchables : {R4}
Déclenchement de R4 : ajout du fait F
Base de règles I
R1 : A et B → C
R2 : C et D → F // règle inactive
R3 : F et B → E
R4 : F et A → G // règle inactive
Base de Fait I
{A, C, D, F, G}
R5 : G et F → B
Itération III
E ∉ BF.
Règles déclenchables : {R5}
Déclenchement de R5 : ajout du fait B
Base de règles I
R1 : A et B → C
R2 : C et D → F // règle inactive
R3 : F et B → E
R4 : F et A → G // règle inactive
R5 : G et F → B // règle inactive
Base de Fait I
{A, C, D, F, G, B}
Itération IV
E ∉ BF.
Règles déclenchables : {R1, R3}
Déclenchement de R1 (la première) : ajout du fait C //existe déjà
Base de Fait I
Base de règles I
R1 : A et B → C // règle inactive
{A, C, D, F, G, B}
R2 : C et D → F // règle inactive
R3 : F et B → E
R4 : F et A → G // règle inactive
R5 : G et F → B // règle inactive
Itération V
E ∉ BF.
Règles déclenchables : {R3}
Déclenchement de R3 : ajout du fait E
Base de règles I
R1 : A et B → C // règle inactive
R2 : C et D → F // règle inactive
R3 : F et B → E // règle inactive
R4 : F et A → G // règle inactive
R5 : G et F → B // règle inactive
Base de Fait I
{A, C, D, F, G, B, E}
Itération VI
E ∈ BF.
E établi (prouvé) : Succès
Trace = {R2, R4, R5, R1, R3}
Travail demandé
Le travail demandé est de réaliser un mini système expert qui pourra fonctionner en chaînage avant sur un domaine
d'expertise choisi. Nous demandons que le système expert possède les caractéristiques suivantes:
•
•
Qu'il soit utilisable pour différentes bases de connaissance. En effet, les systèmes experts sont des
systèmes dans lesquels la base de connaissance est indépendante du moteur d'inférence qui utilise
le contenu de cette base. La base de règles devra être lue à partir d'un fichier.
Que l'ordre dans lequel les règles sont introduites dans le fichier n’ait pas d'influence sur les
résultats.
Il faut programmer une interface graphique qui permet de sélectionner le fichier base de règles, d’entrer la base de
faits, de visualiser le résultat : soit échec (fait improuvable), soit succès et dans ce cas, il faut afficher la base de faits
finale + la trace (la séquence de règles appliquées, voir exemple plus haut).
Un rapport décrivant le fonctionnement de l’application (diagramme de classes, variables d’instances, méthodes etc.)
doit être rendu.
L’écriture d’une règle doit suivre la syntaxe suivante :
« Si ((proposition1) et (proposition2) et … et (propositionn)) alors (propositionk) »
Vous penserez à traiter les exceptions et à générer des messages d’erreurs (« fichier inexistant, structure des règles
incorrecte etc.)
Seul le chaînage avant est exigé, un bonus est réservé à ceux qui implémenteront le chaînage arrière.
Bon travail.