Communication JADE [Résolu]

sassion 25 Messages postés lundi 1 mars 2010Date d'inscription 23 août 2012 Dernière intervention - 9 juil. 2012 à 21:10 - Dernière réponse : happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention
- 13 nov. 2012 à 11:44
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
Afficher la suite 

Votre réponse

31 réponses

Meilleure réponse
womar 2 Messages postés lundi 4 juin 2012Date d'inscription 10 juillet 2012 Dernière intervention - 10 juil. 2012 à 18:31
3
Merci
voilà un exemple :

// send new msg
ACLMessage newmsg = new ACLMessage(ACLMessage.INFORM);
newmsg.addReceiver(AgentID.getAgentID());
newmsg.setContent("New msg");
newmsg.setConversationId("id msg");
newmsg.setReplyWith("Reply msg");
myAgent.send(newmsg);

// receive msg

MessageTemplate msgTemplate = MessageTemplate.and(MessageTemplate.and(
MessageTemplate.MatchPerformative(ACLMessage.INFORM),
MessageTemplate.MatchConversationId("id msg")),
MessageTemplate.MatchReplyWith("Reply msg"));
ACLMessage receivemsg = myAgent.receive(msgTemplate);
if (receivemsg != null) {
//
.....

}

Merci womar 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de womar
womar 2 Messages postés lundi 4 juin 2012Date d'inscription 10 juillet 2012 Dernière intervention - 10 juil. 2012 à 18:20
0
Merci
Bonjour,

est-ce que vous pouvez me monter le code java de ton envoie (send msg) et réception (receive msg).
merci
Commenter la réponse de womar
sassion 25 Messages postés lundi 1 mars 2010Date d'inscription 23 août 2012 Dernière intervention - 10 juil. 2012 à 18:37
0
Merci
Womar MERCI pour votre réponse voici un bout de code:
L'envoie de message:
private class prioriteD extends OneShotBehaviour{
int valeurRetour= 0;

public void action() {
MessageTemplate modele = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
ACLMessage msg = myAgent.receive(modele);
for(int i=1;i<=ldm.size();i++){
ACLMessage message = new ACLMessage(ACLMessage.INFORM);
message.addReceiver(new AID("DM"+i, AID.ISLOCALNAME));
listeOrdreC();
try {
System.out.println("liste des conseillers ordonner a envoyer a DM"+i);
message.setContentObject(loam);
} catch (IOException e) {e.printStackTrace();}
send(message); valeurRetour=valeurRetour+1;
}
}

public int onEnd(){
return valeurRetour;
}
}

La reception de message:


private class ordonnerAcc extends OneShotBehaviour{

int valeurRetour =0;
ArrayList l=new ArrayList();

public void action() {
MessageTemplate modele = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
ACLMessage msg = myAgent.receive(modele);
if(msg!=null)
{
try {
ArrayList list=new ArrayList();
System.out.println("voici le contenu du message desordres"+msg.getContentObject());
System.out.println("je m'appelle"+myAgent.getLocalName());
String ch=myAgent.getLocalName();
ListIterator i=ai.ldm.listIterator();
While(i.hasNext()){
AgentDecideur a=(AgentDecideur)i.next();
if(String.valueOf(ch.charAt(2)).equals(String.valueOf(a.agId))){
l=(ArrayList) msg.getContentObject();
System.out.println("accoinatance sans ordre"+a.accointance);
list= ordonnerAcc(l,a.accointance);
a.accointance=o.copie(list);
System.out.println("accoinatance avec ordre"+a.accointance);
}
}
} catch (UnreadableException e) {e.printStackTrace();}
valeurRetour=1;
}
else{valeurRetour=0;block();
}
}
public int onEnd(){
return valeurRetour;
}
}
Commenter la réponse de sassion
sassion 25 Messages postés lundi 1 mars 2010Date d'inscription 23 août 2012 Dernière intervention - 11 juil. 2012 à 10:21
0
Merci
est ce normal que si j'ai 4 agents de même type lors de l’exécution il m'affiche 2 fois seulement "Fin Agent" au lieu de 4??

est ce logique qu'a chaque exécution il m'affiche un ordre différent des messages??


S'il VOUS plait Aidez moi je suis pressé par le temps quel est l'idée qui m’échappe concernant le raisonnement de JADE.
Commenter la réponse de sassion
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 5 oct. 2012 à 16:07
0
Merci
bonjour
voila mon code pour récupérer les paramètres d’agents???? lors l’exécution il ne m'affiche rien
S'il VOUS plait Aidez moi je suis pressé par le temps


package firstAgent;
import jade.core.Agent;
import jade.core.AID;

public class ParamAgent extends Agent {

private String Visage;
/**initialisation de l'agent */
protected void setup(){
System.out.println("Hello !AgentParametre"+getAID().getName()+"est pret");
Object[]args = getArguments();
if(args != null && args.length > 0){
Visage = (String) args[0];
System.out.println("le resultat est"+Visage);
}
else {
System.out.println("aucun visage");
// detruire l'agent
doDelete();
}
}

//netyage de l'agent
protected void takeDown(){
System.out.println("Agent"+getAID().getName()+"quitter");
}


}
Commenter la réponse de happyranda
sassion 25 Messages postés lundi 1 mars 2010Date d'inscription 23 août 2012 Dernière intervention - 5 oct. 2012 à 16:32
0
Merci
Bonjour happyranda
as-tu introduit les paramètres??
Commenter la réponse de sassion
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 5 oct. 2012 à 18:24
0
Merci
bonjour sassion

oui j'ai fais ça avec la commende java jade.Boot –gui smith:ParamAgent (vrai face)
dans run configuration - new configuration - arguments

mais y rien comme résultat

aide moi svp
merci
Commenter la réponse de happyranda
sassion 25 Messages postés lundi 1 mars 2010Date d'inscription 23 août 2012 Dernière intervention - 5 oct. 2012 à 20:39
0
Merci
j'ai exécuté votre code sans arguments est ça marche il m'affiche sans visage
peut être que la balise que tu écris pour les arguments est fausse.
Commenter la réponse de sassion
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 5 oct. 2012 à 22:16
0
Merci
re salut
oui je sais il m'affiche aucun visage c le message dans le quel ou l'argument est nul
if(args != null && args.length > 0)

else System.out.println("aucun visage");
donc il passe direct a else c sa le problem
Commenter la réponse de happyranda
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 5 oct. 2012 à 22:23
0
Merci
BONJOUR
je veux l’exécute avec argument comment je peu faire ça ????

MERCI
Commenter la réponse de happyranda
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 00:33
0
Merci
bonjour
j'ai un problem mon programme ne m'affiche pas les arguments
il passe par par la boucle if
voila mon code

package firstAgent;
import jade.core.Agent;
import jade.core.AID;

public class ParamAgent extends Agent {
// valeur
private String Var;
// initialisation de l'agent
protected void setup() {
// message bienvenu
System.out.println("hello! agent parametre"+getAID().getName()+"lire");
//arguemt
Object[] args = getArguments();
if (args != null && args.length > 0) {
Var = (String) args[0];
System.out.println("prend la valeur"+Var);
}
else {
// Make the agent terminate immediately
System.out.println("non valeur");
doDelete();
}
}
// Put agent clean-up operations here
protected void takeDown() {
// Printout a dismissal message
System.out.println("agent parametre"+getAID().getName()+"terminer");
}
}
malgré quej'ai tapé dans l'onglet arguments le code suivant pour recupper les arguments:
gui jade.Boot nom agent: pakageagent.classeagent (parametres)
Commenter la réponse de happyranda
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 00:41
0
Merci
bonjour
j'ai un problem mon programme ne m'affiche pas les arguments
il passe pas par la boucle if
voila mon code

package firstAgent;
import jade.core.Agent;
import jade.core.AID;

public class ParamAgent extends Agent {
// valeur
private String Var;
// initialisation de l'agent
protected void setup() {
// message bienvenu
System.out.println("hello! agent parametre"+getAID().getName()+"lire");
//arguemt
Object[] args = getArguments();
if (args != null && args.length > 0) {
Var = (String) args[0];
System.out.println("prend la valeur"+Var);
}
else {
// Make the agent terminate immediately
System.out.println("non valeur");
doDelete();
}
}
// Put agent clean-up operations here
protected void takeDown() {
// Printout a dismissal message
System.out.println("agent parametre"+getAID().getName()+"terminer");
}
}
malgré quej'ai tapé dans l'onglet arguments le code suivant pour recupper les arguments:
gui jade.Boot nom agent: pakageagent.classeagent (parametres)
Commenter la réponse de happyranda
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 00:44
0
Merci
bonjour

j'ai un problem mon programme ne m'affiche pas les arguments
il passe pas par la boucle if
voila mon code

package firstAgent;
import jade.core.Agent;
import jade.core.AID;

public class ParamAgent extends Agent {
// valeur
private String Var;
// initialisation de l'agent
protected void setup() {
// message bienvenu
System.out.println("hello! agent parametre"+getAID().getName()+"lire");
//arguemt
Object[] args = getArguments();
if (args != null && args.length > 0) {
Var = (String) args[0];
System.out.println("prend la valeur"+Var);
}
else {
// Make the agent terminate immediately
System.out.println("non valeur");
doDelete();
}
}
// Put agent clean-up operations here
protected void takeDown() {
// Printout a dismissal message
System.out.println("agent parametre"+getAID().getName()+"terminer");
}
}
malgré quej'ai tapé dans l'onglet arguments le code suivant pour recupper les arguments:
gui jade.Boot nom agent: pakageagent.classeagent (parametres)


voila ce que m'affiche quand je l'execute


9 oct. 2012 00:37:26 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/
----------------------------------------
9 oct. 2012 00:37:26 jade.core.AgentContainerImpl init
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!
9 oct. 2012 00:37:27 jade.core.BaseService init
INFO: Service jade.core.management.AgentManagement initialized
9 oct. 2012 00:37:27 jade.core.BaseService init
INFO: Service jade.core.messaging.Messaging initialized
9 oct. 2012 00:37:27 jade.core.BaseService init
INFO: Service jade.core.mobility.AgentMobility initialized
9 oct. 2012 00:37:27 jade.core.BaseService init
INFO: Service jade.core.event.Notification initialized
9 oct. 2012 00:37:27 jade.core.messaging.MessagingService clearCachedSlice
INFO: Clearing cache
9 oct. 2012 00:37:28 jade.mtp.http.HTTPServer
INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
9 oct. 2012 00:37:28 jade.core.messaging.MessagingService boot
INFO: MTP addresses:
http://randa-PC:7778/acc
9 oct. 2012 00:37:28 jade.core.AgentContainerImpl joinPlatform
INFO: --------------------------------------
Agent container Main-Container@randa-PC is ready.
--------------------------------------------
hello! agent parametreSmith@randa-PC:1099/JADElire
non valeur
agent parametreSmith@randa-PC:1099/JADEterminer

j'attend vous reponse svp aide moiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Commenter la réponse de happyranda
womar2006 20 Messages postés mardi 17 octobre 2006Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 11:20
0
Merci
Bonjour,

l'agent n'est pas un objet vous pouvez pas injecté des arguments .
les agents communiquent entre eux en échangeant des messages.
Agent-RequestMsg :
...
ACLMessage message = new ACLMessage(ACLMessage.INFORM);
message.addReceiver(votre id agent receiver);
message.setContent("votre message ici");
send(message);
...

Agent-ReceiveMsg :
...
ACLMessage messageRecu = receive();
...
Sysout(messageRecu.getContent());

...

pour plus d'info : http://perso.limsi.fr/jps/enseignement/examsma/2005/1.plateformes_3/index-Ferguen.html
http://djug.developpez.com/java/jade/communication/
Commenter la réponse de womar2006
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 20:24
0
Merci
bonjour ;
ok mais ce que je veut moi c récupérer un argument

merci
Commenter la réponse de happyranda
womar2006 20 Messages postés mardi 17 octobre 2006Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 23:29
0
Merci
Bonjour Happyranda,


Si vous voulez passez des arguments ou un flux d'information à un agent, vous pouvez utiliser un autre agent, par exemple utilise l'agent DummyAgent de Jade.
Est ce que c'est possible de m'expliquer votre algorithme ?

Cordialement,

womar.
Commenter la réponse de womar2006
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 23:37
0
Merci
bonjour ;

ben mon travail c'est realisé 3 agent le premeir agent envoi recuper une valeur ( par argument) aprés verifié cette valeur si supérieur a 0 alors en envois messsage a deuxeme agent pour dire "good detection" sinon envoi un message au troisième agent dit le "bad detection"

agent1
agent 2
agent 3
message ''good detection" entre agent1 et agent2 aprés verification d'arguemnt
sinon
message "bad detection" entre agent1 et agent3

voila le but de mon travail svp c possibe aideeeeeeeee moi
Commenter la réponse de happyranda
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 9 oct. 2012 à 23:55
0
Merci
bonjour womar2006

j'ai bosoin ton aide dans mon travail

voila mon adress mail chikiouirima@yahoo.fr
aidé moiiiiiiiii svppppp

salutation
merciiiiii
Commenter la réponse de happyranda
womar2006 20 Messages postés mardi 17 octobre 2006Date d'inscription 13 novembre 2012 Dernière intervention - 11 oct. 2012 à 10:04
0
Merci
Salut,

en fait, pour passer des flux d'information à l'agent1, vous pouvez utilisé une interface graphique à l'agent1 ou utilisez l'agent DummyAgent de Jade.
le code de l'agent 1 est (si on utilise l'agent dummy) :

// receive msg
// filtre des msg entrant 
MessageTemplate msgTemplate = MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.INFORM),
MessageTemplate.MatchConversationId("id msg"));
ACLMessage receivemsg = myAgent.receive(msgTemplate);
if (receivemsg != null) {
  if(receivemsg.getContent() > 0 ){
    ACLMessage newmsg = new ACLMessage(ACLMessage.INFORM);
newmsg.addReceiver(Agent2ID);
newmsg.setContent("good detection");
newmsg.setConversationId("id msg");
myAgent.send(newmsg);
  } else {
         ACLMessage newmsg = new ACLMessage(ACLMessage.INFORM);
newmsg.addReceiver(Agent3ID);
newmsg.setContent("bad detection");
newmsg.setConversationId("id msg");
myAgent.send(newmsg);
  }

}



code de l'agent 2 et 3 :


MessageTemplate msgTemplate = MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.INFORM),
MessageTemplate.MatchConversationId("id msg"));
ACLMessage receivemsg = myAgent.receive(msgTemplate);
if (receivemsg != null) {
....
}



plus d'info méthode d'utilisation de l'agent dummy ici :http://perso.limsi.fr/jps/enseignement/examsma/2005/1.plateformes_3/index-Ferguen.html

cordialement
Commenter la réponse de womar2006
happyranda 20 Messages postés samedi 7 mai 2011Date d'inscription 13 novembre 2012 Dernière intervention - 12 oct. 2012 à 01:12
0
Merci
bonjour,
j'ai un pb avec la communication entre les agents, le 1er agent effectue correctement l'envoie, mais le 2eme ne reçoit rien, càd que qd le 1er agent lance correctement par contre le deuxième ne lance pas .
si qlq peut m'aider j'en serait reconnaissante;
cordialement

ps : ma question comment en lance deux agents
Commenter la réponse de happyranda

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.