如何为JADE Agent设置AID?

时间:2017-09-21 17:30:55

标签: java agents-jade agent-based-modeling

我刚开始使用基于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?感谢。

2 个答案:

答案 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);


    }