Acrobot¶

此环境是 Classic Control(经典控制)环境的一部分,其中包含有关环境的常规信息。
动作空间 |
|
观测空间 |
|
import |
|
描述¶
Acrobot 环境基于 Sutton 在“Reinforcement Learning 中的泛化:使用稀疏粗编码的成功示例”和Sutton 和 Barto 的书中的工作。该系统由线性连接形成链的两个连杆组成,链的一端固定。两个连杆之间的关节被驱动。目标是在驱动关节上施加扭矩,使线性链的自由端摆动到给定高度以上,同时从向下悬挂的初始状态开始。
如 Gif 中所示:两个蓝色连杆由两个绿色关节连接。两个连杆之间的关节被驱动。目标是通过在执行器上施加扭矩,使外连杆的自由端摆动以达到目标高度(系统上方的黑色水平线)。
动作空间¶
动作是离散的、确定性的,并表示施加在两个连杆之间的驱动关节上的扭矩。
编号 |
动作 |
单位 |
---|---|---|
0 |
对驱动关节施加 -1 扭矩 |
扭矩 (N m) |
1 |
对驱动关节施加 0 扭矩 |
扭矩 (N m) |
2 |
对驱动关节施加 1 扭矩 |
扭矩 (N m) |
观测空间¶
观测是一个形状为 (6,)
的 ndarray
,它提供有关两个旋转关节角度及其角速度的信息
编号 |
观测 |
最小值 |
最大值 |
---|---|---|---|
0 |
|
-1 |
1 |
1 |
|
-1 |
1 |
2 |
|
-1 |
1 |
3 |
|
-1 |
1 |
4 |
|
~ -12.567 (-4 * pi) |
~ 12.567 (4 * pi) |
5 |
|
~ -28.274 (-9 * pi) |
~ 28.274 (9 * pi) |
其中
theta1
是第一个关节的角度,其中角度 0 表示第一个连杆直接向下。theta2
是相对于第一个连杆的角度。 角度 0 对应于两个连杆之间具有相同的角度。
theta1
和 theta2
的角速度分别限制在 ±4π 和 ±9π rad/s。 [1, 0, 1, 0, ..., ...]
的状态表示两个连杆都向下。
奖励¶
目标是以尽可能少的步数使自由端达到指定的目标高度,因此,所有未达到目标的步骤都会产生 -1 的奖励。达到目标高度将导致终止,奖励为 0。奖励阈值为 -100。
起始状态¶
底层状态(theta1
、theta2
和两个角速度)中的每个参数都在 -0.1 和 0.1 之间均匀初始化。这意味着两个连杆都向下,并带有一些初始随机性。
回合结束¶
如果发生以下情况之一,回合结束
终止:自由端达到目标高度,其构造为:
-cos(theta1) - cos(theta2 + theta1) > 1.0
截断:回合长度大于 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), {})
默认情况下,Acrobot 的动力学遵循 Sutton 和 Barto 的书《Reinforcement Learning: An Introduction》中描述的动力学。但是,可以修改 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 的观测空间以弧度为单位提供
theta1
和theta2
的直接读数,范围为[-pi, pi]
。此处描述的 v1 观测空间改为提供每个角度的正弦和余弦值。v0:初始版本发布
参考文献¶
Sutton, R. S. (1996). Reinforcement Learning 中的泛化:使用稀疏粗编码的成功示例。在 D. Touretzky, M. C. Mozer, & M. Hasselmo (Eds.), 神经信息处理系统进展 (第 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.