【问题标题】:Is it possible to dynamically update if functions in anylogic?是否可以动态更新任何逻辑中的函数?
【发布时间】:2021-11-06 00:50:23
【问题描述】:

我在 Anylogic 中结合使用状态图和时间表(见图)。计划的输出在工作时间内等于 1,否则为 0。现在我希望在计划变为 1 或等于 1 时发生从 state1 到 state2 的转换(否则等到工作时间)。

我尝试过使用 if 语句

   if( main.plannerSchedule()==1 )(<perform action>) 

但是,通过这种方法,状态转换仅在语句为真时发生,但不等待它变为真。有没有办法不断更新状态转换,或者有没有“等待”功能可以解决这个问题?

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    最好让时间表在切换时向您的状态图发送消息。这假设状态图与调度使用相同的代理类型。把这段代码写在时间表的动作代码框中:

    if (value==1) {
        statechart.fireEvent("go to state 2");
    } 
    

    显然,您的消息转换需要等待“转到状态 2”消息。

    注意value 关键字。有关更多信息,请参阅https://www.benjamin-schumann.com/blog/2016/2/4/the-magic-lightbulb-and-how-it-can-help-your-anylogic-modelling

    【讨论】:

    • 感谢您的回答。我让它在一个小型试用模型中工作。但是,由于某种原因,我无法让它在我更复杂的模型中工作。我认为原因是状态图已被另一条消息激活。这有关系吗?
    • 是的,非常如此。学习示例模型并帮助理解状态图。另外,请为答案投票(旁边的向上箭头),以便其他人将来可以更轻松地找到它,请参阅stackoverflow.com/help/why-vote
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多