[英]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.