[英]Deep Q Learning For Snake Game
我正在基于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.]]
这是我在qist上学习q的代码 。
我不知道自己在做什么错,但大多数游戏都会卡在一个循环中(上下左右或左右),或者直撞墙壁,并且很少有机会吃掉在碰壁之前先获得奖励。 我如何改进它并使它起作用?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.