與 Gymnasium 環境互動

使用 Python 的 Gymnasium 進行強化學習

Fouad Trad

Machine Learning Engineer

Gymnasium

  • RL 任務的標準函式庫
  • 抽象化 RL 問題的複雜度
  • 提供多樣 RL 環境

顯示 gymnasium 標誌與其提供部分環境的圖片。

使用 Python 的 Gymnasium 進行強化學習

常見的 Gymnasium 環境

CartPole: 代理需讓桿在移動小車上保持平衡 CartPole 環境的 GIF。

MountainCar:代理需把車開上陡坡 MountainCar 環境的 GIF。

FrozenLake: 代理需在有洞的冰湖上導航 FrozenLake gymnasium 環境的 GIF。

Taxi: 接送乘客上下車 Taxi 環境的 GIF。

使用 Python 的 Gymnasium 進行強化學習

Gymnasium 介面

 

  • 介面統一於所有環境
  • 提供函式與方法可:
    • 初始化環境
    • 視覺化呈現環境
    • 執行動作
    • 觀察結果

CartPole 環境的 GIF。

使用 Python 的 Gymnasium 進行強化學習

建立並初始化環境

import gymnasium as gym

env = gym.make('CartPole', render_mode='rgb_array')
state, info = env.reset(seed=42) print(state)
[-0.04405273  0.0242996  -0.04377224 -0.01767325]
1 https://gymnasium.farama.org/environments/classic_control/cart_pole/
使用 Python 的 Gymnasium 進行強化學習

視覺化狀態

 

import matplotlib.pyplot as plt

state_image = env.render()
plt.imshow(state_image)

plt.show()

CartPole 初始狀態的圖。

使用 Python 的 Gymnasium 進行強化學習

視覺化狀態

 

import matplotlib.pyplot as plt

def render(): state_image = env.render() plt.imshow(state_image) plt.show()
# 呼叫函式 render()

CartPole 初始狀態的圖。

使用 Python 的 Gymnasium 進行強化學習

執行動作

  • 0:向左移動
  • 1:向右移動
action = 1 
state, reward, terminated, truncated, info = env.step(action)




使用 Python 的 Gymnasium 進行強化學習

執行動作

  • 0:向左移動
  • 1:向右移動
action = 1
state, reward, terminated, _, _ = env.step(action)


print("State: ", state) print("Reward: ", reward) print("Terminated: ", terminated)
State:  [-0.04356674  0.22002107 -0.0441257  -0.3238392 ]
Reward:  1.0
Terminated:  False
使用 Python 的 Gymnasium 進行強化學習

互動迴圈

while not terminated:
    action = 1 # 向右移動
    state, reward, terminated, _, _ = env.step(action)
    render()

顯示互動迴圈中於 CartPole 環境擷取的四個不同狀態的圖片。

使用 Python 的 Gymnasium 進行強化學習

一起來練習吧!

使用 Python 的 Gymnasium 進行強化學習

Preparing Video For Download...