déc 20 2007
Système Expert en Smalltalk
Système expert de diagnostic de panne de connexion Internet
Un système expert est un outil permettant de mettre en application un type d’intelligence artificielle. Son rôle est de reproduire le raisonnement d’un expert dans un domaine donné. Le premier système expert se nomme Dendral et permet d’identifier des constituants chimiques.
Pour réaliser une expertise, il doit proposer des solutions à des problèmes qui lui sont posés. Il fait cela en posant des questions aux utilisateurs et en fonction de leurs réponses, pose de nouvelles questions tout en restant cohérent avec les précédentes jusqu’à ce qu’il n’y ait plus de questions cohérentes à poser et qu’il ait proposé une solution. Par exemple, dans le système expert nommé Mycin permettant d’identifier des agents infectieux, une question peut porter sur le type de l’organisme, et propose deux choix, il est un bâtonnet ou une coque. Si la réponse donnée est bâtonnet, une des questions restant possibles ne pourra pas porter sur des médicaments permettant d’éradiquer les coques.
Pour fonctionner, un système expert est représenté par les éléments suivants: une base de connaissances constituée d’une base de faits et d’une base de règles puis un moteur d’inférence.
Lire la suite (pdf)
La base de faits en XML
La base de règles en XML
Mise à jour du 29/12/2007
Ce programme suscitant un peu d’intérêt, je joins les sources complètes. A défaut d’une image de Visual Works, je donne le fichier généré lors d’un « File out…» du package. Ce procédé permet de garantir la compatibilité entre les différents systèmes d’exploitation.
Afin d’importer ce fichier, Ouvrir un nouveau « System browser» et créer un nouveau package. Puis, dans le menu « Package» , choisir « File into…» et selectionner le fichier joint.
Enfin, pour l’utiliser, voici le code à copier/coller (en remplaçant les chemins de vos fichiers XML) dans un workspace (F6 depuis la fenêtre principale) :
faits := FaitsCollection new.
faits load: '/home/uself/AccessoiresLinux/Developpement/Smalltalk/_Perso/faits.xml'.
regles := ReglesCollection new.
regles load: '/home/uself/AccessoiresLinux/Developpement/Smalltalk/_Perso/regles.xml'.
moteur := Moteur new.
lanceur := LanceurModel new regles: regles ; faits: faits ; moteur: moteur.
LanceurSystemeExpert openWithModel: lanceur.
Selectionner le tout, puis un clic droit, « Do it» permettra de lancer l’interface de manière à gérer les règles et les faits ainsi qu’à lancer le moteur d’inférence.
Pour rappel, ce programme a été développé sous Visual Works 7.5.

bonjour Romain
je suis intéresse par votre système expert en smaltalk car je suis spécialiste en analyse vibratoire et je recherche à créer gratuitement un système expert sur ce sujet
seriez-vous pret à me preter, par exemple, votre code source en smalltalk et java pour que je modifie les base de faits et de regles pour en faire un système d’aide au diagnostic vibratoire qui pourrait être disponible sur internet sur votre site.
salutations
merci
jl
Bonsoir,
Bien entendu, je suis pret a vous fournir mes sources. Malheureusement, elles ne sont disponible qu’en Smalltalk (visualworks 7.5). Le pdf joint à l’article présente les points clés du developpement, mais je mettrai l’image VisualWorks d’ici peux si vous le désirez. Ce système expert est générique et peut-etre utilisé pour votre domaine d’application juste en modifiant la base de règle. Par contre, la retranscription en Java ne sera peut être pas simple car l’évaluation et l’execution d’une règle se fait « à la volée» , sans recompilation.
Merci de l’intérêt que vous présentez pour ce programme.
Cordialement,
Romain Bouleis
Bonjour Romain,
merci pour votre réponse
je suis effectivement interessé par le source en smalltalk (visualworks 7.5 que je viens de télécharger sur mon pc windows)
n’étant pas un expert en programmation, je souhaite simplement modifer la base de règles pour en faire un début de système expert en analyse vibratoire.
Est-il possible avec cette version de visualworks 7.5 de compiler le source pour obtenir un fichier executable ?
salutations
jl
Bonsoir,
J’ai mis à jour le billet avec les sources. Ayant développé sous Linux, je n’ai pas mis l’image car elle n’aurai pas été compatible avec Windows, mais un fichier contenant le package.
Malheureusement, il n’est pas possible d’obtenir un exécutable Smalltalk, il faut nécessairement une machine virtuelle (tout comme en Java). Dans le cas de ce programme, la machine virtuelle doit être Visual Works. C’est très « dommage» , mais nécessaire au vue des fonctionnalités du langage (pas de limite dans la taille des nombres par exemple).
Si vous décidez de créer des fichiers de règles et de faits pour un système d’analyse vibratoire, je me ferrai un plaisir de les diffuser ici.
Très sympa votre blog Monsieur Bouleis, vraiment !
Mes amitiés.
Olivier
Merci beaucoup Olivier !
Bonjour,
J’ai écrit un système expert en php (donc directement utilisable sur un site web). Pour le moment j’ai une version qui est vraiment à l’etat de brouillon mais qui tourne. Si vous etes intéressés je peux vous montrer comment elle marche : si vous voulez porter vos exemples dessus.
N’ésitez pas à me contacter.
Tom
Bonjour Romain,
Votre projet est très propre, bravo !
A propos des executable en Smalltalk, il est possible de les construire en utilisant ResourceHacker, délivré par Cincom. Plus d’infos dans le sous-dossier vw7.5nc>Packaging>win . Il faut d’abord utiliser la parcel RuntimePackager pour créer l’image « épurée» puis sur Windows utiliser ImageCompressor et enfin ResourceHacker. Un peu fastidieux mais ça marche.
Inconvénient, la virtual machine est inclue dans le .exe donc la taille est théoriquement de 15Mo. Même après compression, ça reste à 5-7Mo
Florent
Bonjour Flo,
Je suis un peu pris pour le moment, mais j’essayrai votre solution dès que possible, et si le résultat est concluant, je mettrai l’application exécutable ici.
Merci pour votre intérêt.
Romain
bonjour
pouvez vous Monsieur me donner plus d’information a propos ce system surtout les regles et les faits et quelle est la langage utilise(1 ordre ,2ordre00?)
Merci a l’avance
Bonjour,
Très intéressant ce post, nous avons conçu un système expert sur une base de PHP. Il est capable de s’adapter sur une base de connaissance.
Le système est donc capable de s’adapter à différentes problématiques.
Il est à même de poser des questions, d’extrapoler des résultats, de fournir des commentaires ciblés.
Antoine
Bonjour TOM,
Faisant suite à votre proposition , je me retrouve apres deux ans ,interessée par votre un système expert en php.
je suis etudiante .
Pourriez vosu me l’envoyer svp par email afin de s’inspirer
je vous serai tres reconnaissante
bonsoir Tom,
je me présente je suis un étudiante je suis entrain de préparer mon PFE dont le but est de construire un système expert dans le domaine de gestion médicale, s’il vous plait est-il possible de m’envoyer votre travail pour avoir une idée? j’ai de la confiance que ton SE peut m’aider.merci d’avance M.
Linky, linky, blogs we likey…
[...]while the sites we link to below are completely unrelated to ours, we think they are worth a read, so have a look[...]…