倒立擺 Acrobot¶
該環境是經典控制環境的一部分,其中包含有關環境的一般資訊。
動作空間 |
|
觀測空間 |
|
匯入 |
|
描述¶
Acrobot 環境基於 Sutton 在“強化學習中的泛化:使用稀疏粗編碼的成功案例”和Sutton 和 Barto 的書中的工作。該系統由兩個線性連線形成鏈條的連桿組成,鏈條的一端是固定的。兩個連桿之間的關節是驅動的。目標是透過在驅動關節上施加扭矩,使線性鏈條的自由端擺動到給定高度以上,同時從向下懸掛的初始狀態開始。
如 Gif 動畫所示:兩個藍色連桿由兩個綠色關節連線。兩個連桿之間的關節是驅動的。目標是透過在執行器上施加扭矩,使外連桿的自由端達到目標高度(系統上方黑色水平線)。
動作空間¶
動作是離散的、確定性的,表示施加在兩個連桿之間驅動關節上的扭矩。
編號 |
動作 |
單位 |
|---|---|---|
0 |
對驅動關節施加 -1 扭矩 |
扭矩 (牛米) |
1 |
對驅動關節施加 0 扭矩 |
扭矩 (牛米) |
2 |
對驅動關節施加 1 扭矩 |
扭矩 (牛米) |
觀測空間¶
觀測結果是一個形狀為 (6,) 的 ndarray,提供關於兩個旋轉關節角度及其角速度的資訊
編號 |
觀測 |
最小值 |
最大值 |
|---|---|---|---|
0 |
|
-1 |
1 |
1 |
|
-1 |
1 |
2 |
|
-1 |
1 |
3 |
|
-1 |
1 |
4 |
|
約 -12.567 (-4 * π) |
約 12.567 (4 * π) |
5 |
|
約 -28.274 (-9 * π) |
約 28.274 (9 * π) |
其中
theta1是第一個關節的角度,其中角度為 0 表示第一個連桿直接向下。theta2是相對於第一個連桿角度而言的。 角度為 0 意味著兩個連桿之間的角度相同。
theta1 和 theta2 的角速度分別限制在 ±4π 和 ±9π 弧度/秒。狀態 [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 的書《強化學習:導論》中所述。但是,可以修改 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.