强化学习番外篇之 OpenAI-gym 环境的介绍和使用

最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github

本文主要讲解有关 OpenAI gym 中怎么查看每个环境是做什么的,以及状态和动作有哪些可取的值,奖励值是什么样的。然后给出一个完整的代码,最后再说明一下 gym 中的 done 标志的含义。

gym 是 OpenAI 针对强化学习推出的诸多环境的集合,我们可以直接在这些环境上使用各种强化学习算法来训练我们模型,这样我们就可以专注于强化学习算法本身而不是编写环境了。至于 gym 的安装过程,我就不再说了,网上的教程已经非常多了。值得一提的是,目前 gym 已经基本支持 windows 系统了。

对于一个 gym 中的环境,我们怎么查看这个环境要求你做什么、状态和动作是什么样的,以及奖励是什么呢?这一点 gym 并不是十分友好,我在其官网上没有找到明确的说明。这个问题可以通过在 github 上 gym 对应的仓库来找到说明。

首先在 github 上搜索 “openai/gym”,然后选择 star 数最高的那个仓库,然后点击 “Wiki” 就可以在右边看到各种 gym 中的环境名称了,点击想要查看的环境名称就得到了有关该环境的相应介绍。如下图所示:

gym

要是嫌麻烦,也可以直接点击以下链接查看 Gym


除了上述所说的方式,还可以用代码的方式来查看环境的某些属性。在 gym 中的环境主要可以分为两类,一类是动作是连续的,另一类是动作是离散的。在某些地方这两者会有轻微的差异,这一部分还是直接看代码和注释吧。

import gym

env=gym.make("MountainCar-v0") #创建对应的游戏环境
env.seed(1) #可选,设置随机数,以便让过程重现
env=env.unwrapped #可选,为环境增加限制,对训练有利

#----------------------动作空间和状态空间---------------------#
print(env.action_space) #动作空间,输出的内容看不懂
print(env.action_space.n) #当动作是离散的时,用该方法获取有多少个动作
# env.observation_space.shape[0] #当动作是连续的时,用该方法获取动作由几个数来表示
print(env.action_space.low) #动作的最小值
print(env.action_space.high) #动作的最大值
print(env.action_space.sample()) #从动作空间中随机选取一个动作
# 同理,还有 env.observation_space,也具有同样的属性和方法(.low和.high方法除外)
#-------------------------------------------------------------#

for episode in range(100): #每个回合
    s=env.reset() #重新设置环境,并得到初始状态
    while True: #每个步骤
        env.render() #展示环境
        a=env.action_space.sample() # 智能体随机选择一个动作
        s_,r,done,info=env.step(a) #环境返回执行动作a后的下一个状态、奖励值、是否终止以及其他信息
        if done:
            break

大家可以看到在以上代码 s_,r,done,info=env.step(a) 中有个 done 标志,从字面意思来看 done 是环境是否做完的一个标志。但是实际没这么简单,就拿 MountainCarCartPolePendulum 这三个环境为例。MountainCar 环境中当小车拿到旗子后就算成功的完成任务了,此时 done 为 True。CartPole 环境中当小车和杆子跑出屏幕之外后,就相当于出错了,需要重新开始,这时 done 也为 True。但是对于 Pendulum 环境来说,它的目标是将杆子树立起来,但是该环境中动作可以无限的进行下去,done 永远为 False,所以这种情况下只能用步数达到一定数量来判定是否该结束。

OpenAI Gym一个用于开发和比较强化学习算法的开源工具包。它提供了许多标准的环境,供研究人员和开发者用于测试和验证他们的算法。 OpenAI Gym环境可以分为两类:离散动作空间和连续动作空间。 在离散动作空间中,动作的选择是离散的,比如向左、向右、不动等。这类环境包括经典的游戏,如CartPole和FrozenLake。 CartPole是一个很简单的环境,目标是让杆子保持平衡。智能体可以选择向左或向右施加力量来控制杆子的平衡。 FrozenLake是一个迷宫环境,智能体需要从起点到达目标,避免掉入冰冻的湖中。它有四种动作:向上、向下、向左、向右。 在连续动作空间中,动作的选择是连续的,可以是任意值。这类环境更接近于真实场景,比如自动驾驶和机器人控制。其中一个连续动作空间的环境是MountainCar。 MountainCar是一个小车爬坡的环境,目标是让小车爬到山顶。智能体可以选择施加的力量,力量的取值范围是[-1, 1]。 除了这些环境OpenAI Gym还提供了许多其他的环境供选择,涵盖了各种不同的问题和挑战。比如Atari游戏,如Pong和Breakout,以及一些经典的控制问题,如Acrobot和Pendulum。 总的来说,OpenAI Gym提供了丰富多样的强化学习环境,使研究人员和开发者能够快速开发、测试和评估他们的算法。无论是离散动作空间还是连续动作空间,都能够找到适合自己需求的环境
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值