예제 #1
0
def loop():
    '''This function is called over and over again.'''

    global i
    # do something arbitray. To be adapted.

    # create a list robot queries, one for each of the robots
    RQS = [MemeSimCommand.RQ(TEAM_NUMBER, (TEAM_NUMBER-1)*3+r) for r in range(1, 2)]

    # add a request to check the account balance
    RQS.append(MemeSimCommand.CA(TEAM_NUMBER))
    RQS.append(MemeSimCommand.RS(TEAM_NUMBER,10,150,150,(i/360)*2*pi))
    i=i+5
    # send the requests to the simulator

    for req in RQS:
        MEMESIM_CLIENT.send_command(req)



    # make a random mutation to some meme at a random position
    MY_MEMES['Meme1'][randint(0, 99)] = MemeGenome.Nucleotides[randint(0, 3)]

    # show the meme in the GUI
    MEMESIM_GUI.show_meme(MY_MEMES['Meme1'])
예제 #2
0
def setup():
    ''' The setup function is called once at startup. You can put initialization code here. '''

    # create a collection of random memes
    for i in range(1, 11):
        mgen = MemeGenome.random_meme_genome()
        # do some arbitrary things to it
        mgen[0] = 'A'
        mgen[99] = mgen[0]
        # store the meme in the dictionary MY_MEMES under a name as a string
        MY_MEMES['Meme'+str(i)] = mgen

    # try to connect to the simulator
    if not MEMESIM_CLIENT.connect():
        print("Could not connect to the simulator.")
        exit()

    # create a list robot queries, one for each of the robots
    RQS = [MemeSimCommand.RQ(TEAM_NUMBER, (TEAM_NUMBER-1)*3+r) for r in range(1, 2)]

    # add a request to check the account balance
    RQS.append(MemeSimCommand.CA(TEAM_NUMBER))
    RQS.append(MemeSimCommand.RS(TEAM_NUMBER,10,150,150,2*pi))
    RQS.append(MemeSimCommand.RS(TEAM_NUMBER,11,150,150,2*pi))
    RQS.append(MemeSimCommand.RS(TEAM_NUMBER,12,150,150,2*pi))

    # send the requests to the simulator
    for req in RQS:
        MEMESIM_CLIENT.send_command(req)

    RESPONSES = MEMESIM_CLIENT.new_responses()
예제 #3
0
def loop(mode):
    '''This function is called over and over again.'''
    if mode == 'rq':
        # create a list robot queries, one for each of the robots
        RQS = [MemeSimCommand.RQ(TEAM_NUMBER, Robot)]

    elif mode == 'mq':
        # add a request to check the account balance
        #res() so as to auto reset every market research
        number = input("How many individuals?")
        global nrofinterviews
        nrofinterviews = number
        RQS = [MemeSimCommand.MQ(TEAM_NUMBER, Robot, number)]
    elif mode == 'ip':
        #print(People)
        pseudoID = int(input("Person to interview:"))
        RQS = [MemeSimCommand.IP(TEAM_NUMBER, Robot, People[pseudoID][2])]
        Database.append(People[pseudoID])
        print(Database)
    elif mode == 'pi':
        for i in range(0, len(Database)):
            print(i, "numero:", Database[i][1])
            RQS = [MemeSimCommand.PI(TEAM_NUMBER, Robot, Database[i][2])]
            for req in RQS:
                MEMESIM_CLIENT.send_command(req)
            sleep(1)
    elif mode == 'tm':
        #genome=input("insert meme genome=")
        pseudoID = int(input("ID of the individual:"))
        meme_gen = ProduceGenome()
        RQS = [
            MemeSimCommand.TM(TEAM_NUMBER, Robot, meme_gen,
                              Database[pseudoID][2])
        ]
    elif mode == 'pc':
        memeName = input("Insert meme name:")
        meme_gen = ProduceGenome()
        RQS = [MemeSimCommand.PC(TEAM_NUMBER, Robot, memeName, meme_gen)]
    elif mode == 'lc':
        memeName = input("Insert meme name:")
        budget = int(input("Budeget:"))
        RQS = [MemeSimCommand.LC(TEAM_NUMBER, Robot, memeName, budget)]
    elif mode == 'db':
        RQS = [MemeSimCommand.DB(TEAM_NUMBER, 'money')]

    elif mode == 'set':
        xpos = int(input("Position x-axis:"))
        ypos = int(input("Position y-axis:"))
        angle = 20
        RQS = [MemeSimCommand.RS(TEAM_NUMBER, Robot, xpos, ypos, 20)]

    RQS.append(MemeSimCommand.CA(TEAM_NUMBER))
    #RQS.append(MemeSimCommand.MQ(4,10,20))
    #i=i+1
    # send the requests to the simulator
    if mode != 'pi':
        for req in RQS:
            MEMESIM_CLIENT.send_command(req)
예제 #4
0
def process_response(resp):
    if resp.cmdtype() == 'rq':
        if not resp.iserror():
            robot_id = int(float(resp.cmdargs()[1]))
            xpos = int(float(resp.cmdargs()[2]))
            ypos = int(float(resp.cmdargs()[3]))
            angle = int(float(resp.cmdargs()[4]))
            location_robot = [xpos, ypos, angle]
            print(location_robot)
    if resp.cmdtype() == 'pi':
        if not resp.iserror():
            global CityIDGen
            robot_id = int(float(resp.cmdargs()[1]))
            individualID_genome = resp.cmdargs()[2]
            individualID = individualID_genome[0]
            genome = individualID_genome[1]
            CityIDGen += [[city, individualID, genome]]
    if resp.cmdtype() == 'mq':
        if not resp.iserror():
            global CityID
            individualID = []
            robot_id = int(float(resp.cmdargs()[1]))
            group_size = int(float(resp.cmdargs()[2]))
            for i in range(group_size):
                if isinstance(resp.cmdargs()[i + 3], list):
                    individualID += [resp.cmdargs()[i + 3][0]]
                else:
                    individualID += [resp.cmdargs()[i + 3]]
                CityID += [[city, individualID[i]]]
                RQ1 = MemeSimCommand.IP(8, robot_id, individualID[i])
                MEMESIM_CLIENT.send_command(RQ1)
            print(CityID)
        #            print(CityIDGen)
    print("Received response: " + str(resp))
예제 #5
0
def genmemes(robotID, memename):
    global CityIDGen
    global CityID
    global city
    global MY_MEMES
    for i in range(len(CityID)):
        RQ1 = MemeSimCommand.PI(8, robotID, CityID[i][1])
        MEMESIM_CLIENT.send_command(RQ1)
    sleep(sleep_length)  # wait for responses
    RESPONSES = MEMESIM_CLIENT.new_responses()
    # process new responses
    for r in RESPONSES:
        process_response(r)
    genomes_to_send = []

    for i in range(len(CityIDGen)):
        if CityIDGen[i][0] == city:
            genomes_to_send += [CityIDGen[i][2]]
    #    print(genomes_to_send)
    averageGenome = getAverage(genomes_to_send)
    #    print(averageGenome)
    for i in range(4):
        MY_MEMES += [[
            memename + str(i + 1),
            genome_protocol(i + 1, averageGenome)
        ]]
    print(MY_MEMES)
예제 #6
0
def GetPosition(robotID):
    RQ = MemeSimCommand.RQ(8, robotID+14)
    MEMESIM_CLIENT.send_command(RQ)

    time.sleep(1.0)

    RESPONSES1 = MEMESIM_CLIENT.new_responses()

    for resp1 in RESPONSES1:
        if resp1.cmdtype() == 'rq':
            if not resp1.iserror():
                xpos = int(float(resp1.cmdargs()[2]))
                ypos = int(float(resp1.cmdargs()[3]))
                angle = round(math.degrees(float(resp1.cmdargs()[4])))

                if abs(angle) > 180:
                    angle = angle - sign(angle) * 360

                return [xpos, ypos], angle
    return
def update_loc(RQS, robot_id, x, y, angle):
    global i
    RQS.append(
        MemeSimCommand.RS(TEAM_NUMBER, robot_id, x, y,
                          (angle / 360) * 2 * math.pi))
def update_position(robot_id):
    RQ1 = MemeSimCommand.RQ(4, robot_id)  #make a request
    MEMESIM_CLIENT.send_command(RQ1)  #send request
    sleep(0.2)  #wait a bit
    update_responses()  #find answers to responses: to x, y and angle
def loop(mode):
    '''This function is called over and over again.'''
    if mode=='rq':
        # create a list robot queries, one for each of the robots
        RQS = [MemeSimCommand.RQ(TEAM_NUMBER,Robot) ]
    elif mode=='mq':
        # add a request to check the account balance
        number=input("How many individuals?")
        global nrofinterviews
        nrofinterviews = number
        RQS=[MemeSimCommand.MQ(TEAM_NUMBER,Robot,number)]
    elif mode=='ip':
        ID=input("ID of the individual to interview")
        RQS= [MemeSimCommand.IP(TEAM_NUMBER,Robot,ID)]
    elif mode=='pi':
        ID=input("ID of the individual to interview")
        RQS= [MemeSimCommand.PI(TEAM_NUMBER,Robot,ID)]
    elif mode=='tm':
        #genome=input("insert meme genome=")
        ID=input("ID of the individual")
        meme_gen='CCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCTTTAAACCCTTTAAACC'
        RQS= [MemeSimCommand.TM(TEAM_NUMBER,Robot,meme_gen,ID)]
    elif mode=='pc':
        memeN=input("insert meme name=")
        meme_gen='CCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCCTTTAAACCTTTAAACCCTTTAAACC'
        RQS= [MemeSimCommand.PC(TEAM_NUMBER,Robot,memeN,meme_gen)]
    elif mode=='lc':
        memeN=input("insert meme name=")
        RQS=[MemeSimCommand.LC(TEAM_NUMBER,Robot,memeN,100)]
    elif mode=='db':
        RQS=[MemeSimCommand.DB(TEAM_NUMBER,'reset')]
    elif mode=='eur':
        RQS=[MemeSimCommand.DB(TEAM_NUMBER,'reset')]
    elif mode=='set':
        xpos=int(input("xpos="))
        ypos=int(input("ypos="))
        angle=20
        RQS=[MemeSimCommand.RS(TEAM_NUMBER,Robot,xpos,ypos,20)]

    RQS.append(MemeSimCommand.CA(TEAM_NUMBER))
        #RQS.append(MemeSimCommand.MQ(4,10,20))
        #i=i+1
        # send the requests to the simulator

    for req in RQS:
        MEMESIM_CLIENT.send_command(req)


    # make a random mutation to some meme at a random position
    MY_MEMES['Meme1'][randint(0, 99)] = MemeGenome.Nucleotides[randint(0, 3)]

    # show the meme in the GUI
    MEMESIM_GUI.show_meme(MY_MEMES['Meme1'])
예제 #10
0
def loop():
    repeatCmd = False
    global tr2
    global tr1
    global CityIDGen
    global CityID
    global city
    global MY_MEMES
    error = 0

    print(
        "What do you want to do? (rq/mqip/genmeme/genmemes/tm/pc/lc/ca/db/rs/quit/print_ind/litt/save/read/dest)"
    )
    command = input()
    if "*" in command:
        command = command.replace("*", "")
        repeatCmd = True

    if command == "rq":
        print("location of which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        RQ1 = MemeSimCommand.RQ(8, robotID)

    elif command == "mq":  # need to store city number
        print("Query with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("For what group size?")
        group_size = int(input())
        RQ1 = MemeSimCommand.MQ(8, robotID, group_size)

    elif command == "ip":
        print("Interview person with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("Which person do you want to interview?")
        individualID = int(float(input()))
        RQ1 = MemeSimCommand.IP(8, robotID, individualID)

    elif command == "mqip":  # need to store city number
        print("Query and interview with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("For what group size?")
        group_size = int(input())
        print("In which city are you?")
        city = int(input())
        RQ1 = MemeSimCommand.MQ(8, robotID, group_size)

    elif command == "pi":  # need to store city number
        print("Process interview with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("Which person was interviewed?")
        individualID = input()
        RQ1 = MemeSimCommand.PI(8, robotID, individualID)

    elif command == 'genmeme':
        print("Process interview with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("For which city do you want to generate a meme?")
        city = int(input())
        print("What do you want to call the meme?")
        memename = input()
        print("What protocol do you want to use?")
        protocol = int(input())
        genmeme(robotID, memename, protocol)
        error = 1

    elif command == 'genmemes':
        print("Process interview with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("For which city do you want to generate a meme?")
        city = int(input())
        print("What do you want to call the meme?")
        memename = input()
        genmemes(robotID, memename)
        error = 1
    #
    #    elif command == 'gm':
    #        print("For which city do you want to generate a meme?")
    #        citynr = int(input())
    #        print("What do you want to call the meme?")
    #        memename = input()
    #        print("What protocol do you want to use?")
    #        protocol = int(input())
    #        genomes_to_send = []
    #        for i in range(len(CityIDGen)):
    #            if CityIDGen[i][0] == citynr:
    #                genomes_to_send += [CityIDGen[i][2]]
    #        print(genomes_to_send)
    #        averageGenome = getAverage(genomes_to_send)
    #        print(averageGenome)
    #        MY_MEMES += genome_protocol(protocol, averageGenome)
    #        error = 1 bla

    elif command == "tm":
        found = False
        print("Test meme with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("Which meme?")
        meme_name = input()
        print("Which person do you want to test on?")
        individualID = input()
        for i in range(len(MY_MEMES)):
            if MY_MEMES[i][0] == meme_name:
                meme_genome = MY_MEMES[i][1]
                found = True
        if found == True:
            RQ1 = MemeSimCommand.TM(8, robotID, meme_genome, individualID)
        else:
            print("That meme does not excist")
            error = 1
        found = False

    elif command == "pc":
        print("Process campaign with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("Which meme?")
        meme_name = input()
        for i in range(len(MY_MEMES)):
            if MY_MEMES[i][0] == meme_name:
                meme_genome = MY_MEMES[i][1]
                found = true
        if found == true:
            RQ1 = MemeSimCommand.PC(8, robotID, meme_name, meme_genome)
        else:
            print("That meme does not excist")
            error = 1
        found = false

    elif command == "lc":
        print("Launch campaign with which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("What meme do you want to launch?"
              )  # optie voor later: print lijst met alle memes
        meme_name = input()
        print("What is the budget?")
        budget = input()
        RQ1 = MemeSimCommand.LC(8, robotID, meme_name, budget)

    elif command == "ca":
        RQ1 = MemeSimCommand.CA(8)

    elif command == "db":
        print("What do you want to do? money/reset")
        debug_command = input()
        RQ1 = MemeSimCommand.DB(8, debug_command)

    elif command == "rs":
        print("Set location of which robot? 1(henk)/2(ingrid)")
        robotID = int(input()) + 14
        print("At which x_position? (in mm)")
        x_pos = input()
        print("At which y_position? (in mm)")
        y_pos = input()
        print("At what angle?")
        angle = input()
        RQ1 = MemeSimCommand.RS(8, robotID, x_pos, y_pos, angle)

    elif command == "quit":
        exit()

    elif command == "print_ind":
        print(CityIDGen)
        error = 1
    elif command == "litt":
        print("Geef input")
        testcmd = input()
        exec(testcmd)
        error = 1
    elif command == "save":
        print("Saving meme genome")
        write_genome(CityIDGen)
        error = 1
    elif command == "dest":
        print("Input destination 1")
        testTr = input()
        print("Input destination 2")
        testTr = input()
        error = 1
    elif command == "read":
        print("Reading meme genome")
        read_genome(CityIDGen)
        error = 1
    else:
        print("error")
        error = 1

        # do something arbitray with the memes
    if error == 0:
        MEMESIM_CLIENT.send_command(RQ1)

    if repeatCmd:
        sleep(sleep_length)
        RESPONSES = MEMESIM_CLIENT.new_responses()
        # process new responses
        for r in RESPONSES:
            process_response(r)
        loop()