def mutate(self, genes): n = len(genes) to_mutate = seeded_random.sample(range(n), max(n * self.mutation_rate, 1)) for i in to_mutate: genes[i] = not genes[i] return genes
def _random_crossover(self, chromosome_a, chromosome_b, n_cross_points=2): cross_points = seeded_random.sample(range(chromosome_a.length()), n_cross_points) cross_points.sort() return self._crossover_from_points(chromosome_a, chromosome_b, cross_points)