Почему эпизод снимается после 200 временных шагов (тренажерный зал MountainCar)?

При использовании среды MountainCar-v0 из OpenAI-gym в Python значение done будет истинным после 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())

person needRhelp    schedule 14.03.2017    source источник


Ответы (2)


Текущая новейшая версия тренажерного зала принудительно останавливает среду за 200 шагов, даже если вы не используете env.monitor. Чтобы этого избежать, используйте env = gym.make("MountainCar-v0").env

person Scitator    schedule 15.03.2017
comment
Как вы узнали, что можно добавить .env в конец, чтобы добиться другого поведения? Я нигде не могу найти никакой информации об этом, но мне любопытно, что это такое. - person Danny Tuppeny; 28.07.2019
comment
О, я нашел это ... ограничение по времени добавлено как оболочка, и .env обращается к среде, которая была обернута: github.com/openai/gym/blob/ - person Danny Tuppeny; 28.07.2019

Скопировано с 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')

Поскольку эти имена сред известны только вашему коду, вы не сможете загрузить их на табло.

person catherio    schedule 15.03.2017