anylogic - 代理状态图有问题
问题描述
我正在尝试创建一个代理状态图,其中应该在每天下午 4 点(周末除外)发生转换。
我已经尝试过:1. 条件转换(条件:getHourOfDay() == 16)2:超时转换,它将每隔 1 秒将我的代理“重新插入”到图表中并检查时间是否 = 16。
我的代码仍然没有运行,有人知道如何解决吗?
这是我的状态图视图。客户是一个单一的资源,应该每天下午 4 点从我的库存中“获取”产品。它应该在“活动”状态下发生。
我设置了每 1 秒运行一次的超时转换(从 Active-Active)。
在“入口操作”的“活动”状态中,我编写了代码来检查它是否是下午 4 点,如果是,则运行我的操作。
我想,因为我设置了超时转换,它会每隔 1 秒检查一次我的状况,但显然它不起作用。
解决方案
出于性能原因,请勿使用基于条件的转换。在您的情况下,它也永远不会触发,因为它仅在模型中发生某些事情时才被评估。顺便说一句,下午 4 点的情况并非如此。
重新您的超时方法:您为什么要将您的代理“重新插入”到它自己的状态图中?不确定我明白...
为什么不根据您的重复要求设置时间表或事件,并使其向状态图发送消息:stateChart.fireEvent("trigger!");
. 在您的状态图中,添加等待此消息的基于消息的转换。这将起作用。
不过,请注意理解 theStatechart.fireEvent()
和Statechart.receiveMessage()
函数之间的区别。
PS:并同意Felipe:请按照它的意思开始使用SOF,即将回复标记为已解决。它可以帮助我们以及未来的用户快速找到解决方案 :-) 干杯
推荐阅读
- ios13 - iOS 13 中 modalview 上的小栏
- visual-studio-code - Visual Studio Code - 窗口已崩溃
- c# - 使用VS 2019版的c#中的SQL数据库错误异常
- c# - 如何在 C# 中读取另一个 xml 标签内的标签?
- bash - grep 包含来自 rsync 输出的错误结果
- html - 如何在 Angular 中比较 tagName 和字符串的值?
- python - 构建网络抓取循环以提取药物信息
- javascript - 使用 javascript 禁用与网站的连接
- amazon-web-services - Jenkins CLI 下载失败,出现 500 错误或 503 错误
- delphi - Firemonkey Android 9 方向传感器在 Delphi 10.3.3 中不起作用