DOOM游戏强化学习训练项目
本文开一个新坑,讲一个很火的强化学习训练游戏的训练环境游戏DOOM。
其他强化学习项目:超级马里奥ai
文章目录
前言
本文将讲述DOOM库的安装和镜像文件的安装,以及项目实体对象的建立和初始化操作。
一、环境安装
1.库安装
pip install vizdoom
注意,也需要pytorch、gym等常用库,不清楚可以查看库安装参考1和库安装参考2
2.镜像文件安装
要使用doom,我们需要安装镜像包ViZDoom。
打开网址doom安装链接
按照图示方法下载ZIP并解压,注意,请记住路径。
二、设置对象和初始化
1.部分镜像信息介绍
代码如下(示例):
打开镜像文件scenarios中的basic.cfg,可以看到如下代码
available_buttons =
{
MOVE_LEFT
MOVE_RIGHT
ATTACK
}
这实际上就是用矩阵来控制人物动作,比如:0 0 1攻击 1 0 0 向左移动,后续的代码需要有这个理解基础。
2.库导入和初始代码
1)基本环境设置
from vizdoom import *
import time
game = vizdoom.DoomGame()
game.init()
time.sleep(100)
有error,但不妨碍运行,运行结果如下
2)解决1中的error问题
如果你是强迫症,你就会知道为什么能跑我还想把这个error去掉。我们发现error为未解析的引用 'vizdoom'
,这是为什么呢?
我们去vizdoom官网找,官方文档是这么写的
import vizdoom as vzd
game = vzd.DoomGame()
那么我们按以下这么写就没问题了。
import vizdoom
game = vizdoom.DoomGame()
3)初始化设置与随机操作展示
a)镜像导入
我们先要载入之前展示过的basic文件
请自己输入自己的镜像文件地址
VizDoom_basic_cfg = r"C:/Users/tttiger/Desktop/ViZDoom-master/ViZDoom-master/scenarios/basic.cfg"
game = vizdoom.DoomGame()
game.load_config(VizDoom_basic_cfg)
game.init()
这样可以加载我们的场景和动作。
b)设置动作矩阵
我们上面说到,在Doom中,动作是用0001这样的矩阵控制的,我们可以这样初始化。
actions = numpy.identity(3,dtype=numpy.uint8)
numpy的identity函数是用于创建对角矩阵,dtype是指矩阵中元素的类型。
因此我们有了矩阵
1 0 0
0 1 0
0 0 1
然后我们就可以使用random.choice(actions)
实现随机动作了。
c)完整代码
from vizdoom import *
import vizdoom
import random
import time
import numpy
VizDoom_basic_cfg = r"C:/Users/tttiger/Desktop/ViZDoom-master/ViZDoom-master/scenarios/basic.cfg"
game = vizdoom.DoomGame()
game.load_config(VizDoom_basic_cfg)
game.init()
actions = numpy.identity(3,dtype=numpy.uint8)
episodes = 10
for episode in range(episodes):
game.new_episode()
while not game.is_episode_finished():
reward = game.make_action(random.choice(actions),4)
time.sleep(0.02)
time.sleep(2)
game.close()
就能有如上的效果。下一篇将讲述如何训练强化学习ai进行游戏。