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
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)])
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)])
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)
# 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)])