Ejemplo n.º 1
0
def training_function(training_data, ea_choice):
    component_generator = \
        ComponentGenerator(input_x_dimension=training_data.x.shape[1])
    component_generator.add_operator("+")
    component_generator.add_operator("-")
    component_generator.add_operator("*")

    agraph_generator = AGraphGenerator(agraph_size=32,
                                       component_generator=component_generator)

    crossover = AGraphCrossover(component_generator)
    mutation = AGraphMutation(component_generator)

    fitness = ExplicitRegression(training_data=training_data)
    local_opt_fitness = ContinuousLocalOptimization(fitness, algorithm='lm')
    evaluator = Evaluation(local_opt_fitness)

    POPULATION_SIZE = 64
    MUTATION_PROBABILITY = 0.1
    CROSSOVER_PROBABILITY = 0.7

    if ea_choice == "age_fitness":
        ea = AgeFitnessEA(evaluator, agraph_generator, crossover, mutation,
                          MUTATION_PROBABILITY, CROSSOVER_PROBABILITY,
                          POPULATION_SIZE)
    else:
        ea = DeterministicCrowdingEA(evaluator, crossover, mutation,
                                     MUTATION_PROBABILITY,
                                     CROSSOVER_PROBABILITY)

    island = Island(ea, agraph_generator, POPULATION_SIZE)
    opt_result = island.evolve_until_convergence(
        max_generations=MAX_GENERATIONS, fitness_threshold=1e-6)

    return island.get_best_individual(), opt_result
Ejemplo n.º 2
0
def run_one_max_problem():
    generator = create_chromosome_generator()
    ev_alg = create_evolutionary_algorithm()

    island = Island(ev_alg, generator, population_size=10)
    display_best_individual(island)

    island.evolve(num_generations=50)

    display_best_individual(island)
def init_island():
    np.random.seed(10)
    x = init_x_vals(START, STOP, NUM_POINTS)
    y = equation_eval(x)
    training_data = ExplicitTrainingData(x, y)

    component_generator = ComponentGenerator(
        x.shape[1],
        automatic_constant_optimization=False,
        numerical_constant_range=10)
    component_generator.add_operator("+")
    component_generator.add_operator("-")
    component_generator.add_operator("*")

    crossover = AGraphCrossover(component_generator)
    mutation = AGraphMutation(component_generator)

    agraph_generator = AGraphGenerator(STACK_SIZE, component_generator)

    fitness = ExplicitRegression(training_data=training_data)
    evaluator = Evaluation(fitness)

    ea = AgeFitnessEA(evaluator, agraph_generator, crossover, mutation,
                      MUTATION_PROBABILITY, CROSSOVER_PROBABILITY, POP_SIZE)

    island = Island(ea, agraph_generator, POP_SIZE)
    return island
Ejemplo n.º 4
0
def execute_generational_steps():
    x = init_x_vals(-10, 10, 100)
    y = equation_eval(x)
    training_data = ExplicitTrainingData(x, y)

    component_generator = ComponentGenerator(x.shape[1])
    component_generator.add_operator(2)
    component_generator.add_operator(3)
    component_generator.add_operator(4)

    crossover = AGraphCrossover(component_generator)
    mutation = AGraphMutation(component_generator)

    agraph_generator = AGraphGenerator(STACK_SIZE, component_generator)

    fitness = ExplicitRegression(training_data=training_data)
    local_opt_fitness = ContinuousLocalOptimization(fitness, algorithm='lm')
    evaluator = Evaluation(local_opt_fitness)

    ea = AgeFitnessEA(evaluator, agraph_generator, crossover,
                      mutation, 0.4, 0.4, POP_SIZE)

    island = Island(ea, agraph_generator, POP_SIZE)
    archipelago = SerialArchipelago(island)

    opt_result = archipelago.evolve_until_convergence(max_generations=500,
                                                      fitness_threshold=1.0e-4)
    if opt_result.success:
        print(archipelago.get_best_individual().get_latex_string())
    else:
        print("Failed.")
Ejemplo n.º 5
0
def init_island():
    np.random.seed(15)
    x = init_x_vals(START, STOP, NUM_POINTS)
    y = equation_eval(x)
    training_data = ExplicitTrainingData(x, y)

    component_generator = ComponentGenerator(x.shape[1])
    component_generator.add_operator(2)
    component_generator.add_operator(3)
    component_generator.add_operator(4)

    crossover = AGraphCrossover(component_generator)
    mutation = AGraphMutation(component_generator)

    agraph_generator = AGraphGenerator(STACK_SIZE, component_generator)

    fitness = ExplicitRegression(training_data=training_data)
    local_opt_fitness = ContinuousLocalOptimization(fitness, algorithm='lm')
    evaluator = Evaluation(local_opt_fitness)

    ea_algorithm = AgeFitnessEA(evaluator, agraph_generator, crossover,
                                mutation, MUTATION_PROBABILITY,
                                CROSSOVER_PROBABILITY, POP_SIZE)

    island = Island(ea_algorithm, agraph_generator, POP_SIZE)
    return island
Ejemplo n.º 6
0
def test_island_hof(mocker):
    hof = mocker.Mock()
    crossover = SinglePointCrossover()
    mutation = SinglePointMutation(mutation_function)
    selection = Tournament(10)
    fitness = MultipleValueFitnessFunction()
    evaluator = Evaluation(fitness)
    ev_alg = MuPlusLambda(evaluator, selection, crossover, mutation,
                          0.2, 0.4, 20)
    generator = MultipleValueChromosomeGenerator(mutation_function, 10)
    island = Island(ev_alg, generator, 25, hall_of_fame=hof)

    island.evolve(10)

    hof.update.assert_called_once()
    hof_update_pop = hof.update.call_args[0][0]
    for h, i in zip(hof_update_pop, island.population):
        assert h == i
Ejemplo n.º 7
0
def island():
    crossover = SinglePointCrossover()
    mutation = SinglePointMutation(mutation_function)
    selection = Tournament(10)
    fitness = MultipleValueFitnessFunction()
    evaluator = Evaluation(fitness)
    ev_alg = MuPlusLambda(evaluator, selection, crossover, mutation,
                          0.2, 0.4, 20)
    generator = MultipleValueChromosomeGenerator(mutation_function, 10)
    return Island(ev_alg, generator, 25)
Ejemplo n.º 8
0
def execute_generational_steps():
    communicator = MPI.COMM_WORLD
    rank = MPI.COMM_WORLD.Get_rank()

    data = pd.read_csv('./data/fp_2var_test9_py.csv').as_matrix()
    x = data[:, 0:2]
    y = data[:2]

    if rank == 0:
        x = init_x_vals(-10, 10, 100)
        y = equation_eval(x)

    x = MPI.COMM_WORLD.bcast(x, root=0)
    y = MPI.COMM_WORLD.bcast(y, root=0)

    training_data = ExplicitTrainingData(x, y)

    component_generator = ComponentGenerator(x.shape[1])
    component_generator.add_operator(2)
    component_generator.add_operator(3)
    component_generator.add_operator(4)
    component_generator.add_operator(5)
    component_generator.add_operator(6)
    component_generator.add_operator(7)
    component_generator.add_operator(10)

    crossover = AGraphCrossover(component_generator)
    mutation = AGraphMutation(component_generator)

    agraph_generator = AGraphGenerator(STACK_SIZE, component_generator)

    fitness = ExplicitRegression(training_data=training_data,
                                 metric='root mean squared error')
    local_opt_fitness = ContinuousLocalOptimization(fitness,
                                                    algorithm='L-BFGS-B')
    evaluator = Evaluation(local_opt_fitness)

    #ea = AgeFitnessEA(evaluator, agraph_generator, crossover,
    #          mutation, 0.4, 0.4, POP_SIZE)

    ea = DeterministicCrowdingEA(evaluator, crossover, mutation, 0.4, 0.4)
    island = Island(ea, agraph_generator, POP_SIZE)

    archipelago = ParallelArchipelago(island)

    opt_result = archipelago.evolve_until_convergence(
        MAX_GENERATIONS,
        fitness_threshold=FITNESS_THRESHOLD,
        min_generations=MIN_GENERATIONS,
        stagnation_generations=STAGNATION_LIMIT)
    if opt_result.success:
        if rank == 0:
            print("best: ", archipelago.get_best_individual())
Ejemplo n.º 9
0
def explicit_regression_benchmark():
    np.random.seed(15)
    communicator = MPI.COMM_WORLD
    rank = MPI.COMM_WORLD.Get_rank()

    x = None
    y = None

    if rank == 0:
        x = init_x_vals(-10, 10, 100)
        y = equation_eval(x)

    x = MPI.COMM_WORLD.bcast(x, root=0)
    y = MPI.COMM_WORLD.bcast(y, root=0)

    training_data = ExplicitTrainingData(x, y)

    component_generator = ComponentGenerator(x.shape[1])
    component_generator.add_operator(2)
    component_generator.add_operator(3)
    component_generator.add_operator(4)

    crossover = AGraphCrossover(component_generator)
    mutation = AGraphMutation(component_generator)

    agraph_generator = AGraphGenerator(STACK_SIZE, component_generator)

    fitness = ExplicitRegression(training_data=training_data)
    local_opt_fitness = ContinuousLocalOptimization(fitness, algorithm='lm')
    evaluator = Evaluation(local_opt_fitness)

    ea = AgeFitnessEA(evaluator, agraph_generator, crossover, mutation, 0.4,
                      0.4, POP_SIZE)

    island = Island(ea, agraph_generator, POP_SIZE)

    archipelago = ParallelArchipelago(island)

    opt_result = archipelago.evolve_until_convergence(max_generations=500,
                                                      fitness_threshold=1.0e-4)

    if rank == 0:
        if opt_result.success:
            print("print the best indv", archipelago.get_best_individual())
        else:
            print("Failed.")
Ejemplo n.º 10
0
def main():
    crossover = SinglePointCrossover()
    mutation = SinglePointMutation(get_random_float)
    selection = Tournament(10)
    fitness = ZeroMinFitnessFunction()
    local_opt_fitness = ContinuousLocalOptimization(fitness)
    evaluator = Evaluation(local_opt_fitness)
    ea = MuPlusLambda(evaluator, selection, crossover, mutation, 0.4, 0.4, 20)
    generator = MultipleFloatChromosomeGenerator(get_random_float, 8)
    island = Island(ea, generator, 25)

    island.evolve(1)
    report_max_min_mean_fitness(island)
    island.evolve(500)
    report_max_min_mean_fitness(island)
Ejemplo n.º 11
0
def num_island(num, pop_size=POP_SIZE):
    generator = MultipleValueChromosomeGenerator(NumberGenerator(num),
                                                 VALUE_LIST_SIZE)
    return Island(evol_alg(), generator, pop_size)
Ejemplo n.º 12
0
def three_island(evol_alg):
    generator = MultipleValueChromosomeGenerator(generate_three,
                                                 VALUE_LIST_SIZE)
    return Island(evol_alg, generator, POP_SIZE)
Ejemplo n.º 13
0
def island(evol_alg):
    generator = MultipleValueChromosomeGenerator(mutation_function,
                                                 VALUE_LIST_SIZE)
    return Island(evol_alg, generator, POP_SIZE)