def test_sphere_model(): assert pg.sphere_model(np.array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])) == 0.0 assert pg.sphere_model(np.array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])) == 10.0 assert pg.sphere_model(np.array([2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])) == 40.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()
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()
def fitness_fn(x): return pg.sphere_model(x[:sphere_model_size])
def fitness_fn(x): return pg.sphere_model(x[:sphere_model_size]) # ES 1 def es_mu_comma_lambda_one_step():