RL-06-01-Gymnasium与环境接口

← 上级:RL-06.评估环境与工具链 · 实现:RL-04-01-训练循环与接口约定

Gymnasium 是 RL 实验的事实标准环境 API(承接 OpenAI Gym)。

1
2
3
pip install gymnasium[classic-control]
# Atari: pip install gymnasium[atari,accept-rom-license]
# MuJoCo: pip install gymnasium[mujoco]

一、创建与注册

1
2
3
import gymnasium as gym
env = gym.make("CartPole-v1", render_mode="rgb_array")
print(env.observation_space, env.action_space)

自定义环境:继承 gym.Env,实现 resetsteprendergym.register 注册 id。


二、Space API

1
2
3
4
5
6
7
8
from gymnasium.spaces import Box, Discrete, Dict

# Box: 连续
space = Box(low=-1.0, high=1.0, shape=(4,), dtype=np.float32)
space.sample()

# Discrete
Discrete(2).sample() # 0 or 1

三、常用 Wrapper

1
2
3
4
5
from gymnasium.wrappers import RecordEpisodeStatistics, RecordVideo

env = gym.make("CartPole-v1", render_mode="rgb_array")
env = RecordEpisodeStatistics(env)
env = RecordVideo(env, video_folder="./videos", episode_trigger=lambda e: e % 50 == 0)
Wrapper 作用
TimeLimit 内置 max_episode_steps
ClipAction 连续动作裁剪
TransformObservation 自定义 obs 变换
FrameStackObservation 帧堆叠

四、与训练循环

RL-04-01-训练循环与接口约定reset 返回 (obs, info)step 五元组。


五、小结

-------------本文结束感谢您的阅读-------------