在我的agent程序中(使用jade),我有5个agent,其中一个agent是协调器,其他的是设备agent。所有4个设备代理都向协调器发送一个数组。
我希望协调器接收所有4个数组,并将它们存储为单个数组。我该怎么做呢?
我通过ACLmessage(字符串)发送消息
发布于 2019-07-12 18:52:50
你应该在4条消息中用msg.setContentObject((Serializable)yourObject)
yourLocalObject=(yourObjectType) msg.getContentObject();globalarray.merge(yourLocalObject)发送你的数组
发布于 2014-12-16 00:29:19
我建议协调员使用jade.proto.AchieveREInitiator行为。这允许与多个响应者进行简单的对话。
响应者,你的4个设备代理将以jade.proto.AchieveREResponder behiours响应。
在协调器端,代码应该看起来像这样
class CoordinatorRequestService extends AchieveREInitiator
{
String agentName;
String Service;
public CoordinatorRequestService (Agent a, ACLMessage msg,String Service ,String agentLocalID) {
super(a, msg);
// TODO Auto-generated constructor stub
this.agentName=agentLocalID;
this.Service=Service;
}
protected Vector prepareRequests(ACLMessage predefinedRequest)
{
ACLMessage requestmsg=new ACLMessage(ACLMessage.REQUEST);
requestmsg.addreciever(//add your agents here)
requestMsgVector.add(requestmsg);
return requestMsgVector;
}
protected void handleInform(ACLMessage inform)
{
recieveData=inform.extractDataRecieved();
globalarray.append(recieveData)
}谷歌找到更多的合同网的例子,并实现沟通。
祝你好运
https://stackoverflow.com/questions/25097365
复制相似问题