Пример #1
0
def test_apply_global_crossover():
    np.random.seed(42)
    size = 1000
    ind_size = 100
    operator = pg.intermediary_crossover
    pop = pg.make_uniform_population(size, ind_size)
    original_pop = pop.clone()
    pop = pg.apply_global_crossover(pop, operator)
    for i in range(pop.size):
        assert pop.individuals[i].run_eval is True
Пример #2
0
def test_apply_global_mutation():
    np.random.seed(42)
    size = 30
    ind_size = 100
    operator = pg.uncorrelated_one_step_mutation
    pool_size = 100
    pop = pg.make_uniform_population(size, ind_size)
    original_pop = pop.clone()
    pop = pg.apply_global_mutation(pop, pool_size, operator)
    assert pop.size == pool_size
    for i in range(pop.size):
        assert pop.individuals[i].run_eval is True
Пример #3
0
def test_m_plus_lambda():
    np.random.seed(42)
    sphere_model_size = 30
    fitness_fn = lambda x: pg.sphere_model(x[:sphere_model_size])
    size = 10
    pop1 = pg.make_uniform_population(size, sphere_model_size)
    pop1 = pg.evaluate_population(pop1, fitness_fn)
    pop1_clone = pop1.clone()
    pop2 = pg.make_uniform_population(size, sphere_model_size)
    pop2 = pg.evaluate_population(pop2, fitness_fn)
    pop1 = pg.mu_plus_lambda_replacement(pop1, pop2)
    f_p1c = np.array(
        [pop1_clone.individuals[i].fitness.value for i in range(size)])
    f_p2 = np.array([pop2.individuals[i].fitness.value for i in range(size)])
    f_p1 = np.array([pop1.individuals[i].fitness.value for i in range(size)])
    res = np.array([
        7.76332642, 8.08389311, 8.42498289, 8.77341594, 8.9523664, 9.45857558,
        9.49688766, 9.52769953, 9.7264757, 9.83516821
    ])
    assert np.allclose(f_p1, res) is True
    assert np.allclose(f_p1, f_p1c) is False
    assert f_p1.any() == f_p2.any()
Пример #4
0
def test_make_uniform_population():
    size = 1000
    ind_size = 20
    low = 0.0
    high = 1.0
    pop = pg.make_uniform_population(size, ind_size, low=low, high=high)
    assert type(pop) is pg.Population
    assert pop.size == size
    assert pop.individuals.size == size
    for i in range(size):
        assert type(pop.individuals[i]) is pg.Individual
        assert pop.individuals[i].genotype.size == ind_size
        for g in range(ind_size):
            assert pop.individuals[i].genotype[g] >= low and pop.individuals[
                i].genotype[g] <= high
Пример #5
0
def test_m_comma_lambda():
    np.random.seed(42)
    sphere_model_size = 30
    fitness_fn = lambda x: pg.sphere_model(x[:sphere_model_size])
    size = 10
    pop1 = pg.make_uniform_population(size, sphere_model_size)
    pop1 = pg.evaluate_population(pop1, fitness_fn)
    pop1_clone = pop1.clone()
    pop2 = pg.make_uniform_population(size, sphere_model_size)
    pop2 = pg.evaluate_population(pop2, fitness_fn)
    pop1 = pg.mu_comma_lambda_replacement(pop1, pop2)
    f_p1c = np.array(
        [pop1_clone.individuals[i].fitness.value for i in range(size)])
    f_p2 = np.array([pop2.individuals[i].fitness.value for i in range(size)])
    f_p1 = np.array([pop1.individuals[i].fitness.value for i in range(size)])
    res = np.array([
        7.7633264242708808, 8.4249828886076532, 9.4585755842303119,
        9.8351682100669695, 10.109666113362849, 10.120464613773503,
        11.148338435537882, 12.62638917659477, 12.68750163403401,
        13.486951247705489
    ])
    assert np.allclose(f_p1, res) is True
    assert np.allclose(f_p1, f_p1c) is False
    assert f_p1.any() == f_p2.any()