def test_perform_replacements(self): # Existing fitness list #[[0.5, 0], [1.5, 1], [2.5, 2], [3.5, 3], [4.5, 4]] # make some replacement selections # This should replace the member_no 4 self.ges.fitness_list.set_fitness_type(MIN) self.ges.set_replacement_selections( ReplacementDeleteWorst(self.ges.fitness_list, 1)) # make a fitness pool new_member = deepcopy(self.ges.population[2]) new_member.local_bnf['<IAMNEW>'] = ['yes i am'] orig_member_no = new_member.member_no fitness_pool = [new_member] # do the replacements self.ges._perform_replacements(fitness_pool) # did replacement take place self.assertEqual('yes i am', self.ges.population[4].local_bnf['<IAMNEW>'][0]) # was the local bnf for each replaced member update for new member no self.assertEqual(4, self.ges.population[4].member_no) # was the generation number bumped up by one self.assertEqual(1, self.ges.population[4]._generation)
class TestReplacementDeleteWorst(unittest.TestCase): def setUp(self): self.fitness_list = FitnessList(MAX) self.fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]]) self.repl = ReplacementDeleteWorst(self.fitness_list, replacement_count=1) def test_classinit_(self): self.assertEqual(1, self.repl._replacement_count) self.assertEqual(MIN, self.repl._selection_type) def test_set_replacement_count(self): self.repl.set_replacement_count(2) self.assertEqual(2, self.repl._replacement_count) self.repl.set_replacement_count(3) self.assertEqual(3, self.repl._replacement_count) self.assertRaises(ValueError, self.repl.set_replacement_count, 4) def test_select(self): # attempting to maximize remove worst 3 self.repl.set_replacement_count(3) values = [i for i in self.repl.select()] self.assertLessEqual( self.repl._fitness_list[values[0]][0], self.repl._fitness_list[values[1]][0], ) self.assertLessEqual( self.repl._fitness_list[values[1]][0], self.repl._fitness_list[values[2]][0], ) # attempting to minimize remove worst 3 self.fitness_list = FitnessList(MIN) values = [i for i in self.repl.select()] self.assertGreaterEqual( self.repl._fitness_list[values[0]][0], self.repl._fitness_list[values[1]][0], ) self.assertGreaterEqual( self.repl._fitness_list[values[1]][0], self.repl._fitness_list[values[2]][0], )
class TestReplacementDeleteWorst(unittest.TestCase): def setUp(self): self.fitness_list = FitnessList(MAX) self.fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]]) self.repl = ReplacementDeleteWorst(self.fitness_list, replacement_count=1) def test_classinit_(self): self.assertEqual(1, self.repl._replacement_count) self.assertEqual(MIN, self.repl._selection_type) def test_set_replacement_count(self): self.repl.set_replacement_count(2) self.assertEqual(2, self.repl._replacement_count) self.repl.set_replacement_count(3) self.assertEqual(3, self.repl._replacement_count) self.assertRaises(ValueError, self.repl.set_replacement_count, 4) def test_select(self): # attempting to maximize remove worst 3 self.repl.set_replacement_count(3) values = [i for i in self.repl.select()] self.assertLessEqual(self.repl._fitness_list[values[0]][0], self.repl._fitness_list[values[1]][0]) self.assertLessEqual(self.repl._fitness_list[values[1]][0], self.repl._fitness_list[values[2]][0]) # attempting to minimize remove worst 3 self.fitness_list = FitnessList(MIN) values = [i for i in self.repl.select()] self.assertGreaterEqual(self.repl._fitness_list[values[0]][0], self.repl._fitness_list[values[1]][0]) self.assertGreaterEqual(self.repl._fitness_list[values[1]][0], self.repl._fitness_list[values[2]][0])
def setUp(self): self.fitness_list = FitnessList(MAX) self.fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]]) self.repl = ReplacementDeleteWorst(self.fitness_list, replacement_count=1)