为什么在200个步骤(健身房环境MountainCar)之后完成剧集?

nee*_*elp 7 python openai-gym

在Python中使用OpenAI-gym的MountainCar-v0环境时,经过200个步骤后,完成的值将成立.这是为什么?由于未达到目标状态,因此不应该进行这一集.

import gym
env = gym.make('MountainCar-v0')
env.reset()
for _ in range(300):
    env.render()
    res = env.step(env.action_space.sample())
    print(_)
    print(res[2])
Run Code Online (Sandbox Code Playgroud)

我想运行步骤方法,直到汽车到达标志然后打破for循环.这可能吗?与此类似的东西:

n_episodes = 10
done = False
for i in range(n_episodes):
    env.reset()
    while done == False:
        env.render()
        state, reward, done, _ = env.step(env.action_space.sample())
Run Code Online (Sandbox Code Playgroud)

Sci*_*tor 11

当前最新版本的健身房 - 即使您不使用env.monitor,也会在200步内停止环境.为避免这种情况,请使用 env = gym.make("MountainCar-v0").env

  • 哦,我发现这个..时间限制被添加为包装器,并且`.env`访问被包装的环境:https://github.com/openai/gym/blob/c7f9edf943174387b2336ec7f7bc15e0ecac16f8/gym/envs/registration。 py#L110 (2认同)

小智 5

https://github.com/openai/gym/wiki/FAQ复制:

环境旨在具有各种难度,以便确定强化学习代理解决这些问题的能力。许多环境超出了当前的技术水平,因此不要期望解决所有这些问题。(如果您这样做,请提出申请)。

如果要试验行为不同的环境变体,则应给它起一个新名称,这样您就不会将在简单变体上运行的代理与在原始环境中运行的其他代理错误地进行比较。例如,MountainCar环境之所以困难,部分原因是因为它有200个时间步长的限制,之后它将重置为开始。成功的特工必须在不到200个步骤内解决问题。出于测试目的,您可以通过调整以下调用之一来创建具有不同参数的新环境MountainCarMyEasyVersion-v0 gym/gym/envs/__init__.py

gym.envs.register(
    id='MountainCarMyEasyVersion-v0',
    entry_point='gym.envs.classic_control:MountainCarEnv',
    max_episode_steps=250,      # MountainCar-v0 uses 200
    reward_threshold=-110.0,
)
env = gym.make('MountainCarMyEasyVersion-v0')
Run Code Online (Sandbox Code Playgroud)

由于这些环境名称仅是您的代码已知的,因此您将无法将其上载到记分板。