【Python】安裝配置gym

Dsp Tian發表於2024-04-20

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:人形機器人站立問題。

相關文章