def generate_sample_output(): for i in range(CHALLENGES): cities = read_input(f'input_{i}.csv') for solver, name in ((solver_random, 'random'), (solver_greedy, 'greedy')): tour = solver.solve(cities) with open(f'sample/{name}_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n') my_tour = solver_myself.change_start(cities) with open(f'output_{i}.csv', 'w') as f: f.write(format_tour(my_tour) + '\n')
def generate_sample_output(solver, name): for i in range(CHALLENGES): cities = read_input(f'input_{i}.csv') tour = solver.solve(cities) # my_output/に作る with open(f'my_output/{name}_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_myoutput(): for i in range(CHALLENGES): cities = read_input(f'input_{i}.csv') solver, name = (mysolver, 'output') tour = solver.solve(cities) with open(f'{name}_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_sample_output(): for i in range(CHALLENGES): cities = read_input(f'input_{i}.csv') for solver, name in ((solver_random, 'random'), (solver_greedy, 'greedy')): tour = solver.solve(cities) with open(f'sample/{name}_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_sample_output(): for i in range(7,8): cities = read_input(f'input_{i}.csv') solver = solver_sa name = 'output' tour = solver.solve(cities) with open(f'{name}_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_sample_output(): for i in range(CHALLENGES): cities = read_input(f'input_{i}.csv') for solver, name in ((solver_random, 'random'), (solver_greedy, 'greedy'), (solver_greedy_change, 'change'), (solver_greedy_change_upgrade, 'upgrade'), (solver_greedy_change_final, 'final')): tour = solver.solve(cities) with open(f'sample/{name}_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_output(): for i in range(7, CHALLENGES): cities = read_input(f'input_{i}.csv') solver = solver_DSA name = 'dsa' #solver = solver_2_opt #name = '2_opt' record = [3292, 3779, 4495, 8150, 10676, 20273, 40000, 81000] tour, distance = solver.solve(cities) while distance > record[i]: tour, distance = solver.solve(cities) if distance <= record[i]: break with open(f'my_output/{name}_{i}_1.csv', 'w') as f: f.write(format_tour(tour) + '\n') '''
first_quadrant, second_quadrant, third_quadrant, forth_quadrant = divide_quadrants( cities) with multiprocessing.Pool() as pool: pr1 = pool.apply_async(twoOpt_local_solver, (first_quadrant, )) pr2 = pool.apply_async(twoOpt_local_solver, (second_quadrant, )) pr3 = pool.apply_async(twoOpt_local_solver, (third_quadrant, )) pr4 = pool.apply_async(twoOpt_local_solver, (forth_quadrant, )) route1 = pr1.get() route2 = pr2.get() route3 = pr3.get() route4 = pr4.get() route_final = join_routes([route1, route2, route3, route4]) return total_distance(route_final, dist) if __name__ == '__main__': assert len(sys.argv) > 1 cities = read_input('input_{}.csv'.format(sys.argv[1])) dist = distance_matrix(cities) start = time.time() result = concat_maps(cities) end = time.time() print('2out distance: ', result) print('2opt time: ', (end - start) * 1e6) with open(f'output_{sys.argv[1]}.csv', 'w') as f: f.write(format_tour(tour_improved) + '\n')
def write_output(filename, tour): with open(filename, mode="w") as f: f.write(format_tour(tour))
next_1 = next_cities[node1] next_2 = next_cities[node2] distance1 = getdistance(cities[node1], cities[next_1]) + getdistance(cities[node2], cities[next_2]) distance2 = getdistance(cities[node1], cities[node2]) + getdistance(cities[next_1], cities[next_2]) if distance1 > distance2 : point = next_cities[node1] next_cities[node1] = node2 previous_points = next_cities[node2] while point != node2: next_point = next_cities[point] next_cities[point] = previous_points previous_points = point point = next_point next_cities[point] = previous_points # print(next_cities) path =[] path.append(0) startpoint=next_cities[0] while startpoint != 0 : path.append(startpoint) startpoint = next_cities[startpoint] # print(path) return path if __name__ == '__main__': for i in range(8): cities = read_input(f'input_{i}.csv') tour = optimizetour(cities) with open(f'output_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_greedy_2_opt_output(): cities = read_input(f'input_{CHALLENGES - 1}.csv') tour = greedy_2_opt.try_all_possible_starting_city(cities) with open(f'output_{CHALLENGES - 1}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_nearest_insertion_output(): for i in range(BRUTE_FORCE_CHALLENGES, NEAREST_INSERTION_CHALLENGES): cities = read_input(f'input_{i}.csv') tour = nearest_insertion.try_all_possible_starting_city(cities) with open(f'output_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')
def generate_permutation_output(): for i in range(BRUTE_FORCE_CHALLENGES): cities = read_input(f'input_{i}.csv') tour = permutation.solve(cities) with open(f'output_{i}.csv', 'w') as f: f.write(format_tour(tour) + '\n')