Example #1
0
    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)
Example #2
0
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