我刚开始使用基于JADE代理的建模。我的hello world示例如下所示 -
public class HelloWorldAgent extends Agent {
protected void setup() {
System.out.println("Hello World! My AID is "+this.getAID());
}
}
我在外面这样叫 -
public class Main {
public static void main(String[] args) {
HelloWorldAgent helloWorldAgent = new HelloWorldAgent();
helloWorldAgent.setup();
}
}
我看到的输出是 -
Hello World! My AID is null
现在,我的问题是如何设置AID,因为只有get方法而且没有" set"方法。由于它不可用,我怀疑AID是自动分配的东西。是这样吗?如果是,我如何确保代理获得AID?感谢。
答案 0 :(得分:4)
我建议你首先创建一个容器。您可以在主方法中尝试这种方式:
public static void main(String[] args) throws Exception {
ProfileImpl p = new ProfileImpl();
p.setParameter(Profile.MAIN_HOST, "localhost");
p.setParameter(Profile.GUI, "true");
ContainerController cc = Runtime.instance().createMainContainer(p);
AgentController ac = cc.createNewAgent("myAgent", "HelloWorldAgent", new Object[] { });
ac.start();
}
getAID()。getLocalName()将返回" myAgent"在这种情况下。
答案 1 :(得分:0)
从我所看到的,你并没有真正使用JADE框架。您只是调用helloWorldAgent.setup()方法。试试这个以启动JADE注意只启动选项0,1和2是必要的。
public static void main(String[] args) {
// TODO code application logic here
String[] bootOptions = new String[7];
bootOptions[0] = "-gui";
bootOptions[1] = "-local-port";
bootOptions[2] = "1111";
bootOptions[3] = "-container-name";
bootOptions[4] = "Launch container";
bootOptions[5] = "-agents";
bootOptions[6] = "myFirstAgent:package.HelloWorldAgent";
jade.Boot.main(bootOptions);
}