Exemplo n.º 1
0
def test_random_diff_duplicates_and_size(stop, n, start):
    ga = StandardGA(fitness_test_sin_func)

    nums = ga._random_diff(stop, n, start=start)

    assert len(nums) == len(set(nums))
    assert len(nums) == n
def test_random_diff_duplicates_and_size(stop, n, start):
    ga = StandardGA(fitness_test_sin_func)

    nums = ga._random_diff(stop, n, start=start)

    assert len(nums) == len(set(nums))
    assert len(nums) == n
Exemplo n.º 3
0
def test_sort_population(optim):
    ga = StandardGA(fitness_test_sin_func, optim=optim)
    ga.population = list(unsorted_population)
    ga._sort_population()

    required_population = sort_population(optim, list(unsorted_population))

    assert ga.population == required_population
def test_sort_population(optim):
    ga = StandardGA(fitness_test_sin_func, optim=optim)
    ga.population = list(unsorted_population)
    ga._sort_population()

    required_population = sort_population(optim, list(unsorted_population))

    assert ga.population == required_population
Exemplo n.º 5
0
def test_update_solution(chrom, fitness, optim, result):
    ga = StandardGA(fitness_test_sin_func, optim=optim)

    ga.best_chromosome = 1
    ga.best_fitness = 100

    ga._update_solution(chrom, fitness)

    assert ga.best_solution == result
Exemplo n.º 6
0
def test_select_parents_tournament():
    population = list(unsorted_population)
    population = sort_population('min', population)

    ga = StandardGA(fitness_test_sin_func, optim='min', selection='tournament', tournament_size=len(population))

    parent1, parent2 = ga._select_parents(population)

    assert (parent1.fitness_val, parent2.fitness_val) == (1, 2)
def test_select_parents_tournament():
    population = list(unsorted_population)
    population = sort_population('min', population)

    ga = StandardGA(fitness_test_sin_func,
                    optim='min',
                    selection='tournament',
                    tournament_size=len(population))

    parent1, parent2 = ga._select_parents(population)

    assert (parent1.fitness_val, parent2.fitness_val) == (1, 2)
def test_conduct_tournament_population_part(optim):
    ga = StandardGA(fitness_test_sin_func, optim=optim)

    population = list(unsorted_population)
    population = sort_population(optim, population)
    size = 2

    best1, best2 = ga._conduct_tournament(population, size)

    if optim == 'max':
        assert population[best1].fitness_val >= population[best2].fitness_val
    else:
        assert population[best1].fitness_val <= population[best2].fitness_val
Exemplo n.º 9
0
def test_conduct_tournament_population_part(optim):
    ga = StandardGA(fitness_test_sin_func, optim=optim)

    population = list(unsorted_population)
    population = sort_population(optim, population)
    size = 2

    best1, best2 = ga._conduct_tournament(population, size)

    if optim == 'max':
        assert population[best1].fitness_val >= population[best2].fitness_val
    else:
        assert population[best1].fitness_val <= population[best2].fitness_val
def test_extend_population():
    ga = StandardGA(fitness_test_sin_func, optim='min')
    ga.population = [IndividualGA(1, 100)]
    new_elems = [IndividualGA(2, 50), IndividualGA(3, 150)]

    ga.extend_population(new_elems)

    assert ga.best_solution == (2, 50)

    result = []
    for i, individ in zip(range(len(ga.population)), ga.population):
        result.append((individ.chromosome, individ.fitness_val))

    assert result == [(3, 150), (1, 100), (2, 50)]
Exemplo n.º 11
0
def test_extend_population():
    ga = StandardGA(fitness_test_sin_func, optim='min')
    ga.population = [IndividualGA(1, 100)]
    new_elems = [IndividualGA(2, 50), IndividualGA(3, 150)]

    ga.extend_population(new_elems)

    assert ga.best_solution == (2, 50)

    result = []
    for i, individ in zip(range(len(ga.population)), ga.population):
        result.append((individ.chromosome, individ.fitness_val))

    assert result == [(3, 150), (1, 100), (2, 50)]
Exemplo n.º 12
0
def test_conduct_tournament_whole_population(optim):
    ga = StandardGA(fitness_test_sin_func, optim=optim)

    population = list(unsorted_population)
    population = sort_population(optim, population)
    size = len(population)

    if optim == 'max':
        correct_out = (7, 6)
    else:
        correct_out = (1, 2)

    best1, best2 = ga._conduct_tournament(population, size)

    assert (population[best1].fitness_val, population[best2].fitness_val) == correct_out
def test_init_valid_cross_type(cross_type):
    """
    This function tests only common valid values of crossover type.
    DO NOT FORGET THAT SUBCLASSES (of StandardGA) HAVE ITS OWN RESTRICTIONS
    THAT MUST BE THOROUGHLY TESTED.
    """
    StandardGA(fitness_test_sin_func, cross_type=cross_type)
def test_conduct_tournament_whole_population(optim):
    ga = StandardGA(fitness_test_sin_func, optim=optim)

    population = list(unsorted_population)
    population = sort_population(optim, population)
    size = len(population)

    if optim == 'max':
        correct_out = (7, 6)
    else:
        correct_out = (1, 2)

    best1, best2 = ga._conduct_tournament(population, size)

    assert (population[best1].fitness_val,
            population[best2].fitness_val) == correct_out
def test_init_invalid_mut_type(mut_type):
    """
    This function tests only common invalid values of mutation type.
    DO NOT FORGET THAT SUBCLASSES (of StandardGA) HAVE ITS OWN RESTRICTIONS
    THAT MUST BE THOROUGHLY TESTED.
    """
    with pytest.raises(ValueError):
        StandardGA(fitness_test_sin_func, mut_type=mut_type)
def test_update_solution(chrom, fitness, optim, result):
    ga = StandardGA(fitness_test_sin_func, optim=optim)

    ga.best_chromosome = 1
    ga.best_fitness = 100

    ga._update_solution(chrom, fitness)

    assert ga.best_solution == result
Exemplo n.º 17
0
def test_invalid_random_diff():
    ga = StandardGA(fitness_test_sin_func)

    with pytest.raises(ValueError):
        ga._random_diff(2, 10, start=0)
def test_select_parents_unknown_type():
    ga = StandardGA(fitness_test_sin_func)
    ga.selection = 'unknown'

    with pytest.raises(ValueError):
        ga._select_parents([])
Exemplo n.º 19
0
def test_invalid_conduct_tournament(population, size):
    ga = StandardGA(fitness_test_sin_func)

    with pytest.raises(ValueError):
        ga._conduct_tournament(population, size)
Exemplo n.º 20
0
def test_invalid_init_population(chromosomes):
    ga = StandardGA(fitness_test_sin_func)

    with pytest.raises(ValueError):
        ga.init_population(chromosomes)
def test_init_invalid_optim():
    with pytest.raises(ValueError):
        StandardGA(fitness_test_sin_func, optim='LIE!')
def test_init_valid_mutation_prob(prob):
    StandardGA(fitness_test_sin_func, mut_prob=prob)
def test_init_valid_crossover_prob(prob):
    StandardGA(fitness_test_sin_func, cross_prob=prob)
def test_init_valid_selection_1(selection):
    StandardGA(fitness_test_sin_func, selection=selection)
def test_init_valid_selection_tournament():
    StandardGA(fitness_test_sin_func,
               selection='tournament',
               tournament_size=2)
def test_init_valid_elitism(elitism):
    StandardGA(fitness_test_sin_func, elitism=elitism)
def test_compute_rank_wheel_sum(size, result):
    ga = StandardGA(fitness_test_sin_func)

    assert ga._compute_rank_wheel_sum(size) == result
def test_random_diff_whole_interval():
    ga = StandardGA(fitness_test_sin_func)

    nums = ga._random_diff(5, 5, start=0)

    assert nums == list(range(5))
def test_invalid_random_diff():
    ga = StandardGA(fitness_test_sin_func)

    with pytest.raises(ValueError):
        ga._random_diff(2, 10, start=0)
def test_best_solution():
    ga = StandardGA(fitness_test_sin_func)
    ga.best_chromosome = [1, 2]
    ga.best_fitness = 155

    assert ga.best_solution == ([1, 2], 155)
def test_init_invalid_elitism(elitism):
    with pytest.raises(ValueError):
        StandardGA(fitness_test_sin_func, elitism=elitism)
def test_init_fitness_func():
    with pytest.raises(ValueError):
        StandardGA()
Exemplo n.º 33
0
def test_random_diff_whole_interval():
    ga = StandardGA(fitness_test_sin_func)

    nums = ga._random_diff(5, 5, start=0)

    assert nums == list(range(5))
def test_init_valid_optim(optim):
    StandardGA(fitness_test_sin_func, optim=optim)
def test_invalid_init_population(chromosomes):
    ga = StandardGA(fitness_test_sin_func)

    with pytest.raises(ValueError):
        ga.init_population(chromosomes)
Exemplo n.º 36
0
def test_select_parents_unknown_type():
    ga = StandardGA(fitness_test_sin_func)
    ga.selection = 'unknown'

    with pytest.raises(ValueError):
        ga._select_parents([])
def test_init_invalid_selection_type():
    with pytest.raises(ValueError):
        StandardGA(fitness_test_sin_func, selection='unknown')
def test_select_parents_wheel_sum(selection, wheel_sum):
    ga = StandardGA(fitness_test_sin_func, selection=selection)

    with pytest.raises(ValueError):
        ga._select_parents([], wheel_sum)
def test_init_invalid_mutation_prob(prob):
    with pytest.raises(ValueError):
        StandardGA(fitness_test_sin_func, mut_prob=prob)
Exemplo n.º 40
0
def test_select_parents_wheel_sum(selection, wheel_sum):
    ga = StandardGA(fitness_test_sin_func, selection=selection)

    with pytest.raises(ValueError):
        ga._select_parents([], wheel_sum)
def test_init_invalid_crossover_prob(prob):
    with pytest.raises(ValueError):
        StandardGA(fitness_test_sin_func, cross_prob=prob)
Exemplo n.º 42
0
def test_compute_rank_wheel_sum(size, result):
    ga = StandardGA(fitness_test_sin_func)

    assert ga._compute_rank_wheel_sum(size) == result
def test_invalid_conduct_tournament(population, size):
    ga = StandardGA(fitness_test_sin_func)

    with pytest.raises(ValueError):
        ga._conduct_tournament(population, size)
Exemplo n.º 44
0
def test_best_solution():
    ga = StandardGA(fitness_test_sin_func)
    ga.best_chromosome = [1, 2]
    ga.best_fitness = 155

    assert ga.best_solution == ([1,2], 155)