Posez votre question Signaler

Java chainage avant systeme expert

mava - Dernière réponse le 15 avril 2010 à 16:17
bonjour!

je dois réaliser un systeme expert avec java. le principe est qu'un utilisateur entre les faits dans une classe faitvrai et un moteur de chainage avant exploite les regles établies auparavant pour voir quelles conclusion on peut tirer à partir des faits.

Il me faudrait donc regarder pour chaque regle de la classe regle si le fait est contenu dans la liste de faitvrai pour ensuite appliquer les conclusion, mais je ne sais pas coment my prendre pour cela.

il faudrait faire quelquechose du style:
-pour chaque regle voir si la classe faitvrai contient les prémisses de la regle
- si c'est le cas apliquer la conclusion

quelqu'un pourrait il m'éclairer? (algorithme et/ou java)

merci beaucoup
Lire la suite 

Java chainage avant systeme expert »

11 réponses
Réponse
+19
moins plus
un code source de chainage avant en java
Ajouter un commentaire
Réponse
+9
moins plus
انا طالبة سنة رابعة اعلام الي هل ممكن ارسال تمارين حولchinnage avant/arriére et exercice corrigées en prologue
aymen - 26 mai 2008 à 17:22
salut je peut savoir d'ou v ete et votre num de tel pour bien discuter sur votre sujet
samu12 - 20 juin 2008 à 00:48
voila ce que tu veux...
salsabile - 9 juil. 2008 à 10:59
salut
bon moi je suis une ingénieur d'etat en informatique et je veux preparer au magister2008 si tu veux contacter moi soit au skype : information20081
ou yahoo massenger : ilhouma_2000@yahoo.fr
lasse moi un message si je connecte pas
bye
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour
J'aimerai savoir si tu as réusi a faire ton chainage avant pour ton systeme expert.
J'ai besoin aussi de faire ce genre de programme et j'aimerai savoir si tu aurais pu m'aider
Merci d'avance
khkh - 6 avril 2008 à 17:48
salut
si tu a dejat trouvé la solution svp mois aussi j'ai le meme pbm alors ....
Ajouter un commentaire
Réponse
+0
moins plus
salut si tu a trouver la reponsse sur ton pbm svp envoi le sur mon @ merci
Ajouter un commentaire
Réponse
+0
moins plus
salut, svp j'aimerai bien de me fournir des information clairs et bien strucurée concernants les systèmes experts avec des exercices ;;;;;;;guidez moi svp comment chercher l'information?
c. - 3 juin 2008 à 19:32
Bonjour,

les faits sont de la forme a,b,c,e,g...
les regles sont de la forme: 1) a et b et c --> d
2) d et g --> x
3) a -->h
4) h-->d

il existe 2+1 approches:

- chainage avant : On part des hypotheses (les faits/prémisses) vers la conclusion [ gauche vers droite quoi]

on exécute toutes les regles dont les hypotheses sont vérifiées afin d'obtenir le plus de nouvelles informations possibles. dans le cas présent, la regle une est exécutable et donne le fait d ( la 3 donne h). ce nouveau fait, une fois ajouté à la liste des faits vrais (a,b,c,e,g) permet de lancer la regle 2.
Dans cette approche, on exécute toutes les regles qui sont exécutables.

- chainage arrière : on part de la conclusion et on remonte au hypotheses a vérifier
on a un but (par exemple obtenir le fait x) et on cherche a l'obtenir le plus rapidement possible.
Dans ce cas, le chainage arrière par de la fin ( la conclusion/but x) et remonte le chemin pour trouver le moyen le plus court de l'atteindre il nous faut donc d et g. g est vrai, il ne manque plus que d. celui -ci est obtenable en 1 fois par la regle 1 et en 2 pas par les regles 3 et 4. Le systeme va résoudre puis choisir le chemin 1)2)

-mixte : on mélange les 2 approches ci -dessus


exemple d'algo chainage avant : http://icwww.epfl.ch/~aicours2//labs/lab2/lab2.htm

pour faire du moteur d'inférence sous java, il y a notamment Jess, et swi-prolog, ou python ou autre :)

si tu cherches moteur d' inférence, prolog, java et /ou exercices sur prolog tu devrais trouver ton bonheur
@+
Ajouter un commentaire
Réponse
+0
moins plus
essaie de representer tes connaissances sous forme de frame ou script ou/et classes (representation hybride), et de là, cas des frames ressemblent à des procédures qui se déclenchent une fois les faits trouvés, on peut même leurs appliquer des démons (appelation en anglais) appelé encore reflexe ' tels que si-ajout, si-besoin, ...).
tout ceci est programmable en prolog, ou smalltak,...

voila un exemple que j'ai tiré de Internet
/*---------------------------------------------------------------*/
/* PARISTECH - Ecole Nationale Superieure des Telecommunications */
/*---------------------------------------------------------------*/
/* J-L. Dessalles 2009 Dep. INFRES */
/* */
/* >>>>> Logic programming and Knowledge representation <<<<<< */
/* www.telecom-paristech.fr/~icc/PLC */
/* */
/*---------------------------------------------------------------*/


% ========================
% Knowledge Representation
% ========================






%-------------------------------
% findall reconsidered
%-------------------------------

:- consult('geo.pl'). % just to get a database to read
:- dynamic(found/1).

findany(Var, Pred, _) :-
assert(found([])),
Pred, % the execution of Pred instantiates Var
retract(found(R)), % always only one instance of `found'
% in memory, no alternative to backtrack onto
assert(found([Var|R])),
fail.
findany(_,_,L) :-
retract(found(L)).

go(L) :-
findany(D, neighbour(D,_), L).


% Atlernative solution
findany1(Var, Pred, _) :-
retractall(found(_)), % resets memory
Pred, % the execution of Pred instantiates Var
asserta(found(Var)), % alternative solution: store Var without retracting
fail.
findany1(_,_,L) :-
collect_found(L).

collect_found([V|L]) :-
retract(found(V)),
!,
collect_found(L).
collect_found([]).




%--------------------------------
% semantic networks
%--------------------------------

isa(bird, animal).
isa(albert, albatross).
isa(albatross, bird).
isa(kiwi, bird).
isa(willy, kiwi).
isa(crow, bird).

locomotion(bird, fly).
locomotion(kiwi, walk).
locomotion(X, Loc) :-
isa(X, SuperX),
locomotion(SuperX, Loc).

food(albatross,fish).
food(bird,grain).

/* drawback : n particular inheritance rules */
/* solution: one general predicate : "known" */

known(Fact) :-
Fact,
!.
known(Fact) :-
Fact =.. [Rel, Arg1, Arg2],
isa(Arg1, SuperArg1),
SuperFact =.. [Rel, SuperArg1, Arg2],
known(SuperFact).

habitat(X, island) :-
known(locomotion(X, M)),
M = fly,
!.
habitat(_X, unknown).







%-----------------
% Frames
%-----------------

bird(kind_of, animal).
bird(locomotion, flight).
bird(active_period, day).
bird(food, grain).

albatross(kind_of, bird).
albatross(colour, black_and_white).
albatross(size, 115).
albatross(food, fish).

kiwi(kind_of, bird).
kiwi(colour, marron).
kiwi(active_period, night).
kiwi(locomotion, walk).
kiwi(size, 40).

albert(instance_of, albatross).
albert(size, 120).
willy(instance_of, kiwi).

fish(kind_of, animal).

carnivorous_plant(kind_of, being).
carnivorous_plant(food, insect).

insect(kind_of, animal).

animal(relative_size, method(relative_size)).
animal(kind_of, being).

being(diet, method(diet)).

relative_size(Object, TR) :-
value(Object, size, Size_of_Object),
value(Object, instance_of, ClasseObject),
value(ClasseObject, size, Size_of_Classe),
TR is Size_of_Object / Size_of_Classe * 100.


diet(Object, carnivorous) :-
value(Object, food, Meal),
value(Meal, kind_of, animal),
!.
diet(_, herbivorous).



%---------------
% First solution with no processing of methods
%---------------

value( Frame, Slot, Val) :-
Request =.. [Frame, Slot, Val],
Request,
!.
value( Frame, Slot, Val) :-
parent(Frame, SurFrame), % using inheritance
value(SurFrame, Slot, Val).

parent(Frame, SurFrame) :-
Request =.. [Frame, kind_of, SurFrame],
Request.
parent(Frame, SurFrame) :-
Request =.. [Frame, instance_of, SurFrame],
Request.

%---------------
% Another solution which includes the processing of methods
%---------------

value1(Frame, Slot, Val) :-
value2(Slot, Frame, Frame, Val). % keeping memory of the initial frame

value2(Slot, Frame, HFrame, Val) :-
Request =.. [HFrame,Slot,Info],
Request, % instantiates Info
!,
execute(Info, Frame, Val). % executes Info if it contains a method
value2(Slot, Frame, HFrame, Val) :-
parent(HFrame, SurHFrame), % using inheritance
value2(Slot,Frame,SurHFrame,Val).

execute(method(Meth), Frame, Val) :-
!,
Goal =.. [Meth, Frame, Val], % the method is given its arguments
Goal. % the method is executed
execute(Val, _, Val).
Ajouter un commentaire
Ce document intitulé « java chainage avant systeme expert » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?