【发布时间】:2014-09-25 16:02:49
【问题描述】:
在我的代理程序(使用玉)中,我有 5 个代理,其中一个代理是协调器,其他代理是设备代理。所有 4 个设备代理都向协调器发送一个数组。
我希望协调器接收所有 4 个数组并将它们存储为单个数组。我该怎么做?
我通过 ACLmessage(strings) 发送消息
【问题讨论】:
-
协调器中收到的消息是如何处理的?
标签: java agent agents-jade
在我的代理程序(使用玉)中,我有 5 个代理,其中一个代理是协调器,其他代理是设备代理。所有 4 个设备代理都向协调器发送一个数组。
我希望协调器接收所有 4 个数组并将它们存储为单个数组。我该怎么做?
我通过 ACLmessage(strings) 发送消息
【问题讨论】:
标签: java agent agents-jade
msg.setContentObject((Serializable)yourObject) 发送您的数组
yourLocalObject=(yourObjectType) msg.getContentObject();
globalarray.merge(yourLocalObject)
【讨论】:
我建议使用协调器的 jam.proto.AchieveREInitiator 行为。这允许与多个响应者进行简单的对话。
响应者,您的 4 个设备代理将响应 jam.proto.AchieveREResponder 行为。
代码在协调器端应该看起来像这样
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)
}
谷歌寻找更多Contract net的例子,实现交流。
祝你好运
【讨论】: