Anylogic:条件不总是以相同的方式工作

huangapple go评论54阅读模式
英文:

Anylogic: condition doesn't work always in the same way

问题

((agent.DEG_MED)<=(agent.DEG_REG)).
-(agent.DEG_MED) 是一个双精度数。
-(agent.DEG_REG) 是一个双精度数。
如果条件成立 --> agent.DEG_MED保持不变。
如果条件不成立 --> agent.DEG_MED变为等于agent.DEG_REG。


示例 1. 正确的假条件

输入 > 12.675171736997056

输入 > 1.0

假 12.675171736997056

假 1.0


示例 2. 错误的真条件

输入 > 3.454258675078864

输入 > 1.0

真 3.454258675078864

真 1.0


在示例2中,我应该得到一个假的结果,但结果却是真的。我看不出与示例1有什么区别。

真的需要一些帮助!

谢谢

英文:

I've got a selectOutput block with the following condition:
((agent.DEG_MED)<=(agent.DEG_REG)).

-(agent.DEG_MED) is a double

-(agent.DEG_REG) is a double

if condition is true --> agent.DEG_MED stay the same

if condition is false --> agent.DEG_MED became equals to agent.DEG_REG


ex 1. correct FALSE CONDITION

IN> 12.675171736997056

IN> 1.0

FALSE 12.675171736997056

FALSE 1.0


ex. 2 incorrect TRUE CONDITION

IN> 3.454258675078864

IN> 1.0

TRUE 3.454258675078864

TRUE 1.0


In the ex.2 I should have FALSE exit, but it results to be true. I dont'see any difference with ex.1.

Really need some help!

Thanks

答案1

得分: 0

你可能在值实际更改之前重新评估条件。

在SelectOutput之前放置一个Delay对象(延迟时间为0),这允许引擎实际更新您的第二个值。

PS:这是一个常见问题,在这个地方搜索“on at exit”或SelectOutput。

英文:

You likely re-evaluate the condition before the value actually has been changed.

Put a Delay object (with 0 delay time) before the SelectOutput, this allows the engine to actually update your 2nd value.

PS: This is a common issue, search this place for "on at exit" or SelectOutput

huangapple
  • 本文由 发表于 2023年5月10日 17:16:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/76216742.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定