Example #1
0
    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
Example #2
0
    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