首页 > 解决方案 > 如何在特定条件下重复状态图?

问题描述

如何在特定条件下重复状态图?我不想转换回第一个状态。

例如,代理 A 有一个状态图。并且代理 B 也有一个状态图。代理 A 中的最后一个状态包含在代理 B 的状态图的开头。代理 B 在此之后列出其他状态。在代理 A 的状态下,代码创建代理 B。直到满足特定条件。

如果我在代理 B 中进行转换(如果需要,使用消息)从最后一个状态返回到第一个状态,则会创建新的代理,并且所有状态都会一次又一次地运行。现在我希望重复代理 b 中的状态图。有人有想法吗?

(顺便说一句,我已经转换回代理 A 中的状态,但这是需要的)。

我对每一次帮助感到高兴。:)

新的更多细节***** 代理 A 是一台机器。相应的状态图描述了机器中当前发生的情况,例如填充、压制、弹出。在例如“按下”的状态下,代理B被创建。它是一种产品。产品应离开机器。因此,与代理 A 一样,它也具有“按下”状态和“弹出”状态。代理 B 中的“弹出”状态被划分为更详细的级别。

产品是在“新闻”状态下创建的。因此,Agent B 的第一个状态以“pressed”开始。公共状态同时运行。不同之处在于机器的“弹出”,例如描述机器部件的运动。而产品中的“弹出”描述了例如产品在机器中的运动,即“向上运动”等。制造状态出现两次的原因是我想尽可能详细地描述代理。

代理 A:当“Eject”完成时,转换返回填充状态,因为机器继续工作直到满足某个条件。例如,直到没有更多的原材料。

代理B:“弹出”后,产品仍在处理中,例如收集在容器中,一段时间后进行检查等。在最后一个状态之后,只有一个“最终状态”出现。原因:产品不是一次又一次地走同样的步骤,而是一次又一次地创造出一个新产品。

当我运行模拟时,机器一次又一次地运行这些步骤。这是所希望的。但是我的产品只通过它的状态图一次并且保持在它的最终状态。但这是错误的。例如,如果我想统计掉到容器中的产品,则集合中只显示一个 1。但是应该有很多。

我希望你能打开照片在这里输入图片描述

标签: repeatanylogicagent-based-modelingstatechart

解决方案


您不能“重复”状态图。您必须处理回到初始状态的转换。但是,这不是错误/限制,而是一项功能。

代理 A 中的最后一个状态包含在代理 B 状态图的开头。

这听起来不是一个好的设计。

您将不得不重新考虑您的状态图设计。很可能有一个简单的修复方法,但您的描述非常不清楚。也许澄清它并添加一些清晰的屏幕截图。还要检查https://stackoverflow.com/help/how-to-ask


推荐阅读