首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jade两个智能体通信

Jade两个智能体通信
EN

Stack Overflow用户
提问于 2015-02-23 18:39:58
回答 2查看 4K关注 0票数 2

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

使用Jade,我尝试编写以下代码:

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

-Agent2有addBehaviour(新的CyclicBehaviour()

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

有什么建议吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-03-05 02:35:19

没有必要同时创建循环和自动收报机行为,您只需首先运行接收器代理,然后发送您的消息,下面的示例进行了测试:

代码语言:javascript
复制
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());
    } 
}

然后运行发送器one:

代码语言:javascript
复制
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);
  }
}
票数 6
EN

Stack Overflow用户

发布于 2019-07-12 18:42:02

  1. 如果没有源代码,将很难找到您的错误。
  2. 只有当您想要发送和接收一次消息时,steevn提出的解决方案才有效,因为一切都在设置中完成。所以它不符合你正在寻找的东西。
  3. 没有必要在接收中有一个循环,在simpleBehaviour中加上

()就足够了。

请参阅this example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28671830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档