【强化学习-蘑菇书-1】使用gym,和我一起开始强化学习的入门课程吧!

欢迎去各大电商平台选购纸质版蘑菇书《Easy RL:强化学习教程》

文章是根据 蘑菇书EasyRL 以及新版本的gym编写的可运行代码和示例,

0.安装环境,

文章所使用的python版本为py310
库版本如下

cloudpickle==3.1.1
Farama-Notifications==0.0.4
gym-notices==0.0.8
gymnasium==1.1.1
numpy==2.2.4
pygame==2.6.1
typing_extensions==4.13.2

1、查看gym里面都有什么内容:

from  gymnasium import envs
env_spaces = envs.registry
envs_ids = [env_spaces[env_spec].id for env_spec in env_spaces]
print("\n".join(envs_ids))

运行结果:
在这里插入图片描述
对应的效果:
GYM document

在这里插入图片描述

2、小车让旗杆立起来示例

CartPole 通过控制一辆小车,让杆立起来:
CartPole-v0 环境有两个动作:将小车向左移动和将小车向右移动。我们还可以得到观测:小车当前的位置,小车当前往左、往右移的速度,杆的角度以及杆的最高点(顶端)的速度。观测越详细,我们就可以更好地描述当前所有的状态。这里有奖励的定义,如果能多走一步,我们就会得到一个奖励(奖励值为 1),所以我们需要存活尽可能多的时间来得到更多的奖励。当杆的角度大于某一个角度(没能保持平衡),或者小车的中心到达图形界面窗口的边缘,或者累积步数大于 200,游戏就结束了,我们就输了。所以智能体的目的是控制杆,让它尽可能地保持平衡以及尽可能保持在环境的中央

import gymnasium as gym
env = gym.make("CartPole-v1",render_mode="human")
observation, info = env.reset()
episode_over = False
for step in range(1000):
    action = env.action_space.sample()  # 从动作空间中随机选取一个动作
    observation, reward, terminated, truncated, info = env.step(action)
    episode_over = terminated or truncated
    if episode_over:
        observation, info = env.reset() # 游戏失败了,重设环境
env.close()

运行后得到:
在这里插入图片描述在这里插入图片描述
打印observation,输出的结果是:
在这里插入图片描述

3,CartPole 小车旗杆游戏失败:

如果发生以下任何一种情况,该游戏就会结束:

杆子倒了:极角大于±12°
终止:车位置大于±2.4(车中心到达显示屏边缘)
截断:Episode 长度大于 500(CartPole-v0 为 200)

4.输入输出的含义

在上面的CartPole 小车旗杆游戏的例子里,

输出env.action_space.sample()的返回值,能看到输出为 1 或者 0

env.action_space.sample()的含义是,在该游戏的所有动作空间里随机选择一个作为输出。

在这个例子中,动作只有两个:0 和 1,一左一右

env.step()方法有4个返回值:observation、reward、done、info

Gym 库中的每个环境都定义了观测空间和动作空间。观测空间和动作空间可以是离散的(取值为有限个离散的值),也可以是连续的(取值为连续的值)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值