cs_asle
Messages postés8Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention13 septembre 2010
-
1 avril 2010 à 12:18
imench
Messages postés27Date d'inscriptionsamedi 23 avril 2011StatutMembreDernière intervention28 avril 2011
-
28 avril 2011 à 09:44
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:
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);
}
}
et voici la classe qui lance les agents:
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);
}
}
la trace d'execution est:
<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
quel est le probleme dans mon code? pourquoi il m'affiche pas le resultat ?
imench
Messages postés27Date d'inscriptionsamedi 23 avril 2011StatutMembreDernière intervention28 avril 2011 28 avril 2011 à 09:44
bonjour:
je suis debudante dans le domaine multi agent.
J'ai choisi la plateforme Madkit pour faire l'implémentation des agents.
Ces derniers communiquent entre eux pour assurer la traçabilité des marchandises.
J ai déjà installer Madkit aussi bien j ai réussi a faire un petit exemple (Helloworld). il est assez simple. J ai besoin d'un exemple qui referme au moins deux agents en communication pour concevoir l’échange de message entre eux.
Aidez moi s'il vous plais.
Merci en avance.
(mon mail: imen.char@gmail.com)