Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有限状态机是这个用例的正确选择吗?_Java_Python_Conditional_Finite Automata_State Machine - Fatal编程技术网

Java 有限状态机是这个用例的正确选择吗?

Java 有限状态机是这个用例的正确选择吗?,java,python,conditional,finite-automata,state-machine,Java,Python,Conditional,Finite Automata,State Machine,我必须做以下几件事。节点T1正在等待上面层中的某个项目。一旦收到,它必须将内容传输到下面的层 限制:层T1和B1可以水平移动,但层I1x和层I2x的节点不能移动 T1可以水平移动以将内容传输到I11、I12或I13。一旦内容在I11、I12或I13中,它就只能分别传输到I21、I22或I23。这意味着,如果I11中有内容,则只有在I21免费时才能转到I21。如果I21不是免费的,则内容必须在节点I11中等待。B1,可水平移动以从I21、I22或I23获取内容 内容需要从T1传输到I11、I12或

我必须做以下几件事。节点T1正在等待上面层中的某个项目。一旦收到,它必须将内容传输到下面的层

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

T1可以水平移动以将内容传输到I11、I12或I13。一旦内容在I11、I12或I13中,它就只能分别传输到I21、I22或I23。这意味着,如果I11中有内容,则只有在I21免费时才能转到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节点自由决定从哪个节点获取项目。

您应该更具体地说明您的需求

对于模拟一个项目的节点转换,FSM很好。然而,我假设“解决”的意思是找到T1和B1的一些最优调度?或者T1可以将项目分配给第一个空闲插槽吗

此外,边缘(节点之间的传输)是否有需要模拟的成本/时间/延迟?您需要模拟系统中的许多项目吗

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

最好在@SBylemans上问这个问题,谢谢。