Les communications des agents jade

Résolu
cs_ghadouch Messages postés 10 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 11 février 2013 - 10 avril 2011 à 11:45
happyranda Messages postés 20 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 13 novembre 2012 - 3 oct. 2012 à 09:13
Bonjour à tous,
je suis débutante en jade et j'essaye maintenant à comprendre comment faire communiquer des agents j'ai trouvé un exemple sur développer.com sur la communication d'un AgentA et un autre AgentB mais j'ai pas réussi à l'appliquer correctement je vais vous donner le code complet et les erreurs que j'ai obtenu:

Concernant l'agentA le code et le suivant:


import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.FSMBehaviour;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;

public class AgentA extends Agent {

protected void setup(){

System.out.println("---------------------------------------");
System.out.println("----------------agent A----------------");
System.out.println("---------------------------------------");

FSMBehaviour agentA_beh= new FSMBehaviour();

agentA_beh.registerFirstState(new attendreAgentB(), "attendreAgentB");
agentA_beh.registerState(new envoiChiffre(), "envoiChiffre");
agentA_beh.registerLastState(new fin(), "fin");

agentA_beh.registerDefaultTransition("attendreAgentB", "envoiChiffre");
agentA_beh.registerTransition("envoiChiffre", "attendreAgentB",0);
agentA_beh.registerTransition("envoiChiffre", "fin", 1);

addBehaviour(agentA_beh);
}

private class attendreAgentB extends OneShotBehaviour{

@Override
public void action() {

System.out.println("en attente de l agent B");
block();
}
}
/*****************************************************************/
private class envoiChiffre extends OneShotBehaviour{

int valeurRetour = 0;
@Override
public void action() {

ACLMessage messageRecu = receive();
if (messageRecu.getContent().equalsIgnoreCase("pret") ) valeurRetour=0;
else valeurRetour=1;

int chiffre = (int)(Math.random()*10);
System.out.println("envoi de la valeur "+ chiffre);
ACLMessage message = new ACLMessage(ACLMessage.INFORM);
message.addReceiver(messageRecu.getSender());
message.setContent(chiffre+"");
send(message);
}

public int onEnd(){
return valeurRetour;
}
}
/*****************************************************************/
private class fin extends OneShotBehaviour{

@Override
public void action() {
System.out.println("arret de l'agent");
myAgent.doDelete();
}
}
}

Ici j'ai aucun problème et ça fonctionne correctement et m'affiche dans le console le message suivant:

10 avr. 2011 10:28:30 jade.core.Runtime beginContainer
INFO: ----------------------------------
This is JADE 3.6 - revision 6032 of 2008/05/05 14:07:10
downloaded in Open Source, under LGPL restrictions,
at http://jade.tilab.com/
----------------------------------------
10 avr. 2011 10:28:34 jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
10 avr. 2011 10:28:34 jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
10 avr. 2011 10:28:34 jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
10 avr. 2011 10:28:34 jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
10 avr. 2011 10:28:34 jade.core.messaging.MessagingService clearCachedSlice
INFO: Clearing cache
10 avr. 2011 10:28:34 jade.mtp.http.HTTPServer
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
10 avr. 2011 10:28:34 jade.core.messaging.MessagingService boot
INFO: MTP addresses:
http://192.168.1.2:7778/acc
---------------------------------------
----------------agent A----------------
---------------------------------------
en attente de l agent B
10 avr. 2011 10:28:35 jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@your-ab6cd29f8e is ready.
--------------------------------------------

Mais le problème avec l'AgentB :


import java.security.acl.Acl;
import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.FSMBehaviour;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;

public class AgentB extends Agent {

int somme = 0;
boolean stop = false;
protected void setup(){
System.out.println("----------------agent B----------------");
FSMBehaviour agentB_beh= new FSMBehaviour();

agentB_beh.registerFirstState(new attendrechiffre(), "attendrechiffre");
agentB_beh.registerState(new afficher(), "afficher");
agentB_beh.registerState(new fin(), "fin");

agentB_beh.registerTransition("attendrechiffre", "afficher",0);
agentB_beh.registerTransition("attendrechiffre", "fin",1);
agentB_beh.registerDefaultTransition("afficher", "attendrechiffre");

addBehaviour(agentB_beh);
}
private class attendrechiffre extends OneShotBehaviour{

int valeurRetour = 0;

public void action() {
ACLMessage message = new ACLMessage(ACLMessage.INFORM);
message.addReceiver(new AID("AgentA", AID.ISLOCALNAME));

if(!stop){
message.setContent("pret");
send(message);
valeurRetour=0;
block();
}else{
message.setContent("arret");
send(message);
valeurRetour=1;
}
}
public int onEnd(){
return valeurRetour;
}
}
/**********************************************************************/
private class afficher extends OneShotBehaviour{
@Override
public void action() {
ACLMessage messageRecu = receive();
somme+= Integer.parseInt(messageRecu.getContent());
System.out.println("message recu= "+ messageRecu.getContent());
System.out.println("la somme actuelle = "+somme);
if (somme > 50) stop = true;
}
}
/**********************************************************************/
private class fin extends OneShotBehaviour{
@Override
public void action() {
System.out.println("fin de l'agent");
myAgent.doDelete();
}
}
}

le Message d'erreur est le suivant:

10 avr. 2011 10:34:43 jade.core.Runtime beginContainer
INFO: ----------------------------------
This is JADE 3.6 - revision 6032 of 2008/05/05 14:07:10
downloaded in Open Source, under LGPL restrictions,
at http://jade.tilab.com/
----------------------------------------
10 avr. 2011 10:34:46 jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
10 avr. 2011 10:34:46 jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
10 avr. 2011 10:34:46 jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
10 avr. 2011 10:34:46 jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
10 avr. 2011 10:34:46 jade.core.messaging.MessagingService clearCachedSlice
INFO: Clearing cache
10 avr. 2011 10:34:46 jade.mtp.http.HTTPServer
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
10 avr. 2011 10:34:46 jade.core.messaging.MessagingService boot
INFO: MTP addresses:
http://192.168.1.2:7778/acc
----------------agent B----------------
10 avr. 2011 10:34:46 jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@your-ab6cd29f8e is ready.
--------------------------------------------
*** Uncaught Exception for agent pierre ***
java.lang.NumberFormatException: For input string: "( (action ( agent-identifier :name pierre@your-ab6cd29f8e:1099/JADE :addresses (sequence http://192.168.1.2:7778/acc )) (ACLMessage) ) (MTS-error ( agent-identifier :name AgentA@your-ab6cd29f8e:1099/JADE ) (internal-error "Agent not found: getContainerID() failed to find agent AgentA@your-ab6cd29f8e:1099/JADE")) )"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at AgentB$afficher.action(AgentB.java:55)
at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:340)
at jade.core.behaviours.CompositeBehaviour.action(CompositeBehaviour.java:109)
at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:340)
at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1530)
at jade.core.Agent.run(Agent.java:1468)
at java.lang.Thread.run(Thread.java:662)
ERROR: Agent pierre died without being properly terminated !!!
State was 2

j'ai essayé pas mal de fois de résoudre le problème mais j'ai pas réussi, j'ai utilisé eclipse et j'ai mis chaque class dans un workspace distinct et je ne sais pas est ce c'est juste ou non.
s'il vous plait j'ai besoin de votre aides pour avancer un peux car j'ai un projet de SMA et je dois comprendre d'abord les notions de base.Donc si quelqu'un a une idée je serais très reconnaissante cordialement...

5 réponses

islammomo Messages postés 1 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 mai 2011
17 mai 2011 à 01:40
Bjr,pr installé jade 4.0.1voici lé étapes:
Télécharger le fichier JADE-all-4[1].0.1.zip à partir du site :
http ://www.jade.tilab.com
ü Décompresser le fichier JADE-all-4[1].0.1.zip.
(Clique droit sur le nom du fichier puis cliquer sur Extraire vers JADE-all-4[1].0.1\)
ü Décompresser les fichiers (JADE-bin-4.0.1.zip, JADE-doc-4.0.1.zip, JADE-examples-4.0.1.zip, JADE-src-
4.0.1.zip).
ü Mettre à jour la variable CLASSPATH
– Clic droit sur poste de travail, choisir propriétés
– Cliquer sur l'onglet Avancé puis sur variables d'environnement,
– Une fenêtre intitulée « variables d'environnement » apparaît, dans la zone variables système,
chercher la variable d'environnement qui porte le nom CLASSPATH.
Si elle n’existe pas, cliquer sur Nouveau, puis taper CLASSPATH dans le champ Nom de la
variable, et taper le chemin du fichier jade.jar dans le champ valeur de la variable (C:\JADE-all-
4[1].0.1\JADE-bin-4.0.1\jade\lib, par exemple)
– Si elle existe, cliquer sur Modifier, puis dans le champ valeur de la variable taper « ; » suivi du
chemin du fichier jade.jar (C:\JADE-all-4[1].0.1\JADE-bin-4.0.1\jade\lib, par exemple)
– Valider par Ok.
3
happyranda Messages postés 20 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 13 novembre 2012
7 mai 2011 à 12:09
bonjour;
je travail sur un projet sma je veu installer la plateforme jade mais je ne sais pas comment l'installer jade 4.0.1 est ce que y quelque qui peu m'aidé
merci
0
cs_ghadouch Messages postés 10 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 11 février 2013
20 mai 2011 à 02:59
si vous avez des questions concernant jade je suis à votre disposition ça me fait plaisirs car j'ai admiré ce domaine.
0
yosrarihani Messages postés 3 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 10 août 2012
10 août 2012 à 11:17
Bonjour,
je veux faire communiquer deux agents sur deux machines différentes sans utiliser l'interface graphique de JADE,merci de m'aider
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
happyranda Messages postés 20 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 13 novembre 2012
3 oct. 2012 à 09:13
bonjour
je veut créé 5 agents ,
agent1 dans contenair 1
agent2 dans contenair 1
agent3 dans contenair 1
agent4 dans contenair 2
agent5 contenaire 3
les trois premiere agents envoi une variable booleen soit 0 ,1
l'agent 4 reçoi ces valeurs si c valeur tous positive =1 ce derneir envoi un message ok a 5 agent si le contraire alors agent 4 envoi message not ok
0
Rejoignez-nous