建立工程,导入相关工具包
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