Esempio n. 1
0
 def cx_crossover(self, parent1, parent2):
     #od parent1 dajemy loop, od parent2 dopełnienie
     index = 0
     child1 = Route(self.cities)
     chromosom_index = []
     while True:
         chromosom_index.append(index)
         chromosom = parent2.city_route[index]
         index = parent1.city_route.index(chromosom)
         if index == 0:
             break
     unused_indexes = list(range(0, len(parent1.city_route)))
     for i in chromosom_index:
         child1.city_route[i] = parent1.city_route[i]
         unused_indexes.remove(i)
     for i in unused_indexes:
         child1.city_route[i] = parent2.city_route[i]
     child1 = self.mutation(child1)
     child1.calc_cost()
     return child1