【问题标题】:anylogic, process modeling library: split. How can I set and reference the properties of the copy of an agent?anylogic,流程建模库:split.如何设置和引用代理副本的属性?
【发布时间】: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 块应该不会走错路线。

标签: process split anylogic


【解决方案1】:

在您完成代理的完整副本之前,似乎触发了 SelectOutput 块的事件。

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

【讨论】:

    【解决方案2】:

    这是由于在代理副本退出拆分块之前检查了 SeletOutput 块中指定的条件,因此在退出复制代码框中初始化之前。 需要在Split块的参数New agent(copy)中指定如下Java代码,在校验前初始化传入代理的副本:

    new MyAgent(agent.someBooleanParameter, ...)
    

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 2014-05-16
      • 2018-05-02
      • 2017-09-06
      • 2018-04-26
      • 2017-03-31
      • 1970-01-01
      • 2021-09-05
      • 2015-02-21
      相关资源
      最近更新 更多