Example #1
0
def _Test_Draw():
    T = 1000
    quad = Quadruped()
    sim = PYROSIM(playPaused=False, playBlind=True, evalTime=T)
    quad.Send_To_Simulator(sim)
    sim.Start()
    sim.Wait_To_Finish()
    data = sim.Get_Results()
    print data[4, 1, T - 1]

    sim2 = PYROSIM(playPaused=False, playBlind=False, evalTime=T)
    quad.Send_To_Simulator(sim2)
    sim2.Start()
    sim2.Wait_To_Finish()
    data = sim2.Get_Results()
    print data[4, 1, T - 1]

    mutant = quad.Copy_And_Mutate(variable=.99, sigma=5)
    sim3 = PYROSIM(playPaused=False, playBlind=False, evalTime=T)
    IDs = quad.Send_To_Simulator(sim3)
    print IDs
    IDs = mutant.Send_To_Simulator(sim3,
                                   objID=IDs[0],
                                   jointID=IDs[1],
                                   sensorID=IDs[2],
                                   neuronID=IDs[3])
    sim3.Start()
    sim3.Wait_To_Finish()
    data = sim3.Get_Results()
    print data[4, 1, T - 1], data[9, 1, T - 1]
Example #2
0
def _Test_Tree():

    T = 1000
    sim = PYROSIM(playPaused=False,
                  playBlind=False,
                  evalTime=T,
                  xyz=[0, 0, 5],
                  hpr=[90, -90, 0])
    #sim = PYROSIM(playPaused=False, playBlind=False, evalTime=T, xyz=[-5,0,2], hpr=[0,-20,0])
    t = Treebot()
    t.Send_To_Simulator(sim)
    sim.Start()
    sim.Wait_To_Finish()
    data = sim.Get_Results()
Example #3
0
def Play_Indv(robot, eval_time, environment=False):
    sensor_data = {}
    if environment:

        for i, env in enumerate(environment[:8]):
            sim = PYROSIM(playPaused=True,
                          playBlind=False,
                          evalTime=eval_time,
                          xyz=(0, -2, 3),
                          hpr=(90, -30, 0))
            offset = robot.Send_To_Simulator(sim, eval_time=eval_time)

            env.Send_To_Simulator(sim, ID_offset=offset[0])
            sim.Start()
            sim.Wait_To_Finish()
            sensor_data[i] = sim.Get_Results()
    print sensor_data
    return sensor_data
Example #4
0
    IDs = quad.Send_To_Simulator(sim3)
    print IDs
    IDs = mutant.Send_To_Simulator(sim3,
                                   objID=IDs[0],
                                   jointID=IDs[1],
                                   sensorID=IDs[2],
                                   neuronID=IDs[3])
    sim3.Start()
    sim3.Wait_To_Finish()
    data = sim3.Get_Results()
    print data[4, 1, T - 1], data[9, 1, T - 1]


if __name__ == "__main__":
    #_Test_Draw()
    import numpy as np
    import environments
    import fitness_functions as ff
    t = Treebot.MC()
    #t = Treebot.Non_Modular()
    #t = Treebot()

    sim = PYROSIM(playPaused=False, playBlind=False, evalTime=100)
    offset = t.Send_To_Simulator(sim, eval_time=100)
    env = environments.Cluster_Env.Bi_Sym(2, 2, 4, 2)
    env.Send_To_Simulator(sim, offset[0])
    sim.Start()
    sim.Wait_To_Finish()
    results = sim.Get_Results()
    print ff.Treebot(results, env)
Example #5
0
def run_experiment(
    generator_fcn,
    fitness_fcn,
    name,
    trial_num,
    pop_size,
    gens,
    eval_time,
    env_order,
    dimensions,
    env_space=False,
    fitness_threshold=False,
    development_layers=1,
):
    time_stamp = dt.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    data = {}

    envs_to_train_in = [env_space[i] for i in env_order]

    evolver = evolvers.AFPO(max_population_size=pop_size,
                            generator_fcn=generator_fcn,
                            fitness_fcn=fitness_fcn,
                            environments=envs_to_train_in,
                            development_layers=development_layers,
                            max_generations=gens,
                            eval_time=eval_time,
                            fitness_threshold=fitness_threshold)

    data['pop_size'] = evolver.max_population_size
    #data['fitness_function'] = fitness_function
    data['development_layers'] = evolver.development_layers
    data['eval_time'] = evolver.eval_time

    evolved_data = evolver.Evolve()
    gens = evolver.generation - 1
    data['gens'] = gens
    best_robot = evolved_data[gens]['pareto_front'][0]['genome']
    data['data'] = evolved_data
    data['best_robot'] = best_robot
    data['motor_speed'] = robots.MOTOR_SPEED
    data['environments'] = envs_to_train_in
    data['env_space'] = env_space
    data['name'] = name
    data['threshold'] = fitness_threshold
    data['dimensions'] = dimensions
    data['num_trained_in'] = len(envs_to_train_in)

    env_fitness = [0] * 16
    for index, env in enumerate(env_space):
        sim = PYROSIM(playBlind=True, playPaused=False, evalTime=eval_time)
        ids = best_robot.Send_To_Simulator(sim, eval_time=eval_time)
        env.Send_To_Simulator(sim, ID_offset=ids[0])

        sim.Start()
        sim.Wait_To_Finish()
        sensor_data = sim.Get_Results()

        env_fitness[index] = fitness_fcn(sensor_data, env)

    data_folder = './Data'
    file_name = name + '_' + str(trial_num) + '_' + str(
        len(env_order)) + '_' + str(dimensions) + '_' + str(time_stamp)
    print file_name
    pickle_file_name = file_name + '.pickle'
    json_file_name = file_name + '.json'
    if not os.path.isdir(data_folder):
        os.makedirs(data_folder)

    pickle_path_to_file = data_folder + '/' + pickle_file_name
    json_path_to_file = data_folder + '/' + json_file_name

    with open(pickle_path_to_file, 'w') as f:
        pickle.dump(data, f)

    #Create json daat
    json_data = {}

    print 'env fit', env_fitness
    print 'env order', env_order
    #store json data
    json_data['env_fitness'] = env_fitness
    json_data['type'] = name
    json_data['threshold'] = fitness_threshold
    json_data['dimensions'] = dimensions
    json_data['num_trained_in'] = len(envs_to_train_in)
    json_data['env_order'] = env_order

    #Write json
    with open(json_path_to_file, 'w') as f:
        json.dump(json_data, f)