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) self.crossover = SinglePointCrossover(1.0)
class SinglePointTest(unittest.TestCase): """Test simple 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) self.crossover = SinglePointCrossover(1.0) def test_basic_crossover(self): """Test basic point 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.")
class SinglePointTest(unittest.TestCase): """Test simple 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) self.crossover = SinglePointCrossover(1.0) def test_basic_crossover(self): """Test basic point 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 _set_up_genetic_algorithm(self): """Overrideable function to set up the genetic algorithm parameters. This functions sole job is to set up the different genetic algorithm functionality. Since this can be quite complicated, this allows cusotmizablity of all of the parameters. If you want to customize specially, you can inherit from this class and override this function. """ self.motif_generator = RandomMotifGenerator(self.alphabet) self.mutator = SinglePositionMutation(mutation_rate=0.1) self.crossover = SinglePointCrossover(crossover_prob=0.25) self.repair = AmbiguousRepair(Schema(self.alphabet.alphabet_matches), 4) self.base_selector = TournamentSelection(self.mutator, self.crossover, self.repair, 2) self.selector = DiversitySelection(self.base_selector, self.motif_generator.random_motif)