def setup(name, mode): if mode == "vgdl": # Read in level and game file information level = get_file(name, "level") game = get_file(name, "game") # Start game g = VGDLParser().parseGame(game) g.buildLevel(level) rle = RLEnvironment(game, level, observationType='global', visualize=True) # Set up RLE rle.actionDelay = 200 rle.recordingEnabled = True rle.reset() rle._game._drawAll() dims = rle.outdim environment = rle # TODO elif mode == "ale": return else: return # Return environment return environment, dims
def testRecordingToGif(human=False): from pybrain.rl.experiments.episodic import EpisodicExperiment from core import VGDLParser from examples.gridphysics.mazes import polarmaze_game, maze_level_2 from agents import PolicyDrivenAgent, InteractiveAgent from tools import makeGifVideo game_str, map_str = polarmaze_game, maze_level_2 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) env = GameEnvironment(g, visualize=human, recordingEnabled=True, actionDelay=200) task = GameTask(env) if human: agent = InteractiveAgent() else: agent = PolicyDrivenAgent.buildOptimal(env) exper = EpisodicExperiment(task, agent) res = exper.doEpisodes(1) print res actions = [a for _, a, _ in env._allEvents] print actions makeGifVideo(env, actions, initstate=env._initstate)
def testAugmented(): from core import VGDLParser from pybrain.rl.experiments.episodic import EpisodicExperiment from mdpmap import MDPconverter from agents import PolicyDrivenAgent zelda_level2 = """ wwwwwwwwwwwww wA wwk1ww w ww ww 1 w ww wwww+w wwwww1ww www wwwww 0 Gww wwwwwwwwwwwww """ from examples.gridphysics.mazes.rigidzelda import rigidzelda_game g = VGDLParser().parseGame(rigidzelda_game) g.buildLevel(zelda_level2) env = GameEnvironment(g, visualize=False, recordingEnabled=True, actionDelay=150) C = MDPconverter(g, env=env, verbose=True) Ts, R, _ = C.convert() print C.states print Ts[0] print R env.reset() agent = PolicyDrivenAgent.buildOptimal(env) env.visualize = True env.reset() task = GameTask(env) exper = EpisodicExperiment(task, agent) exper.doEpisodes(1)
def testRolloutVideo(actions=[0, 0, 2, 2, 0, 3] * 2): from examples.gridphysics.mazes import polarmaze_game, maze_level_1 from core import VGDLParser from tools import makeGifVideo game_str, map_str = polarmaze_game, maze_level_1 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) makeGifVideo(GameEnvironment(g, visualize=True), actions)
def testRollout(actions=[0, 0, 2, 2, 0, 3] * 20): from examples.gridphysics.mazes import polarmaze_game, maze_level_1 from core import VGDLParser game_str, map_str = polarmaze_game, maze_level_1 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) env = GameEnvironment(g, visualize=True, actionDelay=100) env.rollOut(actions)
def _createVGDLGame(gameSpec, levelSpec): import uuid from core import VGDLParser # parse, run and play. game = VGDLParser().parseGame(gameSpec) game.buildLevel(levelSpec) game.uiud = uuid.uuid4() return game
def test2(): from examples.gridphysics.mazes import polarmaze_game, maze_level_1 from core import VGDLParser game_str, map_str = polarmaze_game, maze_level_1 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) actions = [1, 0, 0, 3, 0, 2, 0, 2, 0, 0, 0] env = GameEnvironment(g, visualize=True, actionDelay=100) env.rollOut(actions) env.reset() senv = SubjectiveGame(g, actionDelay=1500) senv.rollOut(actions)
def testStochMaze(): from core import VGDLParser from examples.gridphysics.mazes.stochastic import stoch_game, stoch_level g = VGDLParser().parseGame(stoch_game) g.buildLevel(stoch_level) C = MDPconverter(g, verbose=True) Ts, R, fMap = C.convert() print C.states print R for T in Ts: print T print fMap
def testMaze(): from core import VGDLParser from examples.gridphysics.mazes import polarmaze_game, maze_level_1 game_str, map_str = polarmaze_game, maze_level_1 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) C = MDPconverter(g, verbose=True) Ts, R, fMap = C.convert() print C.states print R for T in Ts: print T print fMap
def testPolicyAgent(): from pybrain.rl.experiments.episodic import EpisodicExperiment from core import VGDLParser from examples.gridphysics.mazes import polarmaze_game, maze_level_2 from agents import PolicyDrivenAgent game_str, map_str = polarmaze_game, maze_level_2 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) env = GameEnvironment(g, visualize=False, actionDelay=100) task = GameTask(env) agent = PolicyDrivenAgent.buildOptimal(env) env.visualize = True env.reset() exper = EpisodicExperiment(task, agent) res = exper.doEpisodes(2) print res
def test3(): from examples.gridphysics.mazes import polarmaze_game from examples.gridphysics.mazes.simple import maze_level_1b from core import VGDLParser from pybrain.rl.experiments.episodic import EpisodicExperiment from interfaces import GameTask from agents import InteractiveAgent, UserTiredException game_str, map_str = polarmaze_game, maze_level_1b g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) senv = SubjectiveGame(g, actionDelay=100, recordingEnabled=True) #senv = GameEnvironment(g, actionDelay=100, recordingEnabled=True, visualize=True) task = GameTask(senv) iagent = InteractiveAgent() exper = EpisodicExperiment(task, iagent) try: exper.doEpisodes(1) except UserTiredException: pass print senv._allEvents
def testInteractions(): from random import randint from pybrain.rl.experiments.episodic import EpisodicExperiment from core import VGDLParser from examples.gridphysics.mazes import polarmaze_game, maze_level_1 from pybrain.rl.agents.agent import Agent class DummyAgent(Agent): total = 4 def getAction(self): res = randint(0, self.total - 1) return res game_str, map_str = polarmaze_game, maze_level_1 g = VGDLParser().parseGame(game_str) g.buildLevel(map_str) env = GameEnvironment(g, visualize=True, actionDelay=100) task = GameTask(env) agent = DummyAgent() exper = EpisodicExperiment(task, agent) res = exper.doEpisodes(2) print res