Moteurs d'inférence et systèmes experts

Définir les types permettant de représenter les entités suivantes : une base de faits est un ensemble de faits. Un fait peut être n'importe quoi (par exemple un couple (nom, valeur). Une base de règles est un ensemble de règles. Une règle est une fonction pouvant modifier une base de faits (ajout, modification ou retrait d'un ou plusieurs faits), qui s'écrit en général sous la forme : si prémisse alors conclusion, où prémisse est une liste de faits devant être vérifiés, et conclusion une liste d'actions à opérer (en général ajouter des faits). Une règle peut être marquée comme ayant déjà servi ou non ; au départ, toutes les règles sont non marquées.

Un moteur d'inférence fonctionnant en saturation (ou chaînage avant) est un programme qui applique à une base de faits toutes les règles non marquées d'une base de règle, afin d'obtenir une nouvelle base de faits. Ce principe est appliqué sur la nouvelle base de faits obtenue, jusqu'à ce que plus rien ne soit ajouté à la base. Toute règle non marquée, sélectionnée par le moteur et modifiant effectivement la base de fait, est marquée.

Un moteur fonctionnant en chaînage arrière procède à l'inverse du précédant : son objectif est de vérifier qu'un fait est vrai ou pas. Si le fait à démontrer est dans la base, le fait est trivialement vérifié. S'il n'est pas dans la base, alors le moteur recherche s'il existe au moins une règle qui conclut sur ce fait, et vérifie alors tous les faits prémisses. Si tous les prémisses sont vérifiés, la règle est applicable, et l'exécution des actions de la règle rend le fait vérifié. Si l'un des prémisses n'est pas vérifié, essaie une autre règle. Si aucune règle ne convient, le fait n'est pas vérifié.

Faire en sorte que toutes les informations puissent être entrées à partir d'un fichier texte.

Exemple : voici une petite base de règles :

règle 1 : si (poilu = oui) et (pelage = rayé) et (moustaches = oui) alors (animal = tigre)

règle 2 : si (poilu = non) et (poids > 2t) alors (Animal = éléphant)

règle 3 : si (poilu = non) alors (plumage = oui)

règle 4 : si (plumage = oui) et (poids < 50g) alors (Animal = moineau)

Si une base de faits contient au départ les faits (poilu=non) et (poids=35g), le moteur d'inférence ajoute, après application de toutes les règles possibles, le fait (Animal=moineau).

Documents joints :

Un support de cours sur les systèmes experts