def crossover(self, first_individual, second_individual): descendant = Individual.of(first_individual) subroute = self._get_random_subroute(second_individual) self._insert_subroute(subroute, descendant) descendant.normalize(self.settings) return descendant