def test_best_individual_returned(one_island): archipelago = SerialArchipelago(one_island) generator = MultipleValueChromosomeGenerator(generate_zero, VALUE_LIST_SIZE) best_indv = generator() archipelago._islands[0].load_population([best_indv], replace=False) assert archipelago.get_best_individual().fitness == 0
def test_best_fitness_returned(one_island): generator = MultipleValueChromosomeGenerator(generate_zero, VALUE_LIST_SIZE) best_indv = generator() one_island.load_population([best_indv], replace=False) archipelago = ParallelArchipelago(one_island) assert archipelago.get_best_fitness() == 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)
def test_multiple_indviduals_added_to_pop(init_replication_variation, weaker_population): indvs_added = 2 generator = MultipleValueChromosomeGenerator( true_multiple_variation_function, COMPLEX_INDV_SIZE) rand_indv_var_or = AddRandomIndividual(init_replication_variation, generator, num_rand_indvs=indvs_added) offspring = rand_indv_var_or(weaker_population, POP_SIZE) count = 0 for indv in offspring: if all(indv.values): count += 1 assert count == indvs_added
def test_age_fitness_ea_step(pareto_front_population, onemax_evaluator, selected_indiviudals): population = pareto_front_population + selected_indiviudals mutation = DumbyMutation() crossover = DumbyCrossover() generator = MultipleValueChromosomeGenerator(return_false, COMPLEX_INDV_SIZE) evo_alg = AgeFitnessEA(onemax_evaluator, generator, crossover, mutation, 0, 0, len(population), selection_size=2 * len(population)) new_population = evo_alg.generational_step(population) assert len(new_population) == len(population)
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 perfect_individual(): generator = MultipleValueChromosomeGenerator(NumberGenerator(0), VALUE_LIST_SIZE) return generator()
def num_island(num, pop_size=POP_SIZE): generator = MultipleValueChromosomeGenerator(NumberGenerator(num), VALUE_LIST_SIZE) return Island(evol_alg(), generator, pop_size)
def create_chromosome_generator(): return MultipleValueChromosomeGenerator(generate_0_or_1, values_per_chromosome=16)
def true_chromosome_generator(): return MultipleValueChromosomeGenerator(true_variation_function, SIMPLE_INDV_SIZE)
def weaker_population(): generator = MultipleValueChromosomeGenerator(false_variation_function, COMPLEX_INDV_SIZE) return [generator() for i in range(25)]
def fit_generator(): return MultipleValueChromosomeGenerator(return_true, 10)
def weak_individual(): generator = MultipleValueChromosomeGenerator(return_false, SIMPLE_INDV_SIZE) indv = generator() indv.genetic_age = 100 return indv
def fit_individual(): generator = MultipleValueChromosomeGenerator(return_true, SIMPLE_INDV_SIZE) indv = generator() return indv
def population(): generator = MultipleValueChromosomeGenerator(mutation_function, 10) return [generator() for _ in range(25)]
def island(evol_alg): generator = MultipleValueChromosomeGenerator(mutation_function, VALUE_LIST_SIZE) return Island(evol_alg, generator, POP_SIZE)
def mixed_fit_generator(): return MultipleValueChromosomeGenerator(mutation_function, 10)
def unfit_generator(): return MultipleValueChromosomeGenerator(return_false, 10)
def three_island(evol_alg): generator = MultipleValueChromosomeGenerator(generate_three, VALUE_LIST_SIZE) return Island(evol_alg, generator, POP_SIZE)
def population(): generator = MultipleValueChromosomeGenerator(mutation_onemax_specific, 10) return [generator() for _ in range(25)]
def strong_population(): generator = MultipleValueChromosomeGenerator(return_true, SIMPLE_INDV_SIZE) return [generator() for _ in range(INITIAL_POP_SIZE)]
def test_generator(): generator = MultipleValueChromosomeGenerator(mutation_onemax_specific, 10) pop = [generator() for i in range(20)] assert len(pop) == 20 assert len(pop[0].values) == 10
def weak_population(): generator = MultipleValueChromosomeGenerator(return_false, 2 * SIMPLE_INDV_SIZE) return [generator() for _ in range(INITIAL_POP_SIZE)]
def generator(): return MultipleValueChromosomeGenerator(np.random.random, 10)