Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
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')
Ejemplo n.º 3
0
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')
Ejemplo n.º 5
0
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')
Ejemplo n.º 6
0
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')
        '''
Ejemplo n.º 8
0
    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')
Ejemplo n.º 9
0
def write_output(filename, tour):
    with open(filename, mode="w") as f:
        f.write(format_tour(tour))
Ejemplo n.º 10
0
                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')