def test_always_mutate(self): """Test ability to cause mutations. """ mutator = SinglePositionMutation(mutation_rate=1.0) # when we mutate randomly by chance, we expect to get 2/3 # visible mutations (there are three letters in the alphabet and # one change cannot be observed since it is a mutation back to itself) expected_percent = .6 self._always_mutate(mutator, expected_percent)
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)
def test_never_mutate(self): """Make sure we do not mutate at unexpected times. """ mutator = SinglePositionMutation(mutation_rate=0.0) self._never_mutate(mutator)