Mountain Car (山地車)

../../../_images/mountain_car.gif

此環境是 Classic Control (經典控制) 環境的一部分,其中包含有關環境的一般資訊。

動作空間

Discrete(3) (離散(3))

觀察空間

Box([-1.2 -0.07], [0.6 0.07], (2,), float32)

import (導入)

gymnasium.make("MountainCar-v0")

描述

Mountain Car 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

位置 (公尺)

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。

回合結束

如果發生以下任一情況,回合將結束

  1. 終止:汽車的位置大於或等於 0.5(右側山頂的目標位置)

  2. 截斷:回合長度為 200。

參數

Mountain Car (山地車) 對於 gymnasium.make 有兩個參數,分別是 render_modegoal_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:初始版本發布