def test_mutate_generation(self): ga = GASolver(max_generations, population_size, antibody_cnt, nc_cnt, c_cnt, markers, cell_cnt, mu_list, sigma_list) np.random.rand(1)[0] ga.create_random_population() pop1 = np.copy(ga.population[0]) ga.mutate_generation(0, ga.population_size / 2, ga.population_size) pop2 = ga.population[1] self.assertNotEqual(pop1.tolist(), pop2.tolist())
def test_survive_n_fittest(self): ga = GASolver(max_generations, population_size, antibody_cnt, nc_cnt, c_cnt, markers, cell_cnt, mu_list, sigma_list) ga.create_random_population() fit_cnt = ga.survive_n_fittest(0, 2) self.assertNotEqual(ga.population[1][0].tolist(), [0, 0, 0, 0]) self.assertNotEqual(ga.population[1][1].tolist(), [0, 0, 0, 0]) self.assertEqual(ga.population[1][fit_cnt + 1].tolist(), [0, 0, 0, 0]) self.assertEqual(ga.population[1][fit_cnt + 2].tolist(), [0, 0, 0, 0])
def test_cross_over_generation(self): ga = GASolver(max_generations, population_size, antibody_cnt, nc_cnt, c_cnt, markers, cell_cnt, mu_list, sigma_list) ga.create_random_population() ga.survive_n_fittest(0, population_size / 2) start_ind = population_size / 2 new_start_ind = ga.cross_over_generation(1, start_ind) self.assertEqual(ga.total_population, population_size * 5 / 4) self.assertEqual(new_start_ind, start_ind * 3 / 2) # half is zero self.assertTrue([0, 0, 0, 0] not in ga.population[0].tolist()) x = [el for el in ga.population[1] if el.tolist() == [0, 0, 0, 0]] self.assertEqual(len(x), population_size / 4)
def test_create_random_population(self): ga = GASolver(max_generations, population_size, antibody_cnt, nc_cnt, c_cnt, markers, cell_cnt, mu_list, sigma_list) ga.create_random_population() for i in range(population_size - 1): self.assertNotEqual(ga.population[0][i].tolist(), ga.population[0][i + 1].tolist(), "ab groups are different") for j in range(len(ga.population[0][i]) - 1): # which is 4 -- 4 antibodies self.assertNotEqual(ga.population[0][i][j], ga.population[0][i][j + 1], "ab's are different in each group") self.assertLess(ga.population[0][i][j], antibody_cnt, "antibody ids are correct") self.assertGreaterEqual(ga.population[0][i][j], 0, "antibody ids are correct")
def test_find_max_fitness_and_child(self): ga = GASolver(max_generations, population_size, antibody_cnt, nc_cnt, c_cnt, markers, cell_cnt, mu_list, sigma_list) ga.create_random_population() # don't include measured. All the population is measured so return -1 val = ga.find_max_fitness_and_child(0, False) self.assertEqual(val['fitness'], -1) self.assertEqual(val['child'].tolist(), ga.population[0][0].tolist()) # include measured val = ga.find_max_fitness_and_child(0, True) self.assertGreaterEqual(val['fitness'], 0) ga.cross_over_generation(0, ga.population_size / 2) # don't include measured. Some are unmeasured so must be > 0 val = ga.find_max_fitness_and_child(0, False) self.assertGreaterEqual(val['fitness'], 0) val = ga.find_max_fitness_and_child(0, True) self.assertGreaterEqual(val['fitness'], 0)