登山車¶

此環境是經典控制環境的一部分,其中包含有關環境的一般資訊。
動作空間 |
|
觀察空間 |
|
import |
|
描述¶
登山車 MDP 是一個確定性的 MDP,它包含一輛隨機放置在正弦波谷底的汽車,唯一可能的動作是可以在任一方向施加到汽車的加速度。MDP 的目標是策略性地加速汽車,以到達右側山頂上的目標狀態。gymnasium 中有兩個版本的登山車領域:一個具有離散動作,另一個具有連續動作。此版本是具有離散動作的版本。
此 MDP 首次出現在Andrew Moore 的博士論文 (1990)
@TECHREPORT{Moore90efficientmemory-based,
author = {Andrew William Moore},
title = {Efficient Memory-based Learning for Robot Control},
institution = {University of Cambridge},
year = {1990}
}
觀察空間¶
觀察是一個形狀為 (2,)
的 ndarray
,其中元素對應於以下內容
編號 |
觀察 |
最小值 |
最大值 |
單位 |
---|---|---|---|---|
0 |
汽車沿著 x 軸的位置 |
-1.2 |
0.6 |
位置 (m) |
1 |
汽車的速度 |
-0.07 |
0.07 |
速度 (v) |
動作空間¶
有 3 個離散的確定性動作
0:向左加速
1:不加速
2:向右加速
轉移動力學:¶
給定一個動作,登山車遵循以下轉移動力學
速度t+1 = 速度t + (動作 - 1) * 力 - cos(3 * 位置t) * 重力
位置t+1 = 位置t + 速度t+1
其中力 = 0.001,重力 = 0.0025。任一端的碰撞都是非彈性的,碰撞牆壁時速度設為 0。位置被裁剪到 [-1.2, 0.6]
範圍,速度被裁剪到 [-0.07, 0.07]
範圍。
獎勵:¶
目標是盡快到達放置在右側山頂上的旗幟,因此,每一步都會對智能體處以 -1 的獎勵。
起始狀態¶
汽車的位置被分配一個 [-0.6, -0.4] 中的均勻隨機值。汽車的起始速度始終被分配為 0。
回合結束¶
如果發生以下任一情況,回合將結束
終止:汽車的位置大於或等於 0.5(右側山頂上的目標位置)
截斷:回合的長度為 200。
參數¶
登山車有兩個用於 gymnasium.make
的參數,分別是 render_mode
和 goal_velocity
。在重置時,options
參數允許使用者更改用於確定新隨機狀態的邊界。
>>> import gymnasium as gym
>>> env = gym.make("MountainCar-v0", render_mode="rgb_array", goal_velocity=0.1) # default goal_velocity=0
>>> env
<TimeLimit<OrderEnforcing<PassiveEnvChecker<MountainCarEnv<MountainCar-v0>>>>>
>>> env.reset(seed=123, options={"x_init": np.pi/2, "y_init": 0.5}) # default x_init=np.pi, y_init=1.0
(array([-0.46352962, 0. ], dtype=float32), {})
版本歷史¶
v0:初始版本發布