一、Gym的安装
1. 命令安装
pip install gym -y
2. 源码安装
git clone https://github.com/openai/gym
cd gym
pip install -e .
3. 示例安装验证
写一示例测试 gym_test.py
文件内容如下:
import gym
# 创建环境并指定渲染模式
env = gym.make('CartPole-v1', render_mode='human')
env.reset()
# 运行1000步
for _ in range(1000):
env.render()
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
# 如果环境终止,重置
if terminated or truncated:
env.reset()
env.close()
测试demo结果如下则安装成功。
# 可视化依赖
pip install pygame
python3 gym_test.py
测试 gym 能否成功运行 MuJoCo 环境
# version1: 纯gym_version >= '0.26.0'
import gym
env = gym.make("Ant-v4", render_mode="human")
observation, info = env.reset() # reset() 现在返回 (observation, info)
for _ in range(1000):
action = env.action_space.sample()
observation, reward, terminated, truncated, info = env.step(action) # 新版返回5个值
if terminated or truncated: # 检查是否终止或截断
observation, info = env.reset() # 重置环境
env.close()
# version2: 兼容性gym_version各版本
import gym
import warnings
# 获取当前 gym 版本
gym_version = gym.__version__
print(f"Using gym version: {gym_version}")
# 初始化环境
env = gym.make("Ant-v4", render_mode="human")
# 根据版本自适应处理 reset() 返回值
if gym_version >= '0.26.0':
observation, info = env.reset()
else:
observation = env.reset()
info = {} # 旧版没有 info
try:
for _ in range(1000):
action = env.action_space.sample()
# 根据版本自适应处理 step() 返回值
if gym_version >= '0.26.0':
observation, reward, terminated, truncated, info = env.step(action)
done = terminated or truncated
else:
observation, reward, done, info = env.step(action)
truncated = False # 旧版没有 truncated
# 渲染环境
if gym_version >= '0.26.0':
env.render() # 新版 render() 不需要参数
else:
env.render(mode='human') # 旧版需要指定 mode
# 检查是否结束
if done:
if gym_version >= '0.26.0':
observation, info = env.reset()
else:
observation = env.reset()
info = {}
except KeyboardInterrupt:
print("Simulation interrupted by user")
finally:
env.close()
print("Environment closed")
测试结果如下则成功调用Mujoco环境。
二、Gym注册
当需要基于Gym基本框架搭建自定义环境时,如何将自己的环境移到gym中,被其所识别,这即是 Gym注册自定义环境 问题。