1.3.3 Gym的环境描述和案例

Gym中环境的调用主要通过接口函数进行。接口函数的主要功能包括生成环境、初始化环境、环境交互、渲染画面、指定随机数种子、关闭环境。以下对这些环境接口函数逐一介绍。

1.生成环境

生成环境的命令如下:

其作用是生成一个模拟环境。输入参数id是环境ID,为str类型;返回值env是一个具体的环境实例,为Env类型。

环境ID是OpenAI Gym提供的环境的ID,可以在OpenAI Gym网站的Environments中查询。例如,例1-2中提到的倒立摆系统的环境ID是CartPole-v1,这里v1是版号。

2.初始化环境

初始化环境的命令如下:

其作用是在一局交互开始时将环境状态初始化。返回值state是环境的初始状态,其类型由状态空间的类型决定。

3.环境交互

环境交互的命令如下:

其作用是在环境接受智能体向其施加的一个动作以后,环境向前演化一个时间步,改变环境状态,并给智能体一个奖励信息。输入值action是智能体向环境施加的动作,为object类型;输出值包括state、reward、done和info,分别表示转化后的环境状态、环境给智能体的奖励信息、一局是否结束的标识和交互过程中一些必要的日志信息。

4.渲染画面

渲染画面的命令如下:

其作用是可视化环境交互过程。Gym支持的“渲染模式”根据环境的不同而不同,也有不支持渲染的环境。常用的渲染模式见表1-2。

表1-2 常用渲染模式

5.指定随机数种子

指定随机数种子的命令如下:

其作用是为计算机产生伪随机数指定一个随机数种子,输入值seed即为随机数种子,为int类型,输出值为以seed为种子的随机数列表。

6.关闭环境

结束环境的命令如下:

其作用是关闭当前环境,主要在需要渲染环境的情况下使用。

以下以CartPole-v1环境为例,将所有接口函数融入一个程序中,对该环境进行一次完整的运行,代码如下:

Gym的所有环境脚本都是开源的,读者如果想要更深入地了解一个环境的运行机理、各状态维度的意义、各动作维度的意义等信息,则可以直接阅读该环境的脚本代码。可以通过两种方式找到环境的源代码,列举如下:

(1)安装Gym以后,进入D:\Anaconda3\Lib\site-packages\gym\envs文件夹,Gym所有环境的源代码都保存在这个文件夹中。

(2)Gym源代码托管在著名的程序托管网站GitHub上,网址为https://github.com/openai/gym。可以在线查看Gym的源代码,也可以直接通过Download ZIP按钮将源代码下载到本地计算机。