Acrobot¶

此環境是經典控制環境的一部分,其中包含有關環境的一般資訊。
動作空間 |
|
觀察空間 |
|
導入 |
|
描述¶
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). 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.