Acrobot

../../../_images/acrobot.gif

该环境是经典控制环境的一部分,其中包含有关环境的通用信息。

动作空间

Discrete(3)

观察空间

Box([ -1. -1. -1. -1. -12.566371 -28.274334], [ 1. 1. 1. 1. 12.566371 28.274334], (6,), float32)

导入

gymnasium.make("Acrobot-v1")

描述

Acrobot 环境基于 Sutton 在 “强化学习中的泛化:使用稀疏粗编码的成功案例”Sutton 和 Barto 的书籍 中的工作。该系统由两个线性连接形成链条的连杆组成,链条的一端固定。两个连杆之间的接头被驱动。目标是在驱动接头上施加扭矩,使线性链的自由端在从悬挂向下的初始状态开始时摆动到给定高度以上。

Gif 所示:两个由两个绿色接头连接的蓝色连杆。两个连杆之间的接头被驱动。目标是通过在执行器上施加扭矩使外连杆的自由端达到目标高度(系统上方的黑色水平线)。

动作空间

动作是离散的、确定性的,表示施加在两个连杆之间的驱动接头上的扭矩。

编号

动作

单位

0

对驱动接头施加 -1 扭矩

扭矩 (N m)

1

对驱动接头施加 0 扭矩

扭矩 (N m)

2

对驱动接头施加 1 扭矩

扭矩 (N m)

观察空间

观察结果是一个形状为 (6,)ndarray,它提供有关两个旋转接头角度及其角速度的信息。

编号

观察

最小值

最大值

0

theta1 的余弦

-1

1

1

theta1 的正弦

-1

1

2

theta2 的余弦

-1

1

3

theta2 的正弦

-1

1

4

theta1 的角速度

~ -12.567 (-4 * pi)

~ 12.567 (4 * pi)

5

theta2 的角速度

~ -28.274 (-9 * pi)

~ 28.274 (9 * pi)

其中

  • theta1 是第一个接头的角度,其中 0 度角表示第一个连杆直接指向下方。

  • theta2相对于第一个连杆的角度。 0 度角对应于两个连杆之间具有相同的角度。

theta1theta2 的角速度分别限制在 ±4π 和 ±9π rad/s。状态 [1, 0, 1, 0, ..., ...] 表示两个连杆都指向下方。

奖励

目标是让自由端在尽可能少的步骤内达到指定的目标高度,因此所有没有达到目标的步骤都会产生 -1 的奖励。达到目标高度会导致以 0 奖励终止。奖励阈值为 -100。

起始状态

基础状态中的每个参数(theta1theta2 以及两个角速度)在 -0.1 和 0.1 之间均匀初始化。这意味着两个连杆都指向下方,并且具有某种初始随机性。

剧集结束

如果发生以下情况之一,则剧集结束

  1. 终止:自由端达到目标高度,目标高度的构造方式为:-cos(theta1) - cos(theta2 + theta1) > 1.0

  2. 截断:剧集长度大于 500(v0 为 200)

参数

Acrobot 仅将 render_mode 作为 gymnasium.make 的关键字。在重置时,options 参数允许用户更改用于确定新随机状态的界限。

>>> import gymnasium as gym
>>> env = gym.make('Acrobot-v1', render_mode="rgb_array")
>>> env
<TimeLimit<OrderEnforcing<PassiveEnvChecker<AcrobotEnv<Acrobot-v1>>>>>
>>> env.reset(seed=123, options={"low": -0.2, "high": 0.2})  # default low=-0.1, high=0.1
(array([ 0.997341  ,  0.07287608,  0.9841162 , -0.17752565, -0.11185605,
       -0.12625128], dtype=float32), {})

默认情况下,翻滚木偶的动力学遵循 Sutton 和 Barto 的书籍 强化学习:入门 中所述的动力学。但是,可以修改 book_or_nips 参数以将摆锤的动力学更改为原始 NeurIPS 论文 中所述的动力学。

# To change the dynamics as described above
env.unwrapped.book_or_nips = 'nips'

有关详细信息,请参阅以下说明

动力学方程式在 NIPS 论文中缺少书籍中存在的某些项。R. Sutton 在私人信件中确认,论文和书籍中显示的实验结果是用书籍中显示的方程式生成的。但是,可以通过设置 book_or_nips = 'nips' 来选择使用论文中的方程式运行域。

版本历史

  • v1:最大步数从 200 增加到 500。v0 的观察空间以弧度提供 theta1theta2 的直接读数,范围为 [-pi, pi]。这里描述的 v1 观察空间改为提供每个角度的正弦和余弦。

  • v0:初始版本发布

参考文献

  • Sutton, R. S. (1996). Generalization in Reinforcement Learning: Successful Examples Using Sparse Coarse Coding. In D. Touretzky, M. C. Mozer, & M. Hasselmo (Eds.), Advances in Neural Information Processing Systems (Vol. 8). MIT Press. https://proceedings.neurips.cc/paper/1995/file/8f1d43620bc6bb580df6e80b0dc05c48-Paper.pdf

  • Sutton, R. S., Barto, A. G. (2018 ). Reinforcement Learning: An Introduction. The MIT Press.