文章目录
一、Gym是什么?
gym 是进行强化学习的一个python应用包。其中包括很多包括游戏、方格等可以以马尔可夫决策过程表示的各种事件集合。并且提供了更新、状态标识、显示等一系列方便的接口,并可以自主设计各类环境。具体库参考可见Gym。
二、使用步骤
1.成分简介
代码如下(示例):
import gym
env=gym.make(id="GridWorld",render_mode="human")
observation,info=env.reset(seed=10)
for i in range(50):
action=greedy_policy(observation)
observation,reward,terminated,truncated,info=env.step(action)
if terminated or truncated:
observation,info=env.reset()
time.sleep(0.5)
env.close()
(1)环境生成
在引入gym包之后,需要通过
env=gym.make()
函数来生成相应的环境。其中参数id代表着使用者所需的环境,可以通过
print(gym.env.register.all())
来查看。
(2)环境初始化
通过
env.reset()
来初始化所生成的环境。如果没有初始化,那么当前环境的状态可能为空,从而不能进行下一步的行动。
(3)进行迭代循环
我们知道,除了直接求解贝尔曼方程,其他方式求解马尔可夫决策过程(MDP)都是需要进行迭代求解的。因此,无论采用什么样的策略,我们都是需要一个最基本的循环。循环中包括状态生成动作,以及动作生成状态,还有到达终止状态时需要采取的操作。
for i in range(50):
action=greedy_policy(observation)
observation,reward,terminated,truncated,info=env.step(action) #Observation等同于强化学习中的state,
if terminated or truncated:
observation,info=env.reset()
time.sleep(0.5)
(4)最后关闭环境
env.close()
2.构建环境
构建自己的环境需要继承gym.Env类,本文所展示的是gym官网中的案例,其使用了pygame来勾画了一个在方格中追逐目标的动态过程。如下图
class GridWorldEnv(gym.Env):
(1)进行初始化
之后,在初始化函数中初始化所需要的各种变量,其中self.observation_space和self.action_space量个变量是必须进行赋值的。
class GridWorldEnv(gym.Env):
metadata = {
"render_modes":["human","rgb_array"],"render_fps":4} #这个