我们可以为GUI设计的代理定义构造函数吗?

时间:2019-01-23 16:39:15

标签: anylogic

我创建了一个GUI设计的代理MyBatch。我想知道是否可以为此代理定义一个构造函数。

更具体地说,我需要在fluidToAgent中使用它,我希望新的Agent成为MyBatch的类型。

但是

New agent = new MyBatch() 

给我一​​个“空”的MyBatch,我想在其中添加一些类似的东西

New agent = new MyBatch(batch.variable_1, batch.variable_2, etc...)

以便我可以使用当前批处理中包含的数据初始化New agent

谢谢

1 个答案:

答案 0 :(得分:0)

最简单的方法是将参数添加到GUI构造的代理中。然后

new agent = new MyBatch( param1, param2...)

您可以转到代理属性窗口以查看应传递参数的顺序。这将传递并设置参数,然后可以使用OnStartUp操作执行您想要的任何逻辑。

要注意的一个重要事项是,如果通过new MyBatch()创建AnyLogic代理,则还必须调用 createAndStart(anyAgent)来初始化画布上的任何对象。

如果您使用大量MyBatch,然后使用

new agent = add_populationMyBatch( param1, param2, ...) 

您不必担心调用createAndStart

另一种替代方法是在MyBatch中拥有自己的初始化功能。您可以通过new agent = new MyBatch()创建代理,然后调用agent.init(传入的变量)。在init中,您可以调用createAndStart以及您想要的任何其他代码。