2016-04-27 08:00:58 -07:00
import logging
import os
import gym
# The world's simplest agent!
class RandomAgent ( object ) :
def __init__ ( self , action_space ) :
self . action_space = action_space
def act ( self , observation , reward , done ) :
return self . action_space . sample ( )
if __name__ == ' __main__ ' :
# You can optionally set up the logger. Also fine to set the level
# to logging.DEBUG or logging.WARN if you want to change the
# amount of outut.
logger = logging . getLogger ( )
logger . setLevel ( logging . INFO )
env = gym . make ( ' CartPole-v0 ' )
agent = RandomAgent ( env . action_space )
# You provide the directory to write to (can be an existing
# directory, but can't contain previous monitor results. You can
# also dump to a tempdir if you'd like: tempfile.mkdtemp().
outdir = ' /tmp/random-agent-results '
env . monitor . start ( outdir , force = True )
2016-04-29 10:47:11 +02:00
episode_count = 100
max_steps = 200
2016-04-27 08:00:58 -07:00
reward = 0
done = False
2016-05-01 23:17:38 -04:00
for i in range ( episode_count ) :
2016-04-27 08:00:58 -07:00
ob = env . reset ( )
2016-05-01 23:17:38 -04:00
for j in range ( max_steps ) :
2016-04-27 08:00:58 -07:00
action = agent . act ( ob , reward , done )
ob , reward , done , _ = env . step ( action )
if done :
break
# Dump result info to disk
env . monitor . close ( )
# Upload to the scoreboard. We could also do this from another
# process if we wanted.
logger . info ( " Successfully ran RandomAgent. Now trying to upload results to the scoreboard. If it breaks, you can always just try re-uploading the same results. " )
gym . upload ( outdir , algorithm_id = ' random ' )