OpenAI Gym 环境 'CartPole-v0' 和 'CartPole-v1' 之间的差异

Difference between OpenAI Gym environments 'CartPole-v0' and 'CartPole-v1'

我找不到关于 OpenAI Gym 环境 'CartPole-v0' 和 'CartPole-v1' 之间差异的准确描述。

这两种环境都有单独的官方网站(参见 1 and 2), though I can only find one code without version identification in the gym github repository (see 3)。我还检查了调试器究竟加载了哪些文件,尽管它们似乎都加载了上述相同的文件。唯一的区别似乎是它们内部分配的 max_episode_stepsreward_threshold,可以如下所示访问。 CartPole-v0 的值为 200/195.0,CartPole-v1 的值为 500/475.0。其余的乍一看似乎完全相同。

import gym

env = gym.make("CartPole-v1")
print(self.env.spec.max_episode_steps)
print(self.env.spec.reward_threshold)

因此,如果有人能为我描述确切的差异或将我转发到这样做的网站,我将不胜感激。非常感谢!

您可能已经注意到,在 OpenAI Gym 中有时会出现相同环境的不同版本。不同的版本通常共享主要的环境逻辑,但一些参数配置有不同的值。这些版本使用名为 the registry.

的功能进行管理

以CartPole环境为例,您可以在this source code中找到两个注册版本。正如您在第 50 到 65 行中看到的,存在两个 CartPole 版本,标记为 v0 和 v1,它们的区别在于参数 max_episode_stepsreward_threshold:

register(
    id='CartPole-v0',
    entry_point='gym.envs.classic_control:CartPoleEnv',
    max_episode_steps=200,
    reward_threshold=195.0,
)

register(
    id='CartPole-v1',
    entry_point='gym.envs.classic_control:CartPoleEnv',
    max_episode_steps=500,
    reward_threshold=475.0,
)

这两个参数证实了您对 CartPole-v0 和 CartPole-v1 之间差异的猜测。