我基于this game here创建了一个游戏。我正在尝试使用Deep Q Learning进行此操作,这是我首次尝试神经网络(请轻柔!!)
我正在尝试创建一个可以玩此游戏的NN。以下是有关游戏的一些相关事实:
玩家1(狐狸)有1个棋子,他可以在任何方向对角移动1步
第2层(鹅)有4个,只能向对角线(左对角线或右对角线)向前移动1步。
如果狐狸到达棋盘的另一端则获胜,如果鹅将狐狸困住而无法移动,则鹅获胜。
我想先为鹅做代理,因为它似乎是更坚硬的代理,有更多的碎片和限制。这是我到目前为止拥有的重要代码部分:
这是我设置游戏板并设置鹅的总动作的地方
def __init__(self):
self.state_size = (LENGTH,LENGTH) ##LENGTH is 8 so (8,8)
#...
#other DQN variables that aren't important to question
#...
self.action_size = 8 ##4 geese, each can potentially make 2 moves
self.model = self.build_model()
这是我创建模型的地方
def build_model(self):
#builds the NN for Deep-Q Model
model = Sequential() #establishes a feed forward NN
model.add(Dense(64,input_shape = (LENGTH,), activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(self.action_size, activation = 'linear'))
model.compile(loss='mse', optimizer='Adam')
我的问题:由于有4只鹅,每只鹅都可以进行2次移动,因此我认为我的action_size应该为 8 (每只鹅为2)或应该为2( (对角线是向左还是向右)或其他所有内容?
我不知所措的原因是,在任何给定的转弯中,一些鹅的举动可能无效,这有关系吗?