Acrobot

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

此環境是經典控制環境的一部分,其中包含有關環境的一般資訊。

動作空間

Discrete(3) (離散(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 在「Reinforcement Learning 中的泛化:使用稀疏粗編碼的成功範例」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), {})

依預設,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 的觀察空間以弧度為單位,直接讀取 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.