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
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
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.")
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
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
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)
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())
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.")
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)
def num_island(num, pop_size=POP_SIZE): generator = MultipleValueChromosomeGenerator(NumberGenerator(num), VALUE_LIST_SIZE) return Island(evol_alg(), generator, pop_size)
def three_island(evol_alg): generator = MultipleValueChromosomeGenerator(generate_three, VALUE_LIST_SIZE) return Island(evol_alg, generator, POP_SIZE)
def island(evol_alg): generator = MultipleValueChromosomeGenerator(mutation_function, VALUE_LIST_SIZE) return Island(evol_alg, generator, POP_SIZE)