山地车¶

此环境属于经典控制环境,其中包含有关该环境的通用信息。
动作空间 |
|
观测空间 |
|
导入 |
|
描述¶
山地车 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}
}
观测空间¶
观测是一个形状为 ndarray
的 (2,)
,其元素对应如下:
编号 |
观测 |
最小值 |
最大值 |
单位 |
---|---|---|---|---|
0 |
汽车沿 x 轴的位置 |
-1.2 |
0.6 |
位置 (m) |
1 |
汽车的速度 |
-0.07 |
0.07 |
速度 (v) |
动作空间¶
有 3 种离散的确定性动作
0: 向左加速
1: 不加速
2: 向右加速
转移动力学:¶
给定一个动作,山地车遵循以下转移动力学
velocityt+1 = velocityt + (action - 1) * force - cos(3 * positiont) * gravity
positiont+1 = positiont + velocityt+1
其中 force = 0.001,gravity = 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: 初始版本发布