【问题标题】:Jade Two Agents communication翡翠二代通讯
【发布时间】:2015-02-23 10:39:57
【问题描述】:

我想设计两个代理 Agent1 在不同的时间向 Agent2 发送两个消息值。 Agent2 然后根据接收到的值执行一个动作。

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

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

-Agent2 有 addBehaviour(new CyclicBehaviour()

当我运行程序时,我什么也得不到。如果我只发送一个值,同样的程序也可以工作。

有什么建议吗?

谢谢

【问题讨论】:

    标签: agents-jade


    【解决方案1】:

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

    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);
      }
    }
    

    【讨论】:

      【解决方案2】:
      1. 如果没有您的源代码,将很难找到您的错误。
      2. steevn 提出的解决方案仅在您想发送和接收一次 msg 时才有效,因为一切都在设置中完成。所以它不符合您要查找的内容。
      3. 接收中不需要有循环,一个简单的行为和 done() 为假就足够了。

      this example

      【讨论】:

        猜你喜欢
        • 2010-10-05
        • 2018-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多