def CrossOver_Of_Generation(self, parent1, parent2): slice_index = random.randint(1, self.Size_Of_Problem - 1) child1_chrom = self.CrossOver_Of_Chromosomes(slice_index, parent1.chromosomes, parent2.chromosomes) child2_chrom = self.CrossOver_Of_Chromosomes(slice_index, parent2.chromosomes, parent1.chromosomes) assert (len(child1_chrom) == len(child2_chrom) == self.Size_Of_Problem) child1 = Individual(self.Size_Of_Problem) child1.chromosomes = child1_chrom child2 = Individual(self.Size_Of_Problem) child2.chromosomes = child2_chrom return child1, child2
def genetic_crossover(self, parent1, parent2): """ Mixes the two parent individuals into two children slicing them by a random index and avoiding repeating chromosomes in eahc child """ slice_index = random.randint(1, self.problem_size - 1) child1_chrom = self.croosover_chromosomes(slice_index, parent1.chromosomes, parent2.chromosomes) child2_chrom = self.croosover_chromosomes(slice_index, parent2.chromosomes, parent1.chromosomes) assert (len(child1_chrom) == len(child2_chrom) == self.problem_size) child1 = Individual(self.problem_size) child1.chromosomes = child1_chrom child2 = Individual(self.problem_size) child2.chromosomes = child2_chrom return child1, child2