salut,
je suis debutant dans la programmation multi-agents et plus particulierement la plate forme madkit.
je veux calculer le factorielle en utilisant plusieurs agents.
Exemple:factorielle(6)
je crée 3 agents:
agent1>role=calculateur1>2*1
agent2>role=calculateur2>3*4
agent3>role=calculateur3>5*6
agent3> role=resultat> fait le produit des resultats des autres agent
voici la classe agent:
et voici la classe qui lance les agents:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 import madkit.kernel.Agent; import madkit.kernel.ObjectMessage; public class FactorielleAgent extends Agent{ int nombre; int fact; int calcul,result=1; String myCommunity="projet2"; public FactorielleAgent(int f,int j){ nombre=f; fact=j; } public FactorielleAgent() { } public void activate(){ createGroup(false,"CalculFactoriel", null, null); if(nombre==3){ requestRole("CalculFactoriel","resultat",null); println("le role resultat est créé"); } requestRole("CalculFactoriel","calculateur"+nombre,null); println("le role calculateur"+nombre+" est créé"); } public synchronized void live(){ ObjectMessage msg; Integer content; if(leaveRole("CalculFactoriel", "resultat")){ msg=(ObjectMessage)waitNextMessage(); content=(Integer)msg.getContent(); int sender=content.intValue(); result=result*sender; println("resultat= "+result); if(nombre>fact){ println("resultat= "+result); } } else{ calcul=nombre*(nombre+1); nombre=nombre+2; sendMessage(getAgentWithRole("CalculFactoriel","resultat"),new ObjectMessage(new Integer(calcul))); } } public void end(){ println("je me termine avec pour resultat "+calcul); } }
la trace d'execution est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import madkit.kernel.Kernel; public class Facto { private Kernel theKernel; public Facto() { System.exit(1); } public Facto (int f) { theKernel=new Kernel("Calcul de factorielle"); for (int i=1;i<=(f/2);i++) { FactorielleAgent fa=new FactorielleAgent(i,f); theKernel.launchAgent(fa,"Agent Factorielle "+ i,this,false); } } public static void main(String [] args) { new Facto(6); } }
ou est le probleme dans mon code?svp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <Calcul de factorielle> : MadKit Agent microKernel localhost:K1270078328180 is up and running <Calcul de factorielle> : [Agent Factorielle 1] le role calculateur1 est créé <Calcul de factorielle> : [Agent Factorielle 2] le role calculateur2 est créé <Calcul de factorielle> : [Agent Factorielle 3] le role resultat est créé <Calcul de factorielle> : [Agent Factorielle 3] le role calculateur3 est créé <Calcul de factorielle> : [Agent Factorielle 2] je me termine avec pour resultat 6 <Calcul de factorielle> : [Agent Factorielle 1] je me termine avec pour resultat 2
Merci d'avance
Partager