【问题标题】:"On exit" vs "On at exit" in AnylogicAnylogic中的“退出时”与“退出时”
【发布时间】:2022-01-20 14:48:28
【问题描述】:

Anylogic Process Modeling Library 中很少有像“Source”这样的块具有像“On exit”和“On at exit”这样的动作。两者有什么区别?

我试图创建一个简单的流程:

源 -> 选择输出 -> 服务 -> 接收器

源块创建的代理具有布尔属性“is_vip”。 当我在源的“退出时”操作中将 agent.is_vip 分配为 true 或 false 时,路由不起作用,但是当我将逻辑移动到源块的“退出时”时,路由开始工作。

【问题讨论】:

标签: anylogic


【解决方案1】:

这里没有问题,但你是对的,这就是盒子之间的区别。 OnAtExit 在代理退出块之前进行评估。 OnExit 在它离开后被评估。

如果像 SelectOutput 这样的下游块依赖于上游的某些更改,如果在上游 OnExit 中完成,它们将不会被注册,因为代理已经在 SelectOutput 块中。

使用 OnAtExit 总是更安全

【讨论】:

  • 这样说对吗,因为 SelectOutput 只是传递,所以在源块中退出时发生的代理的状态更改不会在 selectOutput 块中得到“评估”?但是如果是其他一些像延迟这样的块,状态变化会在代理到达延迟块之前发生吗?
  • 延迟块也一样,试试看。进入延迟块的 OnEnter 时,代理不会注册上游 OnExit 更改。但在那之后,它被注册了。这可能看起来很奇怪,但确实有道理(如果你知道自己在做什么:))
猜你喜欢
  • 2021-11-12
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2023-02-06
  • 2010-10-09
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多