java - Jade Java代理通信

标签 java agent agents-jade

我正在我的项目中为多代理平台开发jade。

我有一个主容器和一个包含代理的代理容器。

我想将数据从代理发送到代理容器或主容器..

因为我的代理是客户端,而我的主容器将是服务器。

在 Jade 架构中,我理解代理容器将包含代理。

这可能吗?

我想知道是否有 API 可以在代理之间发送数据。

提前致谢

最佳答案

我不确定您想要实现什么目标。您从 JADE 代理发送的 ACLMessage 的最终收件人是谁?是驻留在目标容器中的所有代理吗?

需要澄清的是,容器本质上是代理可以驻留的地址,它本身并不是可以发布和接收消息的实体。在 JADE 框架内,代理具有 ACLMessages 的“收件箱”,基本上是一个包含收到消息列表的 BlockingQueue 对象。代理能够观察自己的列表并在其生命周期进行时处理它们。容器不具备这种能力。

可以通过添加收件人和其他详细信息将 ACL 消息定向到特定代理。接收消息的代理可以利用 MessageTemplate 监听特定的 ACLMessage,您可以根据匹配条件从代理的“收件箱”中专门选择消息,例如:

Messagetemplate mt = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
ACLMessage msg = myAgent.receive(mt);

将允许代理从其“收件箱”获取下一条 ACLMessage.INFORM 消息。

要获得更多能力,我建议你浏览 Jade API .

此外,我相信您正在尝试实现的目标是向容器内的所有代理发送消息。您可以向 AMS 代理查询平台上的代理列表,然后按 ContainerID 过滤它们。这里有一些代码可以帮助您入门:

AMSAgentDescription[] agents = null;
SearchConstraints sc = new SearchConstraints();
// if multiple searchs are done, isolate them based on the name of searching agent
sc.setSearchId(getAID().getName());
sc.setMaxResults(new Long(-1)); // long value of -1 means get all agents
agents = AMSService.search(this, new AMSAgentDescription(), sc); //Query AMS agent for available agents

此代码将检索平台上向 AMS 代理注册的所有可用代理的列表。祝你好运,如果有任何问题请发帖:)

关于java - Jade Java代理通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38119553/

相关文章:

Java: 'agent' 对象内部的 'world' 对象如何获取有关 'world' 的信息?

java - 如何在 Agentspeak 中获取文字的值

java - 使用 JADE 和 Excel 的问题

java - 规范路径不起作用

java - 获取 Mockito 错误 : "Wanted but not invoked... actually, there were zero interactions with this mock"

facebook - 作为移动设备的 OAuth Facebook 页面(useragent 和 cordova)

java - JADE Agent 未添加到代理列表

java - "cannot create agent , not found - Caused by "远程创建JADE容器

java - 检测 Java Swing 组件是否被隐藏

java - 在 Java 中使用 String 创建我自己的 BigInteger