コード例 #1
0
def main():
    filename, algorithm, cut_off_sec, random_seed = format_check(
    )  # check input format
    city, dim, edge_weight_type, coord = parse_input(
        filename)  # parse input information
    adj_mat = adjacency_mat(dim, edge_weight_type, coord)  # input matrix
    write_adj_mat_file(adj_mat, city, dim)  # save input matrix as csv

    if random_seed == None:
        random_seed = 0
    else:
        random_seed = int(random_seed)

    if algorithm == 'Approx':
        output = Output(filename, algorithm, cut_off_sec,
                        algorithm)  # init output object

        start_MST = time.time()
        c, tour = compute(dim, adj_mat, cut_off_sec=cut_off_sec)
        total_time = time.time() - start_MST

        output.solution([c] + tour)  # generate solution file
        output.sol_trace([('%.4f' % total_time, c)
                          ])  # generate solution trace file

    elif algorithm == 'BnB':
        output = Output(filename, algorithm, cut_off_sec,
                        algorithm)  # init output object

        bnb = BranchNBound(
            adj_mat, dim,
            cut_off_sec)  # param: dist_matrix, num_city, time_limit
        path, cost, trace_list = bnb.run_branch_and_bound()

        output.solution([cost] + path)  # generate solution file
        output.sol_trace(trace_list)  # generate solution trace file

    elif algorithm == 'LS1':  # Iterated LocalSearch
        output = Output(filename, algorithm, cut_off_sec, algorithm,
                        random_seed)  # init output object

        ils = ILS(adj_mat, dim, cut_off_sec, random_seed
                  )  # param: dist_matrix, num_city, time_limit, random_seed
        path, cost, trace_list = ils.iterated_local_search()

        output.solution([cost] + path)  # generate solution file
        output.sol_trace(trace_list)  # generate solution trace file

    elif algorithm == 'LS2':  # Simulated Annealing
        output = Output(filename, algorithm, cut_off_sec, algorithm,
                        random_seed)  # init output object

        sa = SA(adj_mat, dim, 1e30, 1, 0.999, random_seed, cut_off_sec)
        path, cost, trace_list = sa.run_simulated_annealing()

        output.solution([cost] + path)  # generate solution file
        output.sol_trace(trace_list)  # generate solution trace file
コード例 #2
0
ファイル: IteratedLocalSearch.py プロジェクト: YunhanZou/TSP
def test_io():
    filename = "DATA/Cincinnati.tsp"
    city, dim, edge_weight_type, coord = parse_input(filename)
    adj_mat = adjacency_mat(dim, edge_weight_type, coord)
    algorithm = "TwoOpt"
    cut_off_sec = 10

    output = Output(filename, algorithm, cut_off_sec)
    to = TwoOpt(adj_mat, dim, cut_off_sec)
    path, cost, quality = to.two_opt()

    output.solution([cost] + path)
    output.sol_trace([(quality, cost)])
コード例 #3
0
ファイル: IteratedLocalSearch.py プロジェクト: YunhanZou/TSP
def test_ils():
    # filename = "DATA/Cincinnati.tsp"
    filename = "DATA/UKansasState.tsp"

    city, dim, edge_weight_type, coord = parse_input(filename)
    adj_mat = adjacency_mat(dim, edge_weight_type, coord)
    algorithm = "IteratedLocalSearch"
    cut_off_sec = 600

    output = Output(filename, algorithm, cut_off_sec)
    ils = IteratedLocalSearch(adj_mat, dim, cut_off_sec, 20)
    path, cost, quality, _ = ils.iterated_local_search()

    output.solution([cost] + path)
    output.sol_trace([(quality, cost)])
コード例 #4
0
ファイル: IteratedLocalSearch.py プロジェクト: YunhanZou/TSP
def run_all_data():
    dir = "DATA/"
    for f in os.listdir(dir):
        if f[-3:] == "tsp":
            print dir + f
            filename = dir + f

            city, dim, edge_weight_type, coord = parse_input(filename)
            adj_mat = adjacency_mat(dim, edge_weight_type, coord)
            algorithm = "IteratedLocalSearch"
            cut_off_sec = 600
            random_seed = 0

            output = Output(filename, algorithm, cut_off_sec)
            ils = IteratedLocalSearch(adj_mat, dim, cut_off_sec, random_seed)
            path, cost, trace_list = ils.iterated_local_search()
            print path, cost, trace_list

            output.solution([cost] + path)
            output.sol_trace(trace_list)
コード例 #5
0
    # print(cost4)

    # cost_matrix = np.array([[0, 10, 15, 20], [10, 0, 35, 25], [15, 35, 0, 30], [20, 25, 30, 0]])
    # bnb5 = BranchNBound(cost_matrix, 4, 5)
    # path5, cost5, quality5 = bnb5.run_branch_and_bound()
    # print_path(path5)
    # print(cost5)

    # file_name = "../DATA/Cincinnati.tsp"
    # city, dim, edge_weight_type, coord = parse_input(file_name)
    # adj_mat = adjacency_mat(dim, edge_weight_type, coord)

    # bnb_Atlanta = BranchNBound(adj_mat, dim, 600)

    # path_atl, cost_atl, quality_atl = bnb_Atlanta.run_branch_and_bound()

    filename, algorithm, cut_off_sec, random_seed = format_check()
    city, dim, edge_weight_type, coord = parse_input(filename)
    adj_mat = adjacency_mat(dim, edge_weight_type, coord)

    output = Output(filename, algorithm, cut_off_sec)
    bnb = BranchNBound(adj_mat, dim, cut_off_sec)
    path, cost, quality = bnb.run_branch_and_bound()

    # print_path(path)
    # print('The cost is ', cost)
    # print('The quality is ', quality)

    output.solution([cost] + path)
    output.sol_trace([(quality, cost)])