如何生成连接四的所有合法状态 - 动作对?

时间:2016-12-31 12:24:53

标签: python machine-learning artificial-intelligence reinforcement-learning

考虑一个标准的7 * 6板。假设我想应用Q-Learning算法。为了应用它,我需要一组所有可能的状态和动作。可以有3 ^(7 * 6)= 150094635296999121.由于不可能存储这些,我只考虑合法的状态。

如何为所有合法的州和行动生成Q(s,a)?

这不是我的功课。我正在尝试学习强化算法。两天以后我一直在搜索这个。我最接近的是只考虑合法的州。

1 个答案:

答案 0 :(得分:0)

您需要设置3个进程。一个产生下一步行动的行动,一个改变行动导致的行动,最后通过一系列检查评估一个4x4的块,看看这是否是胜利者。 Numpy和scipy将有助于此。

设置Numpy零数组。对于玩家1移动,将数字更改为1,对于玩家2进行的移动,将数字更改为-1.4x4检查是在x轴和y轴上求和,然后是对角线的总和,如果abs(总和(轴))= = 4然后在结束前收益率。

这可能会产生重复,具体取决于实现方式,因此最后将所有这些都放在一个集合中。

**由于评论和问题修改而编辑。

您需要使用生成器并进行深度优先搜索。任何州都有最多7个可能的分支,可能有42个移动。你只是寻找获胜或失去状态来存储(不要因为记忆最多来保存僵局)。州将为每个玩家一组两个位置。 当你前进并找到一个获胜/失败状态时,用状态存储状态,向后移动到前一步移动并更新存储它的值。

有144种可能的赢/输方式连接四种,我不知道每种状态有多少。所以我不确定你想要存储多少步骤。