所以我正在尝试实施一个强化学习代理,这个代理能够发挥作用。为此,我需要创建一个数据结构,用于存储游戏状态,该状态下可用的操作以及在该状态下执行所述操作的奖励。此外,它必须能够返回在给定状态下采取可用行动的最大奖励。具体来说,这里的游戏状态由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
怎样才能做得更好?我自己施加的一些限制是:
答案 0 :(得分:0)
最后一个元组字典a = {(state,action):value}工作