在 python 中存储状态 space 的最佳方式

Best way to store state space in python

所以我正在尝试实现一个玩井字游戏的强化学习代理。为此,我需要创建一个数据结构来存储游戏状态、该状态下可用的操作以及在给定该状态下采取上述操作的奖励。此外,它必须能够 return 在给定状态下采取可用操作的最大奖励。具体来说,这里的游戏状态由一个 9 向量给出,其值可以是 0、1、2(空,玩家 1,玩家 2)。每一步最多可以采取 9 种可能的行动(如果这些方块已被占用,则更少)

我想到了这个:

    #Input np.array([0,0,0,0,0,0,0,0]),1
class Tree():
    def __init__(self):
        self.data=defaultdict(nested_dict)
    def set(self,key,key2,value):        
        self.data[key[0]][key[1]][key[2]][key[3]][key[4]][key[5]][key[6]][key[7]][key[8]][key2]=value
    def get(self,key,key2=''):
        if(key2==''):
             return self.data[key[0]][key[1]][key[2]][key[3]][key[4]][key[5]][key[6]][key[7]][key[8]]
        return self.data[key[0]][key[1]][key[2]][key[3]][key[4]][key[5]][key[6]][key[7]][key[8]][key2]
    def get_max_child(self,state):
        return np.max(list(a.get(state).values()))
#Example of use
a=Tree()
a.set([0,0,0,0,0,0,0,0,0],7,1)
a.set([0,0,0,0,0,0,0,0,0],6,2)
a.get_max_child([0,0,0,0,0,0,0,0,0])
#Returns 2

如何才能做得更好?我对自己施加的一些限制是:

  1. 没有预先计算所有可能的状态并为它们分配一个 整数
  2. 我想通过查找 table 来执行此操作,而不是神经网络。稍后再说。

最后,元组字典 a={(state,action):value} 有效