Process anylogic,流程建模库:拆分。如何设置和引用代理副本的属性?

Process anylogic,流程建模库:拆分。如何设置和引用代理副本的属性?,process,split,anylogic,Process,Split,Anylogic,我希望在流程模型中使用分割块,以创建具有相同参数的传入代理的副本 我所做的:声明一个函数SetupCopy(agent,original),其中包含输入参数agent(它是副本)和original(它是传入代理)。该函数将相关参数设置为agent.someBooleanParameter=original.someBooleanParameter。 在“退出复制时:SetupCopy(代理,原始)”中的分割块中调用该函数 问题:在分割块的输出复制端口之后,我使用了一个selectOutput块,

我希望在流程模型中使用分割块,以创建具有相同参数的传入代理的副本

我所做的:声明一个函数SetupCopy(agent,original),其中包含输入参数agent(它是副本)和original(它是传入代理)。该函数将相关参数设置为agent.someBooleanParameter=original.someBooleanParameter。 在“退出复制时:SetupCopy(代理,原始)”中的分割块中调用该函数

问题:在分割块的输出复制端口之后,我使用了一个selectOutput块,设置为Select true output:if condition is true:agent.someboolean参数 我希望此参数等于原始代理的相应参数。但是,输出块总是将参数求值为false

我已经尝试通过在exit上设置(false)来获得参数控制台的输出:System.out.println(agent.somebooleanparmeter)

如果原始代理的参数为true,则控制台上的输出也为true,尽管select块通过false端口退出。 我很困惑。我犯了什么错

有人能帮我设置代理复制实例的参数,并正确引用参数吗


谢谢

在您完成代理的复制之前,似乎触发了SelectOutput block事件


要验证这一点,只需在这些块之间添加一个队列,并检查问题是否仍然存在。

似乎在您完成代理的复制之前触发了SelectOutput块事件


要验证这一点,只需在这些块之间添加一个队列,并检查问题是否仍然存在。

这是由于在代理复制退出拆分块之前,以及在退出复制代码框中初始化之前,检查SeletOutput块中指定的条件而发生的。 您需要在分割块的参数New agent(copy)中指定以下Java代码,以便在检查之前初始化传入代理的副本:

new MyAgent(agent.someBooleanParameter, ...)

发生这种情况的原因是,在代理复制退出拆分块之前,以及在退出复制代码框中初始化之前,选中了SeletOutput块中指定的条件。 您需要在分割块的参数New agent(copy)中指定以下Java代码,以便在检查之前初始化传入代理的副本:

new MyAgent(agent.someBooleanParameter, ...)

除了解释之外,您可以提供的任何代码示例或代码片段都会很有帮助。非常感谢。你所做的看起来是正确的。如果println语句为printing true,并且它是从SelectOutput的Outp端口调用的,那么这应该意味着您的复制过程工作正常,并且SelectOutput块不可能走上错误的路线。除了解释之外,您可以提供的任何代码示例或代码片段都会很有帮助。非常感谢。你所做的看起来是正确的。如果println语句是printing true,并且它是从SelectOutput的outp端口调用的,那么这意味着您的复制过程工作正常,并且SelectOutput块不可能走错路径。