Exemplo n.º 1
0
def test_raises_error_invalid_mutation_probability(crossover, mutation, prob,
                                                   expected_error):
    with pytest.raises(expected_error):
        _ = VarAnd(crossover=crossover,
                   mutation=mutation,
                   crossover_probability=0.0,
                   mutation_probability=prob)
Exemplo n.º 2
0
def test_var_and_mutation(single_value_population_of_4, crossover, mutation_n):
    variation = VarAnd(crossover=crossover,
                       mutation=mutation_n,
                       crossover_probability=0.0,
                       mutation_probability=1.0)

    offspring = variation(single_value_population_of_4, 4)
    for off, indv in zip(offspring, single_value_population_of_4):
        assert off.value == -indv.value
Exemplo n.º 3
0
def test_var_and_for_correct_offspring_size(single_value_population_of_4,
                                            num_offspring, crossover,
                                            mutation):
    variation = VarAnd(crossover=crossover,
                       mutation=mutation,
                       crossover_probability=0.5,
                       mutation_probability=0.5)

    offspring = variation(single_value_population_of_4, num_offspring)
    assert len(offspring) == num_offspring
Exemplo n.º 4
0
def test_var_and_stats_are_correct_size(single_value_population_of_4,
                                        crossover, mutation):
    variation = VarAnd(crossover=crossover,
                       mutation=mutation,
                       crossover_probability=0.5,
                       mutation_probability=0.5)

    _ = variation(single_value_population_of_4, 4)

    assert len(variation.crossover_offspring) == 4
    assert len(variation.mutation_offspring) == 4
Exemplo n.º 5
0
def test_var_and_correct_stats_output(single_value_population_of_4, crossover,
                                      mutation, cross_prob, mut_prob,
                                      expected_cross, expected_mut):
    variation = VarAnd(crossover=crossover,
                       mutation=mutation,
                       crossover_probability=cross_prob,
                       mutation_probability=mut_prob)

    _ = variation(single_value_population_of_4, 4)
    for cross, mut in zip(variation.crossover_offspring,
                          variation.mutation_offspring):
        assert cross == expected_cross
        assert mut == expected_mut
Exemplo n.º 6
0
def test_var_and_approximate_probabilities(single_value_population_of_100,
                                           crossover, mutation):
    np.random.seed(1)
    variation = VarAnd(crossover=crossover,
                       mutation=mutation,
                       crossover_probability=0.5,
                       mutation_probability=0.5)

    _ = variation(single_value_population_of_100, 100)
    num_cross = np.sum(variation.crossover_offspring)
    num_mut = np.sum(variation.mutation_offspring)
    num_both = np.sum(
        np.logical_and(variation.crossover_offspring,
                       variation.mutation_offspring))
    num_rep = 100 - np.sum(
        np.logical_or(variation.crossover_offspring,
                      variation.mutation_offspring))
    assert num_cross == 56
    assert num_mut == 44
    assert num_both == 22
    assert num_rep == 22