# THE PROBLEM INSTANCE # - optimization of ANN's weights is a COP #++++++++++++++++++++++++++ ann_op_i = ANNOP(search_space=(-2, 2, n_weights), fitness_function=ann_i.stimulate, minimization=False, validation_threshold=validation_threshold) #++++++++++++++++++++++++++ # THE SEARCH # restrictions: # - 5000 offsprings/run max* # - 50 offsprings/generation max* # - use at least 5 runs for your benchmarks # * including reproduction #++++++++++++++++++++++++++ ga1 = GeneticAlgorithm2(ann_op_i, random_state, ps, uls.parametrized_tournament_selection(pressure), uls.one_point_crossover, p_c, uls.parametrized_ball_mutation(radius), 0.2) ga2 = GeneticAlgorithm(ann_op_i, random_state, ps, uls.parametrized_tournament_selection(pressure), uls.two_point_crossover, p_c, uls.parametrized_ball_mutation(radius), 0.1) sa1 = SimulatedAnnealing(ann_op_i, random_state, ps, uls.parametrized_ball_mutation(radius), control, update_rate) search_algorithms = [ga1, ga2] # initialize search algorithms [algorithm.initialize() for algorithm in search_algorithms] # execute search [algorithm.search(n_iterations=n_gen, report=False) for algorithm in search_algorithms] #++++++++++++++++++++++++++ # TEST # - test algorithms on unseen data #++++++++++++++++++++++++++
n_gen = 100 ps = 50 p_c = .7 p_m = 0.5 radius = .4 pressure = .2 ga1 = GeneticAlgorithm( problem_instance=ann_op_i, random_state=random_state, population_size=ps, selection=uls.parametrize_roulette_wheel_Wpressure_sharing_fitness( pressure), crossover=uls.geometric_semantic_crossover, p_c=p_c, mutation=uls.parametrized_ball_mutation(radius), p_m=p_m, pressure=pressure) islands = [] ga1.initialize() islands.append(ga1) best_solution = ga1.best_solution for iteration in range(n_gen): ga1.search(iteration, False, False) for i in range(len(islands)): if best_solution.fitness < islands[i].best_solution.fitness: algorithm = islands[i] best_solution = islands[i].best_solution print("\n")
fitness_function=ann_i.stimulate, minimization=False, validation_threshold=validation_threshold) #++++++++++++++++++++++++++ # THE SEARCH # restrictions: # - 5000 offsprings/run max* # - 50 offsprings/generation max* # - use at least 5 runs for your benchmarks # * including reproduction #++++++++++++++++++++++++++ ga1 = GeneticAlgorithm(ann_op_i, random_state, ps, uls.parametrized_tournament_selection(pressure), uls.one_point_crossover, p_c, uls.parametrized_ball_mutation(radius), 0.2) ga2 = GeneticAlgorithm(ann_op_i, random_state, ps, uls.parametrized_tournament_selection(pressure), uls.one_point_crossover, p_c, uls.parametrized_ball_mutation(radius), 0.4) sa1 = SimulatedAnnealing(ann_op_i, random_state, ps, uls.parametrized_ball_mutation(radius), control, update_rate) search_algorithms = [ga1, ga2, sa1] # initialize search algorithms [algorithm.initialize() for algorithm in search_algorithms] # execute search [ algorithm.search(n_iterations=n_gen, report=False)