gym是目前强化学习最常用的工具之一,一直在迭代升级。2021年gym库不再更新,推出了gymnasium作为替代 1。
gymnasium与gym之间的主要不同在于reset和step的返回参数数目发生了变化,具体变化见版本变化。
gym目前并不支持python3.11版本,所以在台式上就用gymnasium吧。
有很多版本兼容问题,gym0.26.0和之后的版本对之前的代码不兼容。所以可以安装0.25.2。
seed()函数在新版本已经被删除了。在新版本中,seed应该在reset()函数调用时指定。
新版本的env_step()的返回值由4个变为5个了。
安装环境:
pip install numpy pandas matplotlib
pip install gymnasium[all]
pip install gymnasium[accept-rom-license]
pip install pygame
查看gymnasium库中已注册的环境:
from gymnasium import envs
env_list = envs.registry.keys()
env_ids = [env_item for env_item in env_list]
print('There are {0} envs in gym'.format(len(env_ids)))
print(env_ids)
env_ids可以写入下面这个代码中的gym.make("env_ids")中。
倒立摆代码可运行:
import time
import gymnasium as gym
# 生成环境
env = gym.make('CartPole-v1', render_mode='human')
# 环境初始化
state = env.reset()
# 循环交互
while True:
# 渲染画面
# env.render()
# 从动作空间随机获取一个动作
action = env.action_space.sample()
# agent与环境进行一步交互
state, reward, terminated, truncated, info = env.step(action)
print('state = {0}; reward = {1}'.format(state, reward))
# 判断当前episode 是否完成
if terminated:
print('terminated')
break
time.sleep(0.1)
# 环境结束
# env.close()
终止条件(主要是杆角度和车位置):
这个笔记很不错:
强化学习笔记:Gym入门--从安装到第一个完整的代码示例_gym安装-CSDN博客
强化学习环境gymnasium的搭建_gymnasium安装-CSDN博客
官方文档:
Gymnasium Documentation (farama.org)