发布somewhat ambiguous question之后,我相信我已经确定了我想知道的事情(我是FSM中的新手)。
我想在clojure中使用有限状态机(可能是非确定性自动机,即允许多个下一状态转换)来模拟状态空间。
这基本上是我的问题:
假设我们有这些状态Q={flying,cycling,running,driving}
,并且我们在平均日D={120,30,30,60}
期间拥有状态持续时间 - 其中为了参数,这些状态只需几分钟。然后如何使用clojure创建可能不确定的FSM(允许多个目标状态)?我看过例如https://github.com/cdorrat/reduce-fsm和https://github.com/ztellman/automat但我认为这不是我想要的。
我的最终目标是让模拟看起来像S = {flying,flying,flying,flying,flying,cycling,cycling,running,driving,driving,driving}
。
有效地在状态机中引起严重的自转移偏差。结束和开始状态并不重要。
答案 0 :(得分:0)
问题尚未完全阐明,无法明确回答。无论如何: 如果您只想识别特定的状态序列,可以使用有限自动机,并且必须按顺序编写它们,例如:
flying -> flying -> flying -> flying -> flying -> cycling -> cycling -> running -> driving -> driving -> driving
我认为转换是由您引用的持续时间引起的。
然而,我怀疑你可能需要更详细的东西。那,这里不能详述。在我看来,如果这是出于编程目的,我建议你使用UML的状态机图。它们足以解决您的问题。