Agent和环境之间的共同接口概要

该公共接口由“OpenAI Gym”的“Env”类保持。“Env” 类是将强化学习的“环境”封装起来的类。主要的方法和性质如下所示。
一:生成环境
env = gym.make(id)
'''
gym.make(id)
说明:生成环境
参数:Id(str类型) 环境ID
返回值:env(Env类型) 环境
环境ID是OpenAI Gym提供的环境的ID,可以在OpenAI Gym网站的Environments中确认
例如,如果是“CartPole”环境,则ID是“CartPole-v1”。返回“Env”对象作为返回值
'''
二:初始化环境
state = env.reset()
'''
env.reset()
说明:重置环境
返回值:state(object类型) episode 的最初状态
在episode 开始时调用它,作为返回值返回episode 最初的状态
episode 最初“状态”的类型由属性“observation_space”决定
'''
三:环境交互
state, reward, done, info = env.step(action)
'''
env.step(action)
说明:环境执行一步动作
参数:action(object 类型) 动作
返回值:results(tuple 类型) (下一状态,报酬,episode 是否完成,日志信息)
将“动作”传递给环境,返回值返回“下一个状态”(object)、“报酬”(float)、“ episode 是否完成”(bool)、“日志信息”(dict)
传递给环境的“动作”类型,由属性“action_space”决定
'''
四:渲染画面
env.render(mode='human')
'''
env.render(mode='human')
说明:渲染环境画面
参数:mode(str类型) 渲染模式
返回值:对应渲染模式的返回值
'''
支持的“渲染模式”根据环境不同而不同。也有不支持渲染的环境。一般有以下几种渲染模式:
| 渲染模式参数 | 说明 |
|---|---|
| human | 在人类显示器或终端上渲染 |
| rgb_array | 返回像素图像的RGB阵列作为返回值 |
| ansi | 将文本作为返回值返回 |
五:指定随机种子
env.seed(seed=None)
'''
env.seed(seed=None)
说明:指定随机数种子
参数:seed(int 类型) 随机种子
返回值:seeds(list 类型) 在环境中使用的随机数种子列表
用env.seed()指定环境的随机数种子。如果想要训练的再现性,或者想要根据不同的环境使用不同的随机数种子,就可以使用该方法
'''
六:结束环境
env.close()
'''
env.close()
说明:终止当前环境
'''
七:代码总结
import gym
# 生成环境
env = gym.make('CartPole-v1')
# 环境初始化
state = env.reset()
# 循环交互
while True:
# 渲染画面
env.render()
# 从动作空间随机获取一个动作
action = env.action_space.sample()
# agent与环境进行一步交互
state, reward, done, info = env.step(action)
print('reward:', reward)
# 判断当前episode 是否完成
if done:
print('done')
break
# 环境结束
env.close()
注:env.action_space.sample()是根据动作空间的类型“action_space”获取随机动作的方法。