anylogic,流程建模库:split.如何设置和引用代理副本的属性?
Posted
技术标签:
【中文标题】anylogic,流程建模库:split.如何设置和引用代理副本的属性?【英文标题】:anylogic, process modeling library: split. How can I set and reference the properties of the copy of an agent? 【发布时间】:2016-10-06 08:38:06 【问题描述】:我想在流程模型中使用 拆分块,以便创建具有相同参数的传入代理的副本。
我所做的:声明一个函数 SetupCopy(agent, original),其输入参数为 agent(即副本)和 original(即传入代理)。该函数将相关参数设置为agent.someBooleanParameter = original.someBooleanParameter。 该函数在“退出副本:SetupCopy(agent, original)”的分割块中调用。
问题:在 split 块的 outCopy 端口之后,我使用了一个带有设置的 selectOutput 块 Select true output: if condition is true: agent.someBooleanParameter 我希望这个参数等于原始代理的相应参数。但是,输出块始终将参数评估为 false。
我已经尝试通过设置 On exit(false): System.out.println(agent.someBooleanParameter); 来获取参数控制台的输出。
如果原始代理的参数为真,则控制台上的输出也为真,尽管选择块通过假端口退出。 让我很困惑。我的错误是什么?
谁能帮我设置代理复制实例的参数并正确引用参数?
谢谢
【问题讨论】:
除了解释之外,您可以提供的任何代码示例或 sn-ps 都会有所帮助。谢谢! 你所做的看起来是正确的。如果该 println 语句打印为 true 并且它是从 SelectOutput 的 outF 端口调用的,那么这应该意味着您的复制过程正常工作,并且 SelectOutput 块应该不会走错路线。 【参考方案1】:在您完成代理的完整副本之前,似乎触发了 SelectOutput 块的事件。
要验证这一点,只需在这些块之间添加一个队列并检查问题是否仍然存在。
【讨论】:
【参考方案2】:这是由于在代理副本退出拆分块之前检查了 SeletOutput 块中指定的条件,因此在退出复制代码框中初始化之前。 需要在Split块的参数New agent(copy)中指定如下Java代码,在校验前初始化传入代理的副本:
new MyAgent(agent.someBooleanParameter, ...)
【讨论】:
以上是关于anylogic,流程建模库:split.如何设置和引用代理副本的属性?的主要内容,如果未能解决你的问题,请参考以下文章
Anylogic:如何根据代理的参数在 ResourcePool 中对设置时间(工具更换)进行建模?