在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])我想运行step方法,直到汽车到达旗帜,然后中断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())发布于 2017-03-15 14:09:34
当前最新版本的健身房强制停止环境在200步,即使你不使用env.monitor。要避免这种情况,请使用env = gym.make("MountainCar-v0").env
发布于 2017-03-16 07:35:11
从https://github.com/openai/gym/wiki/FAQ复制
环境旨在具有不同程度的难度,以便对强化学习代理解决这些问题的能力进行基准测试。许多环境都超出了当前的技术水平,所以不要期望解决所有这些问题。(如果你有,请申请)。
如果您想要尝试一个行为不同的环境变体,您应该给它一个新的名称,这样您就不会错误地将运行在一个简单变体上的代理与运行在原始环境上的其他人的代理进行比较。例如,MountainCar环境很难,部分原因是有200个时间步的限制,超过200个时间步后,它会重置到开始处。成功的智能体必须在200个时间步内解决该问题。出于测试目的,您可以通过调整gym/gym/envs/__init__.py中找到的注册调用之一,使用不同的参数创建一个新的环境found -v0
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')因为只有您的代码知道这些环境名称,所以您无法将其上载到记分板。
https://stackoverflow.com/questions/42787924
复制相似问题