英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论