山地车¶
此环境是经典控制环境的一部分,其中包含有关环境的一般信息。
动作空间 |
|
观察空间 |
|
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:初始版本发布