def amiCoSimulator(): """simple AmiCo env interaction""" print "Py: AmiCo Simulation Started:" print "library found: " #add syspath new_path = os.path.abspath("./").lower() java_path = os.path.abspath("C:\\Program Files (x86)\\Java\\jre6\\bin").lower() java_path2 = os.path.abspath("C:\\Program Files (x86)\\Java\\jre6\\bin\\client").lower() sys.path.append(new_path) sys.path.append(java_path) sys.path.append(java_path2) 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.DLL' loadName = find_library(name) print loadName libamico = ctypes.CDLL(name) print libamico javaClass = "ch/idsia/benchmark/mario/environments/MarioEnvironment" libamico.amicoInitialize(1, "-Djava.class.path=." + os.pathsep +":../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) getObservationDetails = cfunc('getObservationDetails', libamico, py_object) agent =AStar() options = "" if len(sys.argv) > 1: options = sys.argv[1] print "options: ", options k = 1 seed =0 print "Py: ======Evaluation STARTED======" totalIterations = 0 for i in range(k, k+100): options1 = options + "-ls " + str(seed)+" -fps 30 -ld 0" 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() performAction(action); evaluationInfo = getEvaluationInfo() print evaluationInfo seed += 1