代理状态图表有问题

问题描述 投票:0回答:2

我正在尝试创建一个代理状态图,每天下午4点(周末除外)应该进行转换。

我已经尝试过:1。条件转换(条件:getHourOfDay()== 16)2:超时转换,每隔1秒将我的代理“重新插入”图表并检查时间是否为16。

我的代码仍未运行,有没有人知道如何解决它?

enter image description here

这是我的状态图视图。客户是一种单一资源,应该每天下午4点从我的库存中“获取”产品。它应该发生在“活动”状态。

enter image description here

我设置了每1秒运行一次的超时转换(来自Active-Active)。

enter image description here

在“入口行动”中的“活动”状态内,我编写了我的代码,以检查是否是下午4点,然后运行我的操作。

我想,因为我设置了超时转换,它会每隔1秒检查一次我的情况,但显然它不起作用。

anylogic
2个回答
1
投票

您的代理未通过内部转换进入活动状态。

将转换重绘为实际退出活动状态,然后再次输入,如下所示:enter image description here


1
投票

出于性能原因,请勿使用基于条件的转换。在您的情况下,它也永远不会触发,因为它仅在模型中发生某些事情时进行评估。顺便说一下,下午4点情况并非如此。

重新启动超时方法:为什么要将代理“重新插入”自己的状态图?不确定我理解......

为什么不设置具有重复发生要求的计划或事件,并使其向状态图发送消息:stateChart.fireEvent("trigger!");。在状态图中,添加等待此消息的基于消息的转换。这会奏效。

但是要小心理解Statechart.fireEvent()Statechart.receiveMessage()函数之间的区别。

PS:并同意Felipe:请按照其意图开始使用SOF,即将回复标记为已解决。它帮助我们以及未来的用户快速找到解决方案:-)欢呼

© www.soinside.com 2019 - 2024. All rights reserved.