begin process at 2012 02 12 11:39:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Shell

 > IA : VBBRAINBOX : UN SYSTÈME EXPERT D'ORDRE 0+ EN VB .NET

IA : VBBRAINBOX : UN SYSTÈME EXPERT D'ORDRE 0+ EN VB .NET


 Information sur la source

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Shell Source .NET ( DotNet ) Classé sous :système expert, IA, Intelligence artificielle, inférence, règle Niveau :Expert Date de création :02/05/2003 Date de mise à jour :04/04/2010 10:11:06 Vu / téléchargé :18 089 / 1 867

Auteur : Patrice99

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Vous vous souvenez du fameux syllogisme avec Socrate ?

TOUT HOMME EST MORTEL
OR SOCRATE EST UN HOMME
DONC ?
DONC SOCRATE EST MORTEL

C'était avec le logiciel IAVB, un mini système expert issu de celui de Philippe LARVET :
www.vbfrance.com/article.asp?Val=2204

Hé bien cette fois, il ne s'agit plus seulement d'un logiciel ludique mais bel et bien d'un véritable système expert d'ordre 0+, issu d'un programme du même auteur : Turbo-Expert 1.2 en VB6 de Philippe LARVET.

Un système expert est un logiciel qui, à partir d'une base de règles (BR) et d'une base de faits (BF), cherche à établir des conclusions grâce à son moteur d'inférence (MI). C'est un véritable système de programmation déclarative, où les données sont séparées du code de l'application (le MI), et traitées dans un ordre quelconque, contrairement à la programmation procédurale.
Il est capable de manipuler des expressions logiques d'ordre 0+, c'est-à-dire du type :
Si Distance < 2 km Alors AllerAPied
Le MI fonctionne en chaînage avant et en régime irrévocable seulement (une fois qu'un nouveau fait a été déduit, il n'y a pas de "backtrack" ou retour en arrière possible), selon la logique monotone ou bien non monotone, c'est configurable.

J'ai converti le programme VB6 (Turbo Expert 1.21, qui est inclus dans le .zip) en VB .NET, et j'y ai ajouté un calcul de logique floue, du type de celui de MYCIN conçu en... 1975 !!!
Selon la configuration, la logique floue ne modifie pas le déroulement du programme, on ajoute seulement un degré de fiabilité aux règles et aux faits initiaux, et on en déduit des indices de vraisemblance pour les conclusions obtenues. Il y a cependant un mode de fonctionnement plus cohérent dans lequel l'interprétation de la logique floue peut changer le déroulement de l'expertise.

J'ai aussi conçu une base de données pour simplifier la création d'application, et on peut échanger des applications en exportant des petits fichiers textes de la base.

En somme, VBBrainBox = Turbo-Expert + Logique Floue + Base de données.

En bonus : une application délirante pour partir à la chasse aux trolls ! fumage de moquette garanti :-)


 Conclusion

Note : pour ceux qui n'ont pas Visual Studio .NET, l'exécutable est inclus dans le .zip (il suffit d'avoir le framework .NET qui est gratuit). A la rigueur, il est également possible de compiler gratuitement les sources avec le SDK, mais il faudrait alors trouver un bon éditeur de code source. Sinon, il reste la version VB6, mais son code n'est pas aussi simple que celui de VBBrainBox (voir la doc pour connaître les limites de la version VB6).

A vous de jouer maintenant !

Par Patrice Dargenton
patrice.dargenton@free.fr
http://patrice .dargenton.free.fr/ia/vbbrainbox/index.html
http:/ /patrice.dargenton.free.fr/index.html

Mots clés : Intelligence Artificielle, Système expert, Logique d'ordre 0+, Logique floue, Visual Basic .NET, DOTNET.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 octobre 2004 10:14:45 :
Simple correction de commentaires dans le code.
06 novembre 2004 09:28:10 :
Un fichier en trop !
04 avril 2010 10:02:44 :
Il manquait la base DBToFile2.mdb pour l'archivage MS-Access des expertises.
04 avril 2010 10:11:06 :
Mise à jour de l'exe : recompilé en VB 2008 Express (-> ._exe_).

 Sources du même auteur

Source avec Zip FREEBOOK : MODELE ET MACRO WORD EBOOK POUR LES LISEUSES ELEC...
Source avec Zip Source avec une capture Source .NET (Dotnet) VBFILEFIND : RECHERCHE DE FICHIERS POUR REMPLACER CELLE DE W...
Source avec Zip Source avec une capture Source .NET (Dotnet) VBWINDIFF : INTERFACE D'OPTIONS POUR LE COMPARATEUR WINDIFF
Source avec Zip Source .NET (Dotnet) VBEXCELLIBRARY : LIRE RAPIDEMENT UN CLASSEUR EXCEL SANS EXCE...
Source avec Zip Source .NET (Dotnet) CRÉER UN VRAI OCX EN DOTNET

 Sources de la même categorie

Source avec Zip CHOIX DE COULEUR SOUS XP EN MODE CONSOLE par ccgousset
Source avec Zip Source .NET (Dotnet) ENVOYEUR DE MAIL EN BATCH/DOS par Ant95
Source avec Zip Source avec une capture LANCEUR REALVNC par Nobru59
Source avec Zip Source .NET (Dotnet) XGBLENDERCOMPRESSOR par XelectroX
Source avec Zip Source .NET (Dotnet) CONTRÔLER L'AUTORUN DE WINDOWS XP (ET SUPÉRIEUR) ET LES NOTI... par ShareVB

 Sources en rapport avec celle ci

JEU DU KILLER OU JEU DU 12-30 par ju67
Source avec Zip JEU TAQUIN par alpha5
Source avec Zip Source .NET (Dotnet) TIC TAC TOE AVEC INTELLIGENCE ARTIFICIELLE par 974Dom
Source avec Zip Source avec une capture JEUX DU MORPION AVEC IA par Foxhooound
Source avec Zip Source avec une capture Source .NET (Dotnet) [VB2008] REVERSI par Kite37

Commentaires et avis

Commentaire de Patrice99 le 02/05/2003 10:16:38

Oops ! pour la version vb6, il faut renommer AffRhgles.frm en AffRègles.frm (la prochaine fois, j'enlèverais les accents !)

Commentaire de Saros le 02/05/2003 11:07:50

Vraiment bien !
Un peu lent (ça doit être mon ordi qui rame), mis bon...
Pour le truc d'assurance, je me demande si en effet les compagnies d'assurance utilisent ce genre de programme pour calculer leur taux...
A vrai dire je ne peux pas trop dire sur l'adaptation .NET parce que je n'ai pas .NET...
A+
Saros

Commentaire de CausPupus le 02/05/2003 16:33:12

J'ai pas compris l'interet de ce programme si quelqu'un peut me donner un exemple concret : a quoi ca sert exactement, l'utilité....

Merci

Commentaire de mage le 04/05/2003 15:52:30

bien ton programme surtout quand tu fait quitter et cela fait transparant moi je dit bravo

Commentaire de fgrattery le 15/05/2003 10:18:29

... On s'en fout de l'effet de transparence ! T'as vu que ça d'intéressant ?

Commentaire de chocobo le 23/05/2003 22:37:18

moi non plus j'ai pa

Commentaire de chocobo le 23/05/2003 22:38:11

vraiment compri comment ca marchait mais
j'avoue qu'j'ai pas tellement cherché
=

Commentaire de Patrice99 le 24/05/2003 09:03:00

Je crois qu'il y a un petit pb avec la base de données : elle n'est pas lue par le logiciel dans un Windows vide (sans VS .NET), je mettrais à jour quand j'aurais trouvé la solution au problème.

Commentaire de CausPupus le 24/05/2003 11:09:05

Pas mal

Commentaire de Patrice99 le 12/07/2003 10:25:38

Lorsque Visual Studio .NET n'est pas installé sur la machine, MDAC 2.7 (composants d'accès aux données, version .NET) doit alors être installé pour que VBBrainBox puisse lire la base de données :
www.microsoft.com/downloads/details.aspx?FamilyID=b41304ca-874f-421d-8820-182f179779a4&DisplayLang=fr (5 Mo)
J'ai mis à jour le package .msi : 793 Ko, tout devrait fonctionner maintenant.

Commentaire de Mumuri le 30/05/2004 11:36:02

C'est utilisé par l'ANPE pour calculer les fonds qu'ils doivent donné au chomeur en fonction de leur situations, c'est aussi utilisé pour faires des diagnostiques en medecine quand les cas sont trop compliqué, il rentre les données du patient et ca sort la maladie ...

Pour ce qui est de la source, je vais la télécharger et je verrais aprés

Commentaire de Mumuri le 30/05/2004 11:44:12

Méme sans avoir regardé le code, je t'ai mis 10 pour remonter le 1/10 fo etre débile pour mettre un 1 a un systeme expert, vous avez pas idée des applications les gars

Commentaire de Patrice99 le 14/10/2005 08:30:20

L'exe ne fonctionne plus sur certain poste (il ne trouve plus la version de la BD ???), il faut juste le recompiler ! (je ferais une mise à jour à l'occasion)

Commentaire de djameldib le 19/02/2007 10:34:24

quelqu'un pourait il m'éxpliquer comment ca marche, j'ai besoin du manuel en quelque sorte.

PS j'en est vraiment besoin

Commentaire de Patrice99 le 19/02/2007 13:41:19

Regarde l'application minimale : c'est tout ce qu'il faut pour commencer. Ensuite, si tu veux la modifier pour faire des tests, il faut Access (il existe une version gratuite : cherche Runtime Access dans la doc).
Tiens-moi au courant si ça marche ou pas.

Commentaire de Patrice99 le 19/02/2007 16:27:28

Le runtime d'Access est ici (le lien dans la doc ne marche plus) :
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B243957

Commentaire de djameldib le 19/02/2007 18:34:56

Merci Patrice,
En fait je suis en train de réaliser un systeme expert interactif d'aide à la prise de décision, le tout se fait sur une carte géographique; ceci ressemblera à un jeux de guere ou les forces alliées réalisent des actions (mouvement, tire, ...); le systeme expert doit proposer en fonction des faits (armement ami,armement enemi,position enemi, ...) des actions possible à réaliser (les conclusions) ,c'est là que le joueur choisira se qu'il veut faire.
Auriez vous une approche à me conseiller.Si oui contactez moi : djameldib1@yahoo.fr
Je vous ferai part de mon état d'avancement. MERCI

Commentaire de djameldib le 20/02/2007 19:23:19

Merci Patrice99, je te remercie pour ton message.
J’ai parcouru ton application, et vraiment "BRAVO", néanmoins je ne comprends pas la signification du champ "bintermediaire" dans la BD.

Commentaire de Patrice99 le 21/02/2007 08:25:18

Dans la table Variable (Table des variables d'une application), le champ Booléen bIntermediaire indique s'il s'agit d'une variable intermédiaire, c'est-à-dire une variable déduite par le système expert (et non un fait initial). Cela permet de trier les variables lorsque l'on conçoit des sessions ou des règles.

Commentaire de djameldib le 22/02/2007 22:33:55

Merci Patrice99, tout est clair maintenant, je sais que je te l’ai déjà dit mais vraiment c’est super.
Je suis maintenant en train de rendre la base de fait dynamique, c'est-à-dire qu’au lieu d’avoir des faits figés, je vais changé le contenu de la table Fait ( les faits serons parmi nos variables ) juste avant l’exécution du moteur d’inférence.
Pouvez vous m'aider, je bloque...
Pour mieux expliquer : voici le rapport que j’ai eu :


Rapport d'expertise de VBBrainBox
Date : 22/02/2007 21:39:35
------------------------------------------------------------
Application : Offensive
Description : Nous allons attaquer
Date        : 21/02/2007
Session     : Session1
------------------------------------------------------------

Faits initiaux :

Nombre de faits initiaux = 5
Nombre de faits initiaux définis = 5
Nombre de faits finaux = 9

DistanceEfficace = 1000
Pluie = "VRAI"
VitesseVentJourJ = 120
VitesseVentLimite = 100
DistanceEnemi = 1500

Rapport d'expertise de VBBrainBox
------------------------------------------------------------
Application : Offensive
Session : Session1
------------------------------------------------------------
Configuration :
Logique non monotone (les faits peuvent changer)
Les règles contradictoires sont autorisées
Logique floue activée (les fiabilités sont indiquées entre parenthèses)
Logique floue interprétée (les faits peuvent changer)
------------------------------------------------------------

Compte-rendu d'expertise

Selon la règle R2 :
si DistanceEnemi > DistanceEfficace
alors BesoinDeSeDéplacer = "VRAI"

Selon la règle R4 :
si Pluie = "VRAI"
et VitesseVentJourJ > VitesseVentLimite
alors MétéoDéfavorableJourJ = "VRAI"

Selon la règle R3 :
si MétéoDéfavorableJourJ = "VRAI"
alors AviationEnemiInactiveJourJ = "VRAI"

Selon la règle R1 (0,8) :
si AviationEnemiInactiveJourJ = "VRAI"
et BesoinDeSeDéplacer = "VRAI"
alors SeDeplacerJourJ = "VRAI" (0,8)

Nombre d'avertissements : 0

------------------------------------------------------------

Bilan des variables : Avant : Après

VitesseVentLimite = 100 : 100
VitesseVentJourJ = 120 : 120
AviationEnemiInactiveJourJ = ? : "VRAI" (R3)
MétéoDéfavorableJourJ = ? : "VRAI" (R4)
DistanceEfficace = 1000 : 1000
Pluie = "VRAI" : "VRAI"
DistanceEnemi = 1500 : 1500
BesoinDeSeDéplacer = ? : "VRAI" (R2)

Variables intermédiaires :

SeDeplacerJourJ = ? : "VRAI" (0,8) (R1)

------------------------------------------------------------

Base de règles : C:\Documents and Settings\Salut chez\Bureau\SE\Applications\VBBrainBox.mdb (version : 1)
Date : 22/02/2007 21:39:35

Règle n° 1 : R1 (0,8) : 21/02/2007

    si AviationEnemiInactiveJourJ = "VRAI"
    et BesoinDeSeDéplacer = "VRAI"
    alors SeDeplacerJourJ = "VRAI"


Règle n° 2 : R2 : 21/02/2007

    si DistanceEnemi > DistanceEfficace
    alors BesoinDeSeDéplacer = "VRAI"


Règle n° 3 : R3 : 21/02/2007

    si MétéoDéfavorableJourJ = "VRAI"
    alors AviationEnemiInactiveJourJ = "VRAI"


Règle n° 4 : R4 : 21/02/2007

    si Pluie = "VRAI"
    et VitesseVentJourJ > VitesseVentLimite
    alors MétéoDéfavorableJourJ = "VRAI"


------------------------------------------------------------
VBBrainBox 1.0 par Patrice Dargenton

d'après Turbo-Expert 1.2 pour Windows
(c) Philippe Larvet 1996, 2003

Documentation : VBBrainBox.html
http://patrice.dargenton.free.fr/ia/vbbrainbox/index.html
http://patrice.dargenton.free.fr/index.html
patrice.dargenton@free.fr
------------------------------------------------------------

Commentaire de Patrice99 le 23/02/2007 08:21:45

ça m'a l'air bon tout ça, qu'est-ce qui bloque au juste ?
Tu peux essayer d'autres sessions pour voir si les règles marchent bien dans tous les cas.

Commentaire de djameldib le 24/02/2007 20:09:18

Désolé,j'ai du mal m'éxprimer.
En faite, je veux avoir une session vide que je remplirai à ma guise via un formulaire qui s'affichera au tout début, mais je débute en .Net et je suis surtout habituer à Oracle.
Pouvez vous m'aider ou m'indiquer une doc qui pourai le faire.
Ceci sera utile pour faire passer les Faits de ma 2éme partie de projet que je réalise en parallele (les unitées sur la carte géographique aurons des faits à faire passer).

Commentaire de Patrice99 le 25/02/2007 09:37:05

Tu peux créer une requête pour affecter les variables à une valeur, et une autre pour effacer ces valeurs, voici le code SQL à mettre :

SELECT Variable.Variable, Fait.Operateur, Fait.Valeur, Fait.Fiabilite
FROM Variable INNER JOIN ((Application INNER JOIN Sessions ON Application.IdApplication = Sessions.IdApplication) INNER JOIN Fait ON Sessions.IdSession = Fait.IdSession) ON Variable.IdVariable = Fait.IdVariable
WHERE (((Application.Application)='Offensive') AND ((Sessions.NomSession)='Session1'));

UPDATE Variable INNER JOIN ((Application INNER JOIN Sessions ON Application.IdApplication = Sessions.IdApplication) INNER JOIN Fait ON Sessions.IdSession = Fait.IdSession) ON Variable.IdVariable = Fait.IdVariable SET Fait.Operateur = '=', Fait.Valeur = Null, Fait.Fiabilite = Null
WHERE (((Application.Application)='Offensive') AND ((Sessions.NomSession)='Session1'));

Ensuite sous Access, tu peux directement utiliser ces 2 requêtes, ou bien même créer un formulaire basé sur la requête de définition des variables, avec un bouton pour effacer ces variables qui appelle la requête d'effacement. Sous DotNet, c'est la même chose (mais ce n'est pas aussi simple que sous Access).

La requête de définition des variables te donne une liste des variables de l'application (ce qui ressemblera beaucoup au formulaire actuel de VBBrainBox). Si tu préfères avoir les variables en colonne, il n'est pas possible à mon avis de rassembler toutes les variables en une seule requête éditable : il te faudra donc écrire du code pour mettre à jour chaque variable, ce qui ne sera pas évident à faire, mais cela améliorera probablement l'ergonomie de l'application.

Commentaire de houri le 24/04/2007 23:50:00

Salut Patrice99, j'ai beaucoup apprécié ton travail. Vraiment excellant. (10/10)
Pourrez tu s'il te plait me faire parvenir le diagramme de classe (représente la structure statique en terme de classes et de relations ) ainsi que les diagrammes de comportement de l’application, ça m’éviterai beaucoup de souci.
Houri2008@yahoo.fr
Merci d'avance...

Commentaire de Patrice99 le 25/04/2007 09:22:19

Salut, merci. Ok pour le diagramme de classe... au fait on fait comment pour le générer ? j'ai VS 2003 et VB 2005 Express, on peut le générer avec ? j'ai l'habitude de faire des diagrammes de relation pour les bd mais pas pour la POO, car je n'ai pas bcp de codes en vrai POO actuellement (en tout cas pas de codes très compliqués). VBBrainBox est converti depuis VB6, il n'est pas vraiment optimisé selon les principes de la POO. Pour le diagramme de comportement de l'application, je ne vois pas comment on pourrait le générer facilement en pratique.

Commentaire de houri le 01/05/2007 21:53:44

salut, je ne sais pas comment le generer automatiquement mais tu peux just donne les noms des classes utilises avec les relations entre elle (heritage...). en faite ca ta pris combien de temps pour faire ce travail. merci

Commentaire de Patrice99 le 02/05/2007 16:45:51

J'ai mis 3 mois pour adapter TurboExpert V1.20 en VBBrainBox et faire une doc.

Le plan de la base de données est ici :
http://patrice.dargenton.free.fr/ia/vbbrainbox/index.html#_Toc39118541

La table des matières du programme est ici :
http://patrice.dargenton.free.fr/ia/vbbrainbox/VBBrainBoxSrc.html
Comme il n'y a que 3 classes (clsBD, clsBR et clsDico), il suffit de rechercher ensuite chaque classe dans le code source via le projet VS.Net.

Commentaire de Patrice99 le 05/05/2007 12:57:58

100% Reflective Class Diagram Creation Tool
www.codeproject.com/csharp/AutoDiagrammer.asp

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

the IA project ( ouvert à Tous ) [ par otaku ] Premierement j'aimerais vous dire combien il est agréable d'avoireu un tel echo. J'ai beaucoup reflechi à un projet viable et je penseque nous pourrio Cherche infos sur l'IA [ par holger ] Je cherche des infos sur ce qui existe en termes d'intelligence artificiel avec VisualBasic 5&+. - adresse de site - forum - source progs, et no Nouvelle rubrique : IA [ par Patrice99 ] Ca serait bien de faire une rubrique spécifique pour l'Intelligence Artificielle, pour améliorer la visibilité des contributions : ChatBot, Vie artifi Messagerie de VBFrance.com [ par Patrice99 ] Hé Nix, t'en est content de ta messagerie, où veux-tu en venir, tu veux nous forcer à consultez tous les jours notre BAL en venant sur VBFrance.com, t Urgent :o/ =>Ajout d'une règle dans MS Outlook 98 via un VBS [ par HaTcH ] Bonjour,Dans le cadre de mon travail, je cherche un moyen d'ajouter une règle dans le gestionnaire de réception sous MS Outlook 98 via un VBS.Le but d IA pour les pros [ par azertyty ] Existe t-il une démarche type pour créer une intelligence artificielle sur un jeu. (Questions a se poser.....)merci a ce qui répondront a ce message ! Concours IA (Intelligence Artificielle) [ par ynizon ] Je suis a la recherche de participants pour un ptit jeu sympa qui ressemble aux dames chinoises. Le but etant que chacun developpe sa propre IA, et l' IA robot [ par mikaeloff ] bonjour à tous,je voudrai crée un logitiel afin de simuler un robot avec une intelligence artificielle.pour cela je voudrai découper ma fenetre en zon IA [ par Varis ] Je cherche un cours sur l'IA avec des exemples de codes complètement détaillésmerciseb IA : Intelligence Artificielle [ par AngeloVivaldi ] Salut a tousVoila je voudrai réalisé un ChatterBot, mais sans que vous critiquer le projets (genre ouai c pa la peine avec vb ou d truk kome sa), j'au


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales