首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么剧集是在200个时间步长后完成的(健身房环境MountainCar)?

为什么剧集是在200个时间步长后完成的(健身房环境MountainCar)?
EN

Stack Overflow用户
提问于 2017-03-14 21:55:07
回答 2查看 9.2K关注 0票数 13

在Python中使用OpenAI-gym中的MountainCar-v0环境时,完成的值将在200个时间步长后为真。为什么会这样呢?因为没有达到目标状态,所以不应该做这一集。

代码语言:javascript
复制
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])

我想运行step方法,直到汽车到达旗帜,然后中断for循环。这个是可能的吗?类似于下面的内容:

代码语言:javascript
复制
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())
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-15 14:09:34

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

票数 18
EN

Stack Overflow用户

发布于 2017-03-16 07:35:11

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

环境旨在具有不同程度的难度,以便对强化学习代理解决这些问题的能力进行基准测试。许多环境都超出了当前的技术水平,所以不要期望解决所有这些问题。(如果你有,请申请)。

如果您想要尝试一个行为不同的环境变体,您应该给它一个新的名称,这样您就不会错误地将运行在一个简单变体上的代理与运行在原始环境上的其他人的代理进行比较。例如,MountainCar环境很难,部分原因是有200个时间步的限制,超过200个时间步后,它会重置到开始处。成功的智能体必须在200个时间步内解决该问题。出于测试目的,您可以通过调整gym/gym/envs/__init__.py中找到的注册调用之一,使用不同的参数创建一个新的环境found -v0

代码语言:javascript
复制
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')

因为只有您的代码知道这些环境名称,所以您无法将其上载到记分板。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42787924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档