我在 JADE 中有以下要求。我必须创建多个代理,其任务是生成随机数。另一个接收器代理收集所有生成的随机数并将它们相加以做出决定。这是sender agent类扩展了tickerbehaviour,其tick onTick方法如下
protected void onTick()
{
ACLMessage msg_LoadDetails = new ACLMessage(ACLMessage.INFORM);
msg_LoadDetails.addReceiver(new AID("LoadCoordinator", AID.ISLOCALNAME));
msg_LoadDetails.setContent(String.valueOf(getLoad()));
LoadConv.send(msg_LoadDetails);
//load = (int)(Math.random()*1000+1);
}
接收器类扩展循环行为,其动作方法如下
public void action()
{
ACLMessage msg_IncomingLoadDetails = LoadCoordinator.receive();
if(msg_IncomingLoadDetails!=null)
totalLoad = Integer.parseInt(msg_IncomingLoadDetails.getContent());
if(totalLoad>500)
{actioncommand = "off";}
else
{actioncommand = "on";}
System.out.println("The current load is:" +totalLoad+ "; the load will be switched " +actioncommand);
block();
}
这里的问题是接收到的值仅适用于我创建的一个代理(从控制台)。我想接收所有创建的代理的值。这是否需要我创建一组代理?如何从许多代理消息中读取值?由于我是 JAVA 和 JADE 的新手,有人可以帮忙提供代码吗?