【问题标题】:AnyLogic MessagingAnyLogic 消息传递
【发布时间】:2021-12-16 23:22:48
【问题描述】:

我正在尝试设置从一个状态到另一个状态的条件。我创建了三个不同的变量 A、B、C。每个变量都设置有类型:init 和初始值 uniform_discr(0, 5)。我设置的触发器是条件(A+B+C)>5。如果条件为真,则可以进入另一个状态。但是,当我运行模型时,它只运行一次并立即开始下降到图表中。你能帮我看看为什么会这样吗?以及如何设置从一种状态到另一种状态的不同消息?我应该创建连接而不是变量吗?

【问题讨论】:

    标签: message anylogic


    【解决方案1】:

    永远不要使用条件转换,它们很少按您期望的方式工作(尽管它们工作 100% 正确)。

    您始终可以将这些替换为基于消息的转换,这在计算上也更加高效。

    在您的情况下,每当 A、B 或 C 的值以任何方式更改时,您也会执行

    if (A+B+C > 5) myStateChart.FireEvent("new state");
    

    你的状态中的 msg 转换实际上需要字符串“新状态”

    采用这种定义状态图的“主动”方法,您可以避免很多麻烦

    【讨论】:

    • 谢谢本杰明。这真的很有帮助。您是否知道如何设置携带可变数据的消息以及如何设置它。感谢您的帮助
    • 很高兴它有帮助。请为有帮助的回复投票(stackoverflow.com/help/why-vote)。此外,始终为单独的问题打开新问题(这就是 SOF 的工作方式)。不过,请务必事先遵循本指南:benjamin-schumann.com/blog/2021/4/1/…
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多