有限状态机是此用例的正确选择吗?

时间:2019-01-17 14:12:38

标签: java python conditional finite-automata state-machine

Image

我必须执行以下操作。节点T1正在等待上一层的某些项目。收到后,它必须将内容传输到下面的层。

限制:T1和B1层可以水平移动,但是I1x层和I2x层的节点不能移动。

T1可以水平移动以将内容传输到I11,I12或I13。内容一旦位于I11,I12或I13中,就只能分别传输到I21,I22或I23。这意味着如果I11中有内容,则只有空闲时才能进入I21。如果I21不是空闲的,则内容必须在节点I11中等待。 B1可以水平移动以从I21,I22或I23获取内容。

内容需要从T1传输到I11,I12或I13,具体取决于哪一个空闲。 I12始终是理想的选择。

一旦内容在I2x可用,则底层B1可以移动并从I2x获取内容。最终目标是将项目从T1转移到B1。一些人将从B1收集已处理的物品。

已添加中间层以提高效率。如果没有中间节点,则在任何时间点只能准备两个项目。这样,如果没有一个物品,我们可以准备8个物品。一旦有可用的物品,人们就可以从B1以及从I2x层到B1以及I1x到I2x层的物品连续收集。

如果我必须以编程方式实施此方法,那么解决此问题的最佳方法是什么?我的团队中有人建议使用有限状态机,但是,我对此想法并不完全相信。如果FSM是正确的选择,那么如何实现它的任何指示?

编辑1: I21,I22和I23中的项目必须按顺序取出。这是必要的,因为如果将某些东西放在优先位置(例如I22),那么如果系统以比人类从B1中取出的速度更快的速度输出输出,则即使I21和I23已被填充,物品也将从I22中取出。这样,I21和I23将永远不会为空。为此,我们可以让B1节点自由决定要从哪个节点获取项目。

1 个答案:

答案 0 :(得分:1)

您应该更具体地满足您的要求。

对于模拟一项的节点转换,FSM很好。但是,我认为“解决”是指找到T1和B1的一些最佳计划吗?还是T1可以将项目分配到第一个空闲插槽?

边缘(节点之间的转移)是否也需要模拟一些成本/时间/延迟?您需要模拟通过系统的许多物品吗?

所有这些都需要在实施之前明确指定。 :) 我建议用更多详细信息扩展您的问题,以继续讨论。