Jade Two Agents沟通

时间:2015-02-23 10:39:58

标签: agents-jade

我想设计两个代理Agent1在不同的时间向Agent2发送两个消息值。然后,Agent2根据收到的值实施操作。

使用Jade,我尝试编写以下内容:

-Agent1有两个addBehaviour(新的TickerBehaviour(this,time)方法

-Agent2有addBehaviour(新的CyclicBehaviour()

当我运行程序时,我得不到任何东西..如果我只发送一个值,同样的程序也可以工作..

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:6)

无需同时创建循环和自动收录器行为 你只需要先运行接收器代理,然后发送你的消息,测试下面的例子:

import jade.core.Agent;
import jade.lang.acl.ACLMessage;


public class AgentReceiver extends Agent {
    public void setup(){
      ACLMessage msg = null;
      msg = blockingReceive();
      System.out.println(msg.getContent());
    } 
}

然后运行发件人:

import jade.core.AID;
import jade.core.Agent;
import jade.lang.acl.ACLMessage;


public class AgentSender extends Agent {
  public void setup(){
      ACLMessage message = new ACLMessage(ACLMessage.INFORM);
      message.addReceiver(new AID("AgentReceiver", AID.ISLOCALNAME));
      message.setContent("Hello The World");
      send(message);
  }
}

答案 1 :(得分:0)

  1. 没有源代码,将很难找到错误。
  2. steevn提出的解决方案仅在您要发送和接收一次味精的情况下才有效,因为一切都在设置中完成。因此它与您要查找的内容不符。
  3. 接收中没有必要进行循环操作,只需将done()设置为false的simpleBehaviour就足够了。

请参见this example