倒單擺

../../../_images/inverted_pendulum.gif

此環境是 Mujoco 環境的一部分,其中包含有關環境的一般資訊。

動作空間

Box(-3.0, 3.0, (1,), float32)

觀察空間

Box(-inf, inf, (4,), float64)

匯入

gymnasium.make("InvertedPendulum-v5")

描述

此環境是 Cartpole 環境,基於 Barto、Sutton 和 Anderson 在「類神經元自適應元件,可以解決困難的學習控制問題」中的工作,就像在經典環境中一樣,但現在由 Mujoco 物理模擬器提供支援 - 允許更複雜的實驗(例如改變重力的影響)。此環境由一個可以線性移動的台車組成,一端連接一根桿子,另一端是自由的。台車可以向左或向右推動,目標是透過對台車施力來平衡台車頂部的桿子。

動作空間

代理人採用一個 1 元素向量來表示動作。

動作空間是連續的 (action),範圍在 [-3, 3],其中 action 代表施加在台車上的數值力(大小代表力量的大小,符號代表方向)

編號

動作

控制最小值

控制最大值

名稱(在對應的 XML 檔案中)

關節

類型(單位)

0

施加在台車上的力

-3

3

滑桿

滑動

力 (N)

觀察空間

觀察空間由以下部分組成(依序)

  • qpos(2 個元素):機器人台車和桿子的位置值。

  • qvel(2 個元素):台車和桿子的速度(它們的導數)。

觀察空間是一個 Box(-Inf, Inf, (4,), float64),其中元素如下

編號

觀察

最小值

最大值

名稱(在對應的 XML 檔案中)

關節

類型(單位)

0

台車沿線性表面的位置

-Inf

Inf

滑桿

滑動

位置 (m)

1

桿子在台車上的垂直角度

-Inf

Inf

鉸鏈

鉸鏈

角度 (rad)

2

台車的線性速度

-Inf

Inf

滑桿

滑動

速度 (m/s)

3

桿子在台車上的角速度

-Inf

Inf

鉸鏈

鉸鏈

角速度 (rad/s)

獎勵

目標是盡可能長時間保持倒單擺直立(在一定的角度限制內) - 因此,對於桿子直立的每個時間步長,都會給予 +1 的獎勵。

如果:\(|angle| < 0.2\),則認為桿子直立。

info 也包含獎勵。

起始狀態

初始位置狀態為 \(\mathcal{U}_{[-reset\_noise\_scale imes I_{2}, reset\_noise\_scale imes I_{2}]}\)。初始速度狀態為 \(\mathcal{U}_{[-reset\_noise\_scale imes I_{2}, reset\_noise\_scale imes I_{2}]}\)

其中 \(\mathcal{U}\) 是多元均勻連續分佈。

回合結束

終止

當倒單擺不健康時,環境會終止。如果發生以下任何情況,則倒單擺是不健康的

  1. 任何狀態空間值不再是有限的。

  2. 桿子與台車之間的垂直角度的絕對值大於 0.2 弧度。

截斷

回合的預設持續時間為 1000 個時間步長。

參數

InvertedPendulum 提供了一系列參數來修改觀察空間、獎勵函式、初始狀態和終止條件。這些參數可以在 gymnasium.make 期間以以下方式套用

import gymnasium as gym
env = gym.make('InvertedPendulum-v5', reset_noise_scale=0.1)

參數

類型

預設值

描述

xml_file

str

"inverted_pendulum.xml"

MuJoCo 模型的路徑

reset_noise_scale

float

0.01

初始位置和速度的隨機擾動比例(請參閱 起始狀態 部分)

版本歷史

  • v5

    • 現在最低 mujoco 版本為 2.3.3。

    • 新增了對使用 xml_file 參數完全自訂/第三方 mujoco 模型(先前只能對現有模型進行少量變更)的支援。

    • 新增了 default_camera_config 參數,這是一個用於設定 mj_camera 屬性的字典,主要用於自訂環境。

    • 新增了 env.observation_structure,這是一個用於指定觀察空間組成的字典(例如 qposqvel),對於為 MuJoCo 環境建置工具和封裝器很有用。

    • 新增了 frame_skip 參數,用於設定 dtstep() 的持續時間),預設值因環境而異,請檢查環境文件頁面。

    • 修正錯誤:在每個步驟都會給予 healthy_reward(即使單擺不健康),現在只有在單擺健康(未終止)時才會給予(相關 GitHub 問題)。

    • 新增了 xml_file 參數。

    • 新增了 reset_noise_scale 參數來設定初始狀態的範圍。

    • 新增了 info["reward_survive"],其中包含獎勵。

  • v4:所有 MuJoCo 環境現在都使用 mujoco >= 2.1.3 中的 MuJoCo 繫結。

  • v3:此環境沒有 v3 版本。

  • v2:所有連續控制環境現在都使用 mujoco-py >= 1.5。

  • v1:基於機器人的任務(包括倒單擺)的 max_time_steps 提高到 1000。

  • v0:初始版本發佈。