【Python】安装配置gym

gym是python中的一个强化学习环境,想要完整配置并跑起来坑还是比较多的。

下面记录一下Windows完整安装过程,Linux下过程基本类似。

1. 执行pip install gym直接安装的是0.26.2版本,网上常见的代码无法兼容,这里安装0.25.2版,并且安装对应的pygame。

执行:

pip install gym==0.25.2
pip install pygame==2.1.2

完成后常见的cartpole和mountaincar就可以执行了,下面给个显示例子并打印出所有可模拟的环境:

import gym
from gym import envs
import warnings
import time
warnings.filterwarnings("ignore")

for env in envs.registry.all():
    print(env.id)

env = gym.make("CartPole-v1")
#action_space_dim = env.action_space.n  

for i in range(3000):
    state = env.reset()

    while True:
        env.render()
        
        action = env.action_space.sample()

        next_state, reward, done, _ = env.step(action)

        if done:
            break

结果如下:

默认支持的环境还是比较少的,如果想要更多的环境,如atari,box2d或者mujoco需要做下面的操作。

2. 执行:

pip install swig
pip install gym[all] 

3. 完成后可能会出现环境缺少ale_c.dll文件问题,这里给一个下载链接,下载后拷贝到C:\Users\xxx\AppData\Local\Programs\Python\Python37\Lib\site-packages\atari_py\ale_interface目录下。Linux一般没有这个问题,Windows也可能没有这个问题,没有遇到可以忽略。

4. 完成后执行下面命令下载Atari游戏Rom,执行AutoROM时有时可能会卡: 

pip install autorom
pip install --upgrade AutoROM
AutoROM --accept-license

完成后这个C:\Users\xxx\AppData\Local\Programs\Python\Python37\Lib\site-packages\AutoROM\roms目录下应该有很多bin文件。

5. 显示atari环境代码:

import gym
from gym import envs
import warnings
import time
warnings.filterwarnings("ignore")

env = gym.make('Pong-v0', render_mode='human')

obs = env.reset()
for i in range(1000):
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)
    time.sleep(0.01)
env.close()

结果如下:

6. 安装mujoco相对比较会更坑一些。首先这里下载mujoco210版本,并且将文件拷贝到C:\Users\xxx\.mujoco\目录,形成C:\Users\xxx\.mujoco\mujoco210目录,并且配置Path环境变量到bin目录,重启电脑。

7. 然后安装mujoco_py,如果提前安装了,先执行pip uninstall mujoco_py删除掉。然后这里下载,源码安装。

安装前先搜到源码中dist.ext_modules部分,并改为下面代码:

dist.ext_modules = cythonize([self.extension],compiler_directives={'legacy_implicit_noexcept': True})

执行python setup.py install安装,安装完成后再执行pip uninstall mujoco_py,然后就可以了,至于为什么最后要再执行uninstall命令,我也不知道,反正这样就可以了。

8. 显示mujoco的测试代码:

import gym
env = gym.make('Humanoid-v4')

from gym import envs
print(envs.registry.all())    # print the available environments

print(env.action_space)
print(env.observation_space)
print(env.observation_space.high)
print(env.observation_space.low)

for i_episode in range(200):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()    # take a random action
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break
env.close()

结果如下:

 

9. 最后给出一些常见的gym环境,可能会有一些有版本问题,不过错误时有提示:

  1. 经典控制 Classic Control:

    • Acrobot-v1:双摆杆倒立摆问题。
    • CartPole-v1:杆车平衡问题。
    • MountainCar-v0:小车爬山问题。
    • Pendulum-v0:摆杆倒立问题。
    • MountainCarContinuous-v0:连续动作的小车爬山问题。
  2. Box2D:

    • LunarLander-v2:着陆舱着陆问题。
    • LunarLanderContinuous-v2:连续动作的着陆舱着陆问题。
    • BipedalWalker-v3:双足行走机器人问题。
    • BipedalWalkerHardcore-v3:更困难版本的双足行走机器人问题。
    • CarRacing-v0:赛车游戏。
  3. Atari:

    • Pong-v0:乒乓球游戏 Pong。
    • Breakout-v0:打砖块游戏 Breakout。
    • SpaceInvaders-v0:太空侵略者游戏 Space Invaders。
    • MsPacman-v0:吃豆人游戏 Ms. Pacman。
    • Enduro-v0:汽车竞赛游戏 Enduro。
    • BeamRider-v0:射击游戏 Beam Rider。
  4. MuJoCo:

    • HalfCheetah-v3:半身豹机器人问题。
    • Hopper-v3:单腿机器人问题。
    • Walker2d-v3:双足行走机器人问题。
    • Ant-v3:蚂蚁机器人问题。
    • Humanoid-v3:人形机器人问题。
    • HumanoidStandup-v2:人形机器人站立问题。
posted @ 2024-04-20 12:58  Dsp Tian  阅读(2268)  评论(0编辑  收藏  举报