def run_level(self, seed=None): if seed is None: seed = np.random.randint(2**31 - 1) options1 = self.options + (" -ls %d" % seed) print "options: ", options1 self.reset(options1) obsDetails = self.getObservationDetails() self.agent.setObservationDetails(obsDetails[0], obsDetails[1], obsDetails[2], obsDetails[3]) levelIterations = 0 while (not self.libamico.isLevelFinished()): levelIterations += 1 self.libamico.tick() obs = self.getEntireObservation(1, 0) self.agent.integrateObservation(obs[0], obs[1], obs[2], obs[3], obs[4]) action = self.agent.getAction() #print "action: ", action self.performAction(action) print "Py: LEVEL ITERATIONS: ", levelIterations evaluationInfo = self.getEvaluationInfo() return EvaluationInfo(evaluationInfo)
def amiCoSimulator(): """simple AmiCo env interaction""" print "Py: AmiCo Simulation Started:" print "library found: " if (sys.platform == 'linux2'): ########################################## # find_library on Linux could only be used if your libAmiCoPyJava.so is # on system search path or path to the library is added in to LD_LIBRARY_PATH # # name = 'AmiCoPyJava' # loadName = find_library(name) ########################################## loadName = './libAmiCoPyJava.so' libamico = ctypes.CDLL(loadName) print libamico else: #else if OS is a Mac OS X (libAmiCo.dylib is searched for) or Windows (AmiCo.dll) name = 'AmiCoPyJava' loadName = find_library(name) print loadName libamico = ctypes.CDLL(loadName) print libamico javaClass = "ch/idsia/benchmark/mario/environments/MarioEnvironment" libamico.amicoInitialize(1, "-Djava.class.path=.:../lib/jdom.jar") libamico.createMarioEnvironment(javaClass) reset = cfunc('reset', libamico, None, ('list', ListPOINTER(c_int), 1)) getEntireObservation = cfunc('getEntireObservation', libamico, py_object, ('list', c_int, 1), ('zEnemies', c_int, 1)) performAction = cfunc('performAction', libamico, None, ('list', ListPOINTER(c_int), 1)) getEvaluationInfo = cfunc('getEvaluationInfo', libamico, py_object) #getReceptiveFieldInfo = cfunc('getReceptiveFieldInfo', libamico, py_object) agent = ForwardAgent() options = sys.argv[ 1] #"-rfw 19 -rfh 19 -ltb on -le gw -ld 5 -lf on -ls 33 -lg off -lc off -gv on -mm 0" print "options: ", options k = 1 seed = 0 print "Py: ======Evaluation STARTED======" totalIterations = 0 for i in range(k, k + 10000): options1 = options + " -ls " + str(seed) print "options: ", options1 reset(options1) #agent.setReceptiveFieldInfo(getReceptiveFieldInfo()) while (not libamico.isLevelFinished()): totalIterations += 1 libamico.tick() obs = getEntireObservation(1, 0) agent.integrateObservation(obs[0], obs[1], obs[2], obs[3], obs[4]) action = agent.getAction() #print "action: ", action performAction(action) print "Py: TOTAL ITERATIONS: ", totalIterations evaluationInfo = getEvaluationInfo() print "evaluationInfo = \n", EvaluationInfo(evaluationInfo) seed += 1
def amiCoSimulator(): """simple AmiCo env interaction""" print "Py: AmiCo Simulation Started:" print "library found: " print "Platform: ", sys.platform if (sys.platform == 'linux2'): ########################################## # find_library on Linux could only be used if your libAmiCoPyJava.so is # on system search path or path to the library is added in to LD_LIBRARY_PATH # # name = 'AmiCoPyJava' # loadName = find_library(name) ########################################## loadName = './libAmiCoPyJava.so' libamico = ctypes.CDLL(loadName) print libamico else: # else if OS is a Mac OS X (libAmiCo.dylib is searched for) or Windows (AmiCo.dll) name = 'AmiCoPyJava' loadName = find_library(name) print loadName libamico = ctypes.CDLL(loadName) print libamico javaClass = "ch/idsia/benchmark/mario/environments/MarioEnvironment" libamico.amicoInitialize(1, "-Djava.class.path=." + os.pathsep + ":jdom.jar") libamico.createMarioEnvironment(javaClass) reset = cfunc('reset', libamico, None, ('list', ListPOINTER(c_int), 1)) getEntireObservation = cfunc('getEntireObservation', libamico, py_object, ('list', c_int, 1), ('zEnemies', c_int, 1)) performAction = cfunc('performAction', libamico, None, ('list', ListPOINTER(c_int), 1)) getEvaluationInfo = cfunc('getEvaluationInfo', libamico, py_object) getObservationDetails = cfunc('getObservationDetails', libamico, py_object) agent = ForwardJumpingAgent() options = "" if len(sys.argv) > 1: options = sys.argv[1] if options.startswith('"') and options.endswith('"'): options = options[1:-1] k = 1 seed = 0 print "Py: ======Evaluation STARTED======" totalIterations = 0 for i in range(k, k + 10000): options1 = options + " -ls " + str(seed) print "options: ", options1 reset(options1) obsDetails = getObservationDetails() agent.setObservationDetails(obsDetails[0], obsDetails[1], obsDetails[2], obsDetails[3]) while (not libamico.isLevelFinished()): totalIterations += 1 libamico.tick(); obs = getEntireObservation(1, 0) agent.integrateObservation(obs[0], obs[1], obs[2], obs[3], obs[4]); action = agent.getAction() # print "action: ", action performAction(action); print "Py: TOTAL ITERATIONS: ", totalIterations evaluationInfo = getEvaluationInfo() print "evaluationInfo = \n", EvaluationInfo(evaluationInfo); seed += 1