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.