OpenAI Gym环境'CartPole-v0'和'CartPole-v1'之间的区别是什么?

23

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

这两个环境都有专门的官方网站(请参见12),尽管我只能在gym的github存储库中找到一个没有版本标识的代码(请参见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)

我希望有人能够为我描述一下具体的区别,或者给我推荐一个能够做到这一点的网站。非常感谢!

除了您提到的那些差异之外,没有任何区别。 - Brale
你是否有相关的来源资料? - Paul Pauls
代码只有一个版本,那就是最好的源代码。 - Brale
1个回答

41

可能您已经注意到,在OpenAI Gym中有时会出现相同环境的不同版本。这些不同的版本通常共享主环境逻辑,但某些参数使用不同的值进行配置。使用名为注册表的功能管理这些版本。

在CartPole环境的情况下,您可以在此源代码中找到两个已注册的版本。如您所见,行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之间差异的猜测。


1
非常感谢你,Pablo。你的回答非常有帮助并且提供了很好的支持!你是否也知道这两者不同的确切原因?虽然现在我知道唯一不同的是这两个变量,但这仍然是我的主要关注点。 - Paul Pauls
1
欢迎,很高兴能够帮助您。实际上我不知道原因,也许它们出现在不同的研究论文中。我猜可以调查每个配置的起源。 - Pablo EM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接