Le calcule du factoriel- Madkit

cs_asle Messages postés 8 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 13 septembre 2010 - 1 avril 2010 à 12:18
imench Messages postés 27 Date d'inscription samedi 23 avril 2011 Statut Membre Dernière intervention 28 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 ?

Merci d'avance

1 réponse

imench Messages postés 27 Date d'inscription samedi 23 avril 2011 Statut Membre Dernière intervention 28 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)
0