Communication JADE

[Résolu]
Signaler
Messages postés
25
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
23 août 2012
-
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012
-
Bonjour,

Vraiment je suis bloqué. j'ai un problème lors d'envoie de message. AVEC JADE
En fait, j'utilise 3 familles d'agents qui s’exécutent simultanément. mon problème est que il y a un conflit de message, un message envoyé par Agent1 doit être traité au niveau du comportement 2 de l'agent Agent2 alors que ce message arrive a l'agent Agent2 lorsque ce lui ci est entrain d’exécuter le comportement 1 donc le message en question sera mal traité ou bien je vais avoir des exceptions

Sil vous plait aidez moi

31 réponses

Messages postés
20
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
13 novembre 2012

Salut,

est ce que chaque agent "receiver" a un behavior active ?
Messages postés
25
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
23 août 2012

Bonjour,
lors de l'envoie et de la réception de message tu dois suivre les paramètres suivants:

Envoie de message:
ACLMessage mes1 =  new ACLMessage(ACLMessage.CFP);
mes1.addReceiver(new AID("AM"+agent, AID.ISLOCALNAME));
mes1.setConversationId("1");


Reception de message
MessageTemplate modele  = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.INFORM),MessageTemplate.MatchConversationId("1"));	 
ACLMessage msg = myAgent.receive(modele);
while(msg==null && myAgent.getLocalName().equals("DM1")){
block();
modele = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.INFORM),
                          MessageTemplate.MatchConversationId("1"));	 
 msg = myAgent.receive(modele);
  }
if(msg!=null){
}
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012

bonjour
pour l'agent émetteur qui envoi un chiffre aléatoire voila le code :
import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.*;
import jade.lang.acl.*;

@SuppressWarnings({ "serial", "unused" })
public class SendAgentDetection extends Agent {


protected void setup(){

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

}
private class envoiChiffre extends OneShotBehaviour{


@Override
public void action() {
System.out.println("envoi de la valeur ");

int V = (int)(Math.random()*10);
System.out.println("envoi de la valeur "+ V);
ACLMessage message = new ACLMessage(ACLMessage.INFORM);
message.addReceiver(new AID("agentverification",AID .ISLOCALNAME));
message.setContent(V+"");
send(message);
}

}
private class fin extends OneShotBehaviour{

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

}
le code de l'agent récepteur qui recevoir le chiffre et vérifie si ce chiffre est supérieur a après il affiche un message

import jade.core.Agent;
import jade.core.behaviours.*;
import jade.lang.acl.*;

@SuppressWarnings("serial")
public class ReceiverAgent extends Agent {
int V;

protected void setup()
{
addBehaviour(new CyclicBehaviour(this)
{
/**
*
*/
private static final long serialVersionUID = 1L;

public void action() {
ACLMessage messageRecu= receive();
V= Integer.parseInt(messageRecu.getContent());
if (V > 5)
System.out.println( " la valeur est " + V);
System.out.println( " good verification");
block();
}
// else envoi un message a l'agentINTERACTION


private ACLMessage receive() {
// TODO Auto-generated method stub
return null;
}
});


}
@SuppressWarnings("unused")
private class fin extends OneShotBehaviour{
@Override
public void action() {
System.out.println("fin de l'agent");
myAgent.doDelete();
}
}
}


ps : le problème quand je lance le programme il exécute que l'agent émetteur comment je peut l’exécuté les deux agents

merciiiiiiiiiiiiiiii
Messages postés
25
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
23 août 2012

lors de la création des agents ils sont déjà lancé et travaillent de manière asynchrone chacun de sa part et pour les messages fait comme je t'ai dit et tout marchera Bien.
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012

re salut sassion
j'ai pas bien compris ce que tu ma dis si possible donne moi plus de détails sur le code est ce je met ça a la place de mon code ou bien dans une nouvelle classe ....???
Envoie de message:
ACLMessage mes1 = new ACLMessage(ACLMessage.CFP); 
mes1.addReceiver(new AID("AM"+agent, AID.ISLOCALNAME)); 
mes1.setConversationId("1");


Reception de message
MessageTemplate modele = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.INFORM),MessageTemplate.MatchConversationId("1"));
ACLMessage msg = myAgent.receive(modele); 
while(msg==null && myAgent.getLocalName().equals("DM1")){ 
block(); 
modele = MessageTemplate.and(MessageTemplate.MatchPerformative(ACLMessage.INFORM), 
MessageTemplate.MatchConversationId("1")); 
msg = myAgent.receive(modele); 
} 
if(msg!=null){ 
} 
Messages postés
25
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
23 août 2012

tu ajoute ça dans les comportements des messges tu dois ajouter ces paramètres lors de lenvoie et la reception de message
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012

bonjour
svp je travail avec la plateforme jade
j'ai une erreur et je ne sais pas c koi la signification ou comment
je pu résoudre c pbm

ATTENTION: Automatic main-detection mechanism initialization failed
(Error setting up multicast socket [nested java.net.SocketException:
IP_ADD_MEMBERSHIP failed (out of hardware filters?)]). Mechanism
disabled!

aidée moi svppppppp merci d'avance .
salutation
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012

bonjour ;
les amis aid moi svppppppppppp

j'ai crée deux agent émetteur et récepteur mais lors de l'envoi message l'agent émetteur initialise son adresse dans le champs de reciever au lieu dans le champs sender
Messages postés
20
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
13 novembre 2012

Bonjour Happyranda,

Vous pouvez spécifier le destinataire en utilisant msg.addReceiver(agent id de vos destinataires)

Cordialement womar.

bonjour ;
les amis aid moi svppppppppppp

j'ai crée deux agent émetteur et récepteur mais lors de l'envoi message l'agent émetteur initialise son adresse dans le champs de reciever au lieu dans le champs sender.



Il meurt d'envie de devenir .....
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012

re bonjour
oui j'ai specifier le distinataire avec
message.addReceiver(new AID("Smith", AID.ISLOCALNAME));
send(message);


mais le probleme lorsque j'utilise l'interface jade pour envoyé le message il m'affiche dans la fenetre de ACLMessage dans le chmaps receiver le nom de l'agent emetteur au lieu de le mettre dans le champs de sender

sender :
receiver : Agent2@randa-PC:1999/JADE

je ne sais pas si j'arrive a t'expliqué mon pbm
merci d'avance
Messages postés
20
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
13 novembre 2012

re bonjour
oui j'ai specifier le distinataire avec
message.addReceiver(new AID("Smith", AID.ISLOCALNAME));
send(message);


mais le probleme lorsque j'utilise l'interface jade pour envoyé le message il m'affiche dans la fenetre de ACLMessage dans le chmaps receiver le nom de l'agent emetteur au lieu de le mettre dans le champs de sender

sender :
receiver :Smith @randa-PC:1999/JADE

je ne sais pas si j'arrive a t'expliqué mon pbm
merci d'avance CHER AMIIIIIIIIIII