期末作业:使用深度神经网络学习俄罗斯方块游戏的策略

建立工程,导入相关工具包

import tensorflow as tf
import cv2
import sys
sys.path.append("game/")
import dummy_game 
import tetris_fun as game
import random
import numpy as np
from collections import deque

主要修改导入的游戏程序:import tetris_fun as game

设置超参数

GAME = 'tetris' # 设置游戏名称
ACTIONS = 5 # 设置游戏动作数目
GAMMA = 0.99 # 设置增强学习更新公式中的累计折扣因子
OBSERVE = 10000. # 观察期
EXPLORE = 200000. # 探索期
FINAL_EPSILON = 0.0001 # 设置epsilon的最终最小值
INITIAL_EPSILON = 0.1 # 设置epsilon贪心策略中的设置epsilon贪心策略中的初始值
REPLAY_MEMORY = 50000 # 设置Replay Memory的容量
BATCH = 32 # 设置每次网络参数更新时用的样本数目
FRAME_PER_ACTION = 1 # 设置几帧图像进行一次动作

俄罗斯方块动作有:上下左右旋转五种操作,所以设置ACTIONS = 5
其余设置与flappy_bird基本相似.

解决程序未响应的问题

问题描述

训练环境:Mac OS Python3.5.2
进行训练时游戏画面空白,进程显示未响应.

在讨论区看到的解决方法:

frame_step(self,input)函数中加入一句代码pygame.event.pump()

训练结果

总共进行了两次训练,设置epsilon的最终最小值FINAL_EPSILON = 0.01 和 FINAL_EPSILON = 0.0001,迭代次数分别为700000次和560000次.
结果并不是很理想,还是不停的在Game Over

游戏源码

你可能感兴趣的:(期末作业:使用深度神经网络学习俄罗斯方块游戏的策略)