如何在 Anylogic 中通过代码实例化一个 Agent
How to instantiate an Agent via code in Anylogic
我在使用 Anylogic 时遇到问题:我正在编写一个函数,我需要在其中声明一个现有代理类型的新项目。
如果我用代码声明它:
MyAgent name = new MyAgent();
一切正常,但是当我尝试执行一个函数来更改内部值时,
name.func();
给我一个NullPointerException
,因为声明的MyAgent
的内部变量好像不存在。
我错过了什么?
非常感谢您的帮助
某些函数在以编程方式创建的代理中不可用,例如默认的随机数生成器和传递给代理的某些其他实用函数。
所以如果你这样做,例如它不会工作,你会得到一个 NPE(空指针异常)
而总是使用人口 - 除非你知道你不会使用任何这些内部功能。
MyAgent name = add_myAgents();
其中 myAgents
是人口。
当你有人口时使用 add_myAgents() 方法,但如果你不想使用定义的人口,你必须这样做:
MyAgent m=new MyAgent();
m.createAndStart(anyAgent);
m.lognormal(0.1,0.1,5);
createAndStart 为您施展魔法。
anyAgent 实际上可以是您模型的任何现有代理(例如 main),人口仍将在您的 top-level 代理的默认人口中创建,无论您在那里放什么。
我在使用 Anylogic 时遇到问题:我正在编写一个函数,我需要在其中声明一个现有代理类型的新项目。 如果我用代码声明它:
MyAgent name = new MyAgent();
一切正常,但是当我尝试执行一个函数来更改内部值时,
name.func();
给我一个NullPointerException
,因为声明的MyAgent
的内部变量好像不存在。
我错过了什么?
非常感谢您的帮助
某些函数在以编程方式创建的代理中不可用,例如默认的随机数生成器和传递给代理的某些其他实用函数。
所以如果你这样做,例如它不会工作,你会得到一个 NPE(空指针异常)
而总是使用人口 - 除非你知道你不会使用任何这些内部功能。
MyAgent name = add_myAgents();
其中 myAgents
是人口。
当你有人口时使用 add_myAgents() 方法,但如果你不想使用定义的人口,你必须这样做:
MyAgent m=new MyAgent();
m.createAndStart(anyAgent);
m.lognormal(0.1,0.1,5);
createAndStart 为您施展魔法。
anyAgent 实际上可以是您模型的任何现有代理(例如 main),人口仍将在您的 top-level 代理的默认人口中创建,无论您在那里放什么。