我正在尝试在分布式网络上安装多代理系统(Windows计算机和安装了Raspbian OS的Raspberry pi)。我使用以下命令在Windows上启动我的Jade平台:
customfield_data_id
我还使用以下命令在Raspbian上启动我的Jade平台:
custom_field_data
这是两台计算机上的Starter.java:
java mylibrary jade.Boot -gui -platfrom-id Platform1 -agents starter:Starter
此外,这是我的窗口中的mtpaddress:java mylibrary jade.Boot -gui -platform-id Raspy1 -agents starter:Starter
,这也是我的树莓派中的mtpaddress:import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
import java.util.Arrays;
public class Starter extends Agent {
@Override
protected void setup() {
System.out.println("Setup of starter agent");
addBehaviour(new ReceiveBehaviour());
}
private class ReceiveBehaviour extends CyclicBehaviour {
@Override
public void action() {
ACLMessage msg = myAgent.receive();
if (msg != null) {
System.out.println(msg.getContent());
System.out.println(Arrays.toString(msg.getSender().getAddressesArray()));
ACLMessage reply = msg.createReply();
reply.setContent("I got it. Thank you " + msg.getSender().getName());
myAgent.send(reply);
} else {
block();
}
}
}
}
我的两台计算机都使用wifi连接到本地网络(无线调制解调器)。
现在发生的是,我在两台计算机上都启动了平台,在Windows上启动了DummyAgent,然后尝试向raspbian平台发送消息。因此,我添加了一个接收器,并将名称和地址添加为图片
以下: http://192.168.1.6:7778/acc
这是控制台输出:
http://raspy1:7778/acc
我可以从树莓派上的DummyAgent发送消息到我的Windows平台,但是不会发生相反的情况。我该怎么办?
答案 0 :(得分:0)
在分布式智能网格环境中,我们广泛地在不同机器(Win,Linux,Mac)之间使用JADE通信。
为了允许我们的代理之间进行通信,我们建立了一个名为CEA(中央执行代理的缩写)的中央代理,该代理为代理之间的通信中介提供服务。例如。他拥有并维护着中央电话簿。所有代理商都在此CEA代理商处注册。反过来,CEA代理可以提供已知应用程序代理的确切地址。
要在CEA上注册,代理商需要知道其地址。该地址包含代理名称,平台名称,CEA的MTP-URL和MTP端口。在下面的示例中,如果我们在不同的计算机上,则将发现如何配置AID。
public AID getAID(){
String ceaName = this.getAgentName();
String platformName = this.getPlatformName();
String mtpProtocol = this.getMtpType();
String mtpUrl = this.getUrlOrIp();
int mtpPort = this.getMtpPort();
String ceaGUID = ceaName + "@" + platformName;
String ceaMTPAddress = mtpProtocol.toLowerCase() + "://" + mtpUrl + ":" + mtpPort + "/acc";
AID aid = new AID(ceaGUID, true);
aid.addAddresses(ceaMTPAddress);
return aid;
}
因此,最重要的是,与本地ACLMessages(在同一平台上的代理之间发送)相比,您需要将远程JADE平台的MTP信息添加到AID。我不确定JADE可视化/ UI是否能够做到这一点。
关于R'Pi的所示MTP地址,我怀疑URL http://raspy1:7778/acc是否可以在本地网络中解析(除非您运行的DNS可以转换“ raspy1”)。最好您使用特定的MTP设置来启动两个平台,以便使用IP地址代替名称(请参阅《 JADE管理员指南》)。