【发布时间】:2019-06-15 13:31:45
【问题描述】:
我正在开发一个基于Keras Plays Catch 代码的项目。我已将游戏更改为简单的 Snake 游戏,为了简单起见,我将蛇表示为棋盘上的一个点。如果 Snake 吃了奖励,它将获得 +5 分,而对于撞墙,它将获得 -5 分,每走一步 -0.1。但它没有学习策略并给出了可怕的结果。这是我的游戏play 函数
def play(self, action):
if action == 0:
self.snake = (self.snake[0] - 1, self.snake[1])
elif action == 1:
self.snake = (self.snake[0], self.snake[1] + 1)
elif action == 2:
self.snake = (self.snake[0] + 1, self.snake[1])
else:
self.snake = (self.snake[0], self.snake[1] - 1)
score = 0
if self.snake == self.reward:
score = 5
self.setReward()
elif self.isGameOver():
score = -5
else:
score = -0.1
return self.getBoard(), score, self.isGameOver()
返回类似这样的东西(1 是蛇,3 是奖励,2 代表墙):
[[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 0. 0. 0. 0. 0. 0. 0. 0. 2.]
[2. 0. 0. 0. 0. 0. 0. 0. 0. 2.]
[2. 0. 0. 0. 0. 0. 0. 0. 0. 2.]
[2. 0. 0. 0. 0. 0. 0. 0. 0. 2.]
[2. 0. 0. 0. 0. 1. 0. 0. 0. 2.]
[2. 0. 0. 0. 0. 0. 3. 0. 0. 2.]
[2. 0. 0. 0. 0. 0. 0. 0. 0. 2.]
[2. 0. 0. 0. 0. 0. 0. 0. 0. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]]
这里是my code for q learning on gist。
我不知道我做错了什么,但它玩的大多数游戏都会卡在一个循环中(上下或左右),或者它会直接撞到墙上,而且几率很小在奖励撞墙之前吃掉奖励。我该如何改进它并使其发挥作用?
【问题讨论】:
标签: python keras deep-learning reinforcement-learning q-learning