【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:人形機器人站立問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章