Skip to content

Commit

Permalink
Remove timestep enforcement from monitor, adjust TimeLimit semantics …
Browse files Browse the repository at this point in the history
…to match existing monitor, fix test for env reuse
  • Loading branch information
jietang authored and nottombrown committed Dec 28, 2016
1 parent a4637dc commit 0d02a34
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 11 deletions.
5 changes: 0 additions & 5 deletions gym/monitoring/monitor_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,11 +235,6 @@ def _before_step(self, action):
def _after_step(self, observation, reward, done, info):
if not self.enabled: return done

# Add 1 since about to take another step
if self.env.spec and self.stats_recorder.steps+1 >= self.env.spec.timestep_limit:
logger.debug('Ending episode %i because it reached the timestep limit of %i.', self.episode_id, self.env.spec.timestep_limit)
done = True

if done and self.env_semantics_autoreset:
# For envs with BlockingReset wrapping VNCEnv, this observation will be the first one of the new episode
self._reset_video_recorder()
Expand Down
12 changes: 8 additions & 4 deletions gym/monitoring/tests/test_monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,9 @@ def _step(self, action):
gym.envs.register(
id='Autoreset-v0',
entry_point='gym.monitoring.tests.test_monitor:AutoresetEnv',
timestep_limit=2,
tags={
'wrapper_config.TimeLimit.max_episode_steps': 2,
},
)
def test_env_reuse():
with helpers.tempdir() as temp:
Expand All @@ -108,11 +110,13 @@ def test_env_reuse():

env.reset()

env.step(None)
_, _, done, _ = env.step(None)
assert not done
_, _, done, _ = env.step(None)
assert done

env.step(None)
_, _, done, _ = env.step(None)
assert not done
_, _, done, _ = env.step(None)
assert done

Expand Down Expand Up @@ -182,7 +186,7 @@ def test_only_complete_episodes_written():
id='test.StepsLimitCartpole-v0',
entry_point='gym.envs.classic_control:CartPoleEnv',
tags={
'wrapper_config.TimeLimit.max_episode_steps': 1
'wrapper_config.TimeLimit.max_episode_steps': 2
}
)

Expand Down
4 changes: 2 additions & 2 deletions gym/wrappers/time_limit.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ def _elapsed_seconds(self):

def _past_limit(self):
"""Return true if we are past our limit"""
if self._max_episode_steps is not None and self._max_episode_steps < self._elapsed_steps:
if self._max_episode_steps is not None and self._max_episode_steps <= self._elapsed_steps:
logger.debug("Env has passed the step limit defined by TimeLimit.")
return True

if self._max_episode_seconds is not None and self._max_episode_seconds < self._elapsed_seconds:
if self._max_episode_seconds is not None and self._max_episode_seconds <= self._elapsed_seconds:
logger.debug("Env has passed the seconds limit defined by TimeLimit.")
return True

Expand Down

0 comments on commit 0d02a34

Please sign in to comment.