IA : VBBRAINBOX : UN SYSTÈME EXPERT D'ORDRE 0+ EN VB .NET
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018
-
2 mai 2003 à 10:16
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018
-
15 mars 2015 à 09:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 15 mars 2015 à 09:31
Nouvelle version : pour Windows 64, il faut forcer le mode 32 bits, j'ai aussi modifier légèrement le code pour éviter l'avertissement sur les retours de fonction.
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 5 mai 2007 à 12:57
100% Reflective Class Diagram Creation Tool
www.codeproject.com/csharp/AutoDiagrammer.asp
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 2 mai 2007 à 16:45
J'ai mis 3 mois pour adapter TurboExpert V1.20 en VBBrainBox et faire une doc.
cs_houri
Messages postés2Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention 1 mai 2007 1 mai 2007 à 21:53
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
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 25 avril 2007 à 09:22
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.
cs_houri
Messages postés2Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention 1 mai 2007 24 avril 2007 à 23:50
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...
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 25 févr. 2007 à 09:37
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.
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007 24 févr. 2007 à 20:09
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).
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 23 févr. 2007 à 08:21
ç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.
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007 22 févr. 2007 à 22:33
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
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)
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 21 févr. 2007 à 08:25
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.
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007 20 févr. 2007 à 19:23
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.
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007 19 févr. 2007 à 18:34
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
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 19 févr. 2007 à 16:27
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 19 févr. 2007 à 13:41
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.
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007 19 févr. 2007 à 10:34
quelqu'un pourait il m'éxpliquer comment ca marche, j'ai besoin du manuel en quelque sorte.
PS j'en est vraiment besoin
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 14 oct. 2005 à 08:30
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)
Mumuri
Messages postés320Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention 6 avril 2008 30 mai 2004 à 11:44
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
Mumuri
Messages postés320Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention 6 avril 2008 30 mai 2004 à 11:36
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
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 12 juil. 2003 à 10:25
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.
CausPupus
Messages postés32Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention31 décembre 2005 24 mai 2003 à 11:09
Pas mal
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 24 mai 2003 à 09:03
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.
cs_chocobo
Messages postés126Date d'inscriptionsamedi 18 janvier 2003StatutMembreDernière intervention 4 mars 2005 23 mai 2003 à 22:38
vraiment compri comment ca marchait mais
j'avoue qu'j'ai pas tellement cherché
=
cs_chocobo
Messages postés126Date d'inscriptionsamedi 18 janvier 2003StatutMembreDernière intervention 4 mars 2005 23 mai 2003 à 22:37
moi non plus j'ai pa
fgrattery
Messages postés1Date d'inscriptionvendredi 9 mai 2003StatutMembreDernière intervention15 mai 2003 15 mai 2003 à 10:18
... On s'en fout de l'effet de transparence ! T'as vu que ça d'intéressant ?
cs_mage
Messages postés22Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention23 novembre 2003 4 mai 2003 à 15:52
bien ton programme surtout quand tu fait quitter et cela fait transparant moi je dit bravo
CausPupus
Messages postés32Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention31 décembre 2005 2 mai 2003 à 16:33
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
Saros
Messages postés921Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention23 septembre 2010 2 mai 2003 à 11:07
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
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 2 mai 2003 à 10:16
Oops ! pour la version vb6, il faut renommer AffRhgles.frm en AffRègles.frm (la prochaine fois, j'enlèverais les accents !)
15 mars 2015 à 09:31
5 mai 2007 à 12:57
www.codeproject.com/csharp/AutoDiagrammer.asp
2 mai 2007 à 16:45
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.
1 mai 2007 à 21:53
25 avril 2007 à 09:22
24 avril 2007 à 23:50
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...
25 févr. 2007 à 09:37
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.
24 févr. 2007 à 20:09
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).
23 févr. 2007 à 08:21
Tu peux essayer d'autres sessions pour voir si les règles marchent bien dans tous les cas.
22 févr. 2007 à 22:33
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
------------------------------------------------------------
21 févr. 2007 à 08:25
20 févr. 2007 à 19:23
J'ai parcouru ton application, et vraiment "BRAVO", néanmoins je ne comprends pas la signification du champ "bintermediaire" dans la BD.
19 févr. 2007 à 18:34
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
19 févr. 2007 à 16:27
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B243957
19 févr. 2007 à 13:41
Tiens-moi au courant si ça marche ou pas.
19 févr. 2007 à 10:34
PS j'en est vraiment besoin
14 oct. 2005 à 08:30
30 mai 2004 à 11:44
30 mai 2004 à 11:36
Pour ce qui est de la source, je vais la télécharger et je verrais aprés
12 juil. 2003 à 10:25
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.
24 mai 2003 à 11:09
24 mai 2003 à 09:03
23 mai 2003 à 22:38
j'avoue qu'j'ai pas tellement cherché
=
23 mai 2003 à 22:37
15 mai 2003 à 10:18
4 mai 2003 à 15:52
2 mai 2003 à 16:33
Merci
2 mai 2003 à 11:07
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
2 mai 2003 à 10:16