倒立擺 Acrobot

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

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

動作空間

離散(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 扭矩

扭矩 (牛米)

1

對驅動關節施加 0 扭矩

扭矩 (牛米)

2

對驅動關節施加 1 扭矩

扭矩 (牛米)

觀測空間

觀測結果是一個形狀為 (6,)ndarray,提供關於兩個旋轉關節角度及其角速度的資訊

編號

觀測

最小值

最大值

0

theta1 的餘弦

-1

1

1

theta1 的正弦

-1

1

2

theta2 的餘弦

-1

1

3

theta2 的正弦

-1

1

4

theta1 的角速度

約 -12.567 (-4 * π)

約 12.567 (4 * π)

5

theta2 的角速度

約 -28.274 (-9 * π)

約 28.274 (9 * π)

其中

  • theta1 是第一個關節的角度,其中角度為 0 表示第一個連桿直接向下。

  • theta2相對於第一個連桿角度而言的。 角度為 0 意味著兩個連桿之間的角度相同。

theta1theta2 的角速度分別限制在 ±4π 和 ±9π 弧度/秒。狀態 [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 的書《強化學習:導論》中所述。但是,可以修改 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.