You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何复现运行Python Gymnasium Taxi-v3环境?现有配置未达预期

Gymnasium Taxi-v3 复现失败的误区与解决步骤

问题描述

使用Gymnasium开展强化学习研究,尝试复现Taxi-v3环境的运行结果,已设置全局Python、NumPy种子,并在env.reset时传入种子,但仍无法实现复现。使用代码如下:

import gymnasium as gym
import numpy as np
import random

seed = 42

random.seed(seed)
np.random.seed(seed)

env = gym.make("Taxi-v3")
state, info = env.reset(seed=seed)

认知误区

  • 混淆全局种子与环境独立RNG:Gymnasium的每个环境都维护独立的随机数生成器(RNG),全局random和numpy种子不会直接控制环境内部的随机行为(如动作采样、状态转移逻辑),仅设置全局种子无法保证环境行为的可复现性。
  • 仅依赖reset的种子参数:env.reset(seed=seed)仅负责初始化环境的起始状态,无法覆盖环境其他随机过程的RNG配置。

缺失的配置步骤

要实现完全可复现,需补充以下种子绑定操作:

  1. 绑定动作空间种子:动作空间的随机采样(如env.action_space.sample())依赖独立RNG,需单独设置:
    env.action_space.seed(seed)
    
  2. 绑定环境底层RNG:直接设置环境内部的核心RNG,覆盖所有状态转移等随机逻辑:
    env.unwrapped.seed(seed)
    

完整可复现代码

import gymnasium as gym
import numpy as np
import random

seed = 42

# 全局种子设置(可选但建议统一)
random.seed(seed)
np.random.seed(seed)

env = gym.make("Taxi-v3")
# 绑定动作空间种子
env.action_space.seed(seed)
# 绑定环境底层RNG
env.unwrapped.seed(seed)
# 初始化环境并传入种子
state, info = env.reset(seed=seed)

内容的提问来源于stack exchange,提问作者Anselmo Blanco Dominguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:40:05