()
| 90 | |
| 91 | # Function: Insertion |
| 92 | def insertion_operators(): |
| 93 | def cheapest_insertion(removed_nodes, city_tour, distance_matrix): |
| 94 | for node in removed_nodes: |
| 95 | best_insertion_cost = float('inf') |
| 96 | best_insertion_index = -1 |
| 97 | for i in range(1, len(city_tour) + 1): |
| 98 | insertion_cost = (distance_matrix[city_tour[i - 1]][node] + distance_matrix[node][city_tour[i % len(city_tour)]] - distance_matrix[city_tour[i - 1]][city_tour[i % len(city_tour)]]) |
| 99 | if (insertion_cost < best_insertion_cost): |
| 100 | best_insertion_cost = insertion_cost |
| 101 | best_insertion_index = i |
| 102 | city_tour.insert(best_insertion_index, node) |
| 103 | return city_tour |
| 104 | return [cheapest_insertion] |
| 105 | |
| 106 | ############################################################################ |
| 107 |
no outgoing calls
no test coverage detected