与 Gymnasium 环境交互

Python 中的 Gymnasium 强化学习

Fouad Trad

Machine Learning Engineer

Gymnasium

  • 强化学习任务的标准库
  • 抽象 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 强化学习

Passons à la pratique !

Python 中的 Gymnasium 强化学习

Preparing Video For Download...