def setUp(self): self.alphabet = TestAlphabet() genome_1 = MutableSeq("11111", self.alphabet) self.org_1 = Organism(genome_1, test_fitness) genome_2 = MutableSeq("22222", self.alphabet) self.org_2 = Organism(genome_2, test_fitness) genome_3 = MutableSeq("333333333", self.alphabet) self.org_3 = Organism(genome_3, test_fitness) self._crossover = InterleaveCrossover(1.0)
class InterleaveTest(unittest.TestCase): """Test 'simple' 4-point crossovers. """ def setUp(self): self.alphabet = TestAlphabet() genome_1 = MutableSeq("11111", self.alphabet) self.org_1 = Organism(genome_1, test_fitness) genome_2 = MutableSeq("22222", self.alphabet) self.org_2 = Organism(genome_2, test_fitness) genome_3 = MutableSeq("333333333", self.alphabet) self.org_3 = Organism(genome_3, test_fitness) self._crossover = InterleaveCrossover(1.0) def test_basic_crossover(self): """Test basic interleave crossover functionality. """ start_genome_1 = self.org_1.genome[:] start_genome_2 = self.org_2.genome[:] new_org_1, new_org_2 = self._crossover.do_crossover(self.org_1, self.org_2) self.assertNotEqual(str(new_org_1.genome), str(start_genome_1), "Did not perform a crossover when expected.") self.assertNotEqual(str(new_org_2.genome), str(start_genome_2), "Did not perform a crossover when expected.") self.assertNotEqual(str(new_org_1), str(self.org_1), "Returned an exact copy of the original organism.") self.assertNotEqual(str(new_org_2), str(self.org_2), "Returned an exact copy of the original organism.") def test_prop_sym_crossover(self): """Test properties of interleave point crossover.""" new_org_1, new_org_2 = self._crossover.do_crossover(self.org_1, self.org_2) self.assertEqual(len(new_org_1.genome), len(new_org_2.genome), "Strings are of different sizes after interleave point crossover.") self.assertEqual(str(new_org_1.genome).count("1"), str(new_org_2.genome).count("2"), "There should be equal, inverse distributions") self.assertEqual(str(new_org_1.genome).count("2"), str(new_org_2.genome).count("1"), "There should be equal, inverse distributions") self.assertEqual(str(new_org_1.genome), "12121", "Did not interleave.") self.assertEqual(str(new_org_2.genome), "21212", "Did not interleave.") def test_prop_asym_crossover(self): """Test basic interleave crossover with asymmetric genomes.""" start_genome_1 = self.org_1.genome[:] start_genome_3 = self.org_3.genome[:] new_org_1, new_org_3 = self._crossover.do_crossover(self.org_1, self.org_3) self.assertNotEqual(str(new_org_1.genome), str(start_genome_1), "Did not perform a crossover when expected.") self.assertNotEqual(str(new_org_3.genome), str(start_genome_3), "Did not perform a crossover when expected.") self.assertNotEqual(str(new_org_1), str(self.org_1), "Returned an exact copy of the original organism.") self.assertNotEqual(str(new_org_3), str(self.org_3), "Returned an exact copy of the original organism.") self.assertEqual(str(new_org_1.genome), "13131", "Did not interleave with growth.") self.assertEqual(str(new_org_3.genome), "31313333", "Did not interleave with growth.")
class InterleaveTest(unittest.TestCase): """Test 'simple' 4-point crossovers. """ def setUp(self): self.alphabet = TestAlphabet() genome_1 = MutableSeq("11111", self.alphabet) self.org_1 = Organism(genome_1, test_fitness) genome_2 = MutableSeq("22222", self.alphabet) self.org_2 = Organism(genome_2, test_fitness) genome_3 = MutableSeq("333333333", self.alphabet) self.org_3 = Organism(genome_3, test_fitness) self._crossover = InterleaveCrossover(1.0) def test_basic_crossover(self): """Test basic interleave crossover functionality. """ start_genome_1 = self.org_1.genome[:] start_genome_2 = self.org_2.genome[:] new_org_1, new_org_2 = self._crossover.do_crossover( self.org_1, self.org_2) self.assertNotEqual(str(new_org_1.genome), str(start_genome_1), "Did not perform a crossover when expected.") self.assertNotEqual(str(new_org_2.genome), str(start_genome_2), "Did not perform a crossover when expected.") self.assertNotEqual( str(new_org_1), str(self.org_1), "Returned an exact copy of the original organism.") self.assertNotEqual( str(new_org_2), str(self.org_2), "Returned an exact copy of the original organism.") def test_prop_sym_crossover(self): """Test properties of interleave point crossover.""" new_org_1, new_org_2 = self._crossover.do_crossover( self.org_1, self.org_2) self.assertEqual( len(new_org_1.genome), len(new_org_2.genome), "Strings are of different sizes after interleave point crossover.") self.assertEqual( str(new_org_1.genome).count("1"), str(new_org_2.genome).count("2"), "There should be equal, inverse distributions") self.assertEqual( str(new_org_1.genome).count("2"), str(new_org_2.genome).count("1"), "There should be equal, inverse distributions") self.assertEqual(str(new_org_1.genome), "12121", "Did not interleave.") self.assertEqual(str(new_org_2.genome), "21212", "Did not interleave.") def test_prop_asym_crossover(self): """Test basic interleave crossover with asymmetric genomes.""" start_genome_1 = self.org_1.genome[:] start_genome_3 = self.org_3.genome[:] new_org_1, new_org_3 = self._crossover.do_crossover( self.org_1, self.org_3) self.assertNotEqual(str(new_org_1.genome), str(start_genome_1), "Did not perform a crossover when expected.") self.assertNotEqual(str(new_org_3.genome), str(start_genome_3), "Did not perform a crossover when expected.") self.assertNotEqual( str(new_org_1), str(self.org_1), "Returned an exact copy of the original organism.") self.assertNotEqual( str(new_org_3), str(self.org_3), "Returned an exact copy of the original organism.") self.assertEqual(str(new_org_1.genome), "13131", "Did not interleave with growth.") self.assertEqual(str(new_org_3.genome), "31313333", "Did not interleave with growth.")