DOOM游戏强化学习训练项目
本文开一个新坑,讲一个很火的强化学习训练游戏的训练环境游戏DOOM。
其他强化学习项目:超级马里奥ai
文章目录
- DOOM游戏强化学习训练项目
- 前言
- 一、环境安装
- 1.库安装
- 2.镜像文件安装
- 二、设置对象和初始化
- 1.部分镜像信息介绍
- 2.库导入和初始代码
- 1)基本环境设置
- 2)解决1中的error问题
- 3)初始化设置与随机操作展示
- a)镜像导入
- b)设置动作矩阵
- c)完整代码
前言
本文将讲述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进行游戏。