问题标签 [pytransitions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
177 浏览

python - 如何为“转换”状态机定义触发器枚举?

作为对此答案的不相关跟进,它使用以下工作代码:

我也想有一个枚举Trigger,就像我有一个State.

唉,当我尝试

我明白了


我可以使用Enum's解决它.name

但是之间的不对称StateTrigger困扰着我。
难道我做错了什么?为什么 Enum 工作State但不工作Trigger

0 投票
1 回答
90 浏览

python - 使用 PyTransitions 的非确定性状态机?

我正在使用pytransitions并且遇到了需要有几个与其他状态无关的状态,并且使用非确定性状态机进行建模非常有意义,这在数学上是等效的。

我想要类似下面的东西


我可以定义一组新的状态states=itertools.product(states1, states2),然后定义所有转换,如等价定理所示。

我想知道库中是否支持这种行为,如果支持,如何实现。

我有不止 2 组(大部分)独立状态。真的,我有一堆偶尔会有交互的切换,但大多数都是独立的。

0 投票
2 回答
74 浏览

pytransitions - Pytransitions:异步相关回调的 AsyncMachine 顺序解析

注意: 这个问题与 Python 的 FSM 库pytransitions 有关

我正在寻找一种方法来按顺序解决方法回调,当它们在prepare or/and before or/and after中作为列表被提及时。我正在使用AsyncMachine来自的模块transitions.extensions.asyncio

预期结果:

1Done_2Done_3Done

得到:

None_3Done

复制当前情况的示例代码:

正如代码中所示,'prepare': ['initialize1', 'initialize2', 'initialize3']我正在寻找一种方法,一旦解决了 initialize1 就调用 initialize2 ,一旦解决了 initialize1 和 initialize2 方法,就调用 initialize3 。目前,它们被并行调用,这是一个很好的特性,但如果有一种方法可以让它们按顺序执行/解析,那就太棒了。

当然,我可以再添加一个方法initialize_all,然后在其中调用上述所有方法。但是想想我要不断添加多少新方法来处理现实世界的问题。我想让我的函数可重用且更小,仅用于特定任务。

0 投票
1 回答
98 浏览

python - Pytransitions 中的状态历史

例如,我正在使用Pytransitions,并且我有一些状态机

是否有一些图书馆支持的方式来跟踪所有州的历史?

我现在手动做的是初始化:


我想知道该库是否支持一些可查询的日志记录,这意味着不仅将事件转储到文件中,而且还能够将它们保存在列表中。

0 投票
2 回答
66 浏览

python - pytransitions 中的终端/接收器状态

例如,我正在使用带有状态机的pytransitions

我想添加一个状态,任何触发器都保持相同状态,不调用转换,不明确指定每个可能的触发器,也不忽略所有无效触发器(因为这非常适合调试)。

例如,我想要一个crystal可以通过触发crystalizefrom达到的状态liquid,对此任何事件都不会执行任何操作。

这可以通过图书馆实现吗?

表达这个问题的另一种方式是ignore_invalid_triggers=True只针对特定州,而不是所有州。

0 投票
1 回答
37 浏览

python-3.x - 将嵌套状态与 pytransitions 一起使用的正确方法是什么?

所以我一直在 pytransitions github 和 SO 上四处寻找,似乎在 0.8 之后你可以使用宏状态(或其中包含子状态的超级状态)的方式发生了变化。我想知道是否仍然可以使用 pytransition 创建这样的机器(蓝色方块假设是一个宏状态,其中有 2 个状态,其中一个是绿色,是另一个宏):

在此处输入图像描述

还是我必须遵循此处建议的工作流程:https ://github.com/pytransitions/transitions/issues/332 ?非常感谢任何信息!

0 投票
1 回答
48 浏览

pytransitions - GraphMachine doesn't generate graph for NarcolepticSuperhero quickstart example

I tried creating a Diagram using the NarcolepticSuperhero machine defined in the GitHub documentation but it only outputs this:

enter image description here

Steps to recreate:

  1. Create a file named test.py, with this content:
  1. Install the requirements (Ubuntu 20.10, I tested on it's docker image) and run the script:
  1. Check the generated image
0 投票
1 回答
54 浏览

python - Pytransitions 排队分层机器总是以初始化状态结束

我正在使用带有 HierarchicalMachine 类的 pytransitions 来创建小型嵌套机器以在更大的状态机中完成子任务。我正在使用排队转换能够从状态回调内部调用触发器。

我希望以下代码以 prepare_waiting 状态结束,但实际上它会回到 prepare_init 状态。

你知道为什么会这样吗?

代码:

输出:

0 投票
2 回答
51 浏览

python - Python 转换库 - 从内部回调调用转换

我正在使用 Python 的转换库,我发现它非常有用。在我的特定情况下,我使用 FSM 在状态内(在回调中)做出决策,并相应地根据内部逻辑调用新的转换。例如:

这种方法将所有逻辑保留在 FSM 中,这正是我想要的,但有两个缺点:

  • 我可能有一个无限的调用链,这会导致堆栈溢出(只有proceed()转换,while循环调用,会中断它)
  • 我必须记住return在从回调调用任何转换后手动调用

有没有更好的方法来使用转换库来实现我想要的(从回调调用转换)?

感谢帮助!

0 投票
1 回答
92 浏览

python - 从其他线程触发转换时出现 TypeError

Controller在主线程中进行了实例化,产生了自己的工作线程,它正在处理来自其他控制器的事件。Controller实例化,这ProductionMachine是主要的状态机,它有嵌套的机器PrepareMachineFlashMachine.

PrepareMachine向某些设备发送连接请求并等待通过Controller工作线程收到的响应。当所有设备都连接好后,它将控制权移交给FlashMachine.

到现在为止它似乎还可以,但是当我尝试触发转换时,event_data.model.to_done()我得到TypeErrorself.machine.to_connected()我应该完成的。你知道我在做什么错吗?

我在 Raspberry Pi 上使用过渡 0.8.9、python 3.7.3。

代码:

输出: