标准接口

所有的环境都遵循 reset()step() 的范式,学会一个,学会所有。

Wrappers (包装器)

极其强大的功能。你可以像“洋葱”一样层层包装环境,轻松修改 Observation、Action 或 Reward。

生态丰富

几乎所有第三方环境库(如 MuJoCo, Atari)都兼容 Gymnasium 接口。

进阶用法:使用 Wrappers

Wrappers 允许我们在不修改环境源码的情况下增强环境。比如,我们可以将环境的观测值归一化,或者将灰度图作为输入。

gym_wrappers.py
import gymnasium as gym
from gymnasium.wrappers import FlattenObservation, NormalizeReward

# 1. 创建基础环境
env = gym.make("CartPole-v1")

# 2. 包装环境:将观测空间展平
env = FlattenObservation(env)

# 3. 包装环境:将奖励归一化(有助于训练稳定)
env = NormalizeReward(env)

print(f"Wrapped Env: {env}")

obs, _ = env.reset()
action = env.action_space.sample()
obs, reward, done, truncated, info = env.step(action)

print(f"Normalized Reward: {reward}")
查看 Gymnasium 文档