This repository has been archived on 2021-10-31. You can view files and clone it, but cannot push or open issues or pull requests.
AICup/run.py

52 lines
1.9 KiB
Python
Raw Normal View History

2019-10-31 15:04:38 +00:00
from src import *
2019-10-31 17:58:06 +00:00
import pandas as pd
2019-11-18 07:16:45 +00:00
2019-10-23 19:07:20 +00:00
2019-11-09 15:52:13 +00:00
def run(show_plots=False, verbose=False):
2019-10-31 15:08:29 +00:00
# names = [name_ for name_ in os.listdir("./problems") if "tsp" in name_]
2019-11-09 15:36:10 +00:00
names = ["eil76.tsp", "kroA100.tsp"]
2019-11-18 07:15:29 +00:00
initializers = Solver_TSP.available_initializers.keys()
improvements = Solver_TSP.available_improvements.keys()
2019-10-31 17:58:06 +00:00
results = []
index = []
2019-10-23 19:07:20 +00:00
for name in names:
filename = f"problems/{name}"
instance = Instance(filename)
2019-11-09 15:52:13 +00:00
if verbose:
print("\n\n#############################")
instance.print_info()
2019-10-23 19:19:38 +00:00
if show_plots:
instance.plot_data()
2019-10-31 15:17:47 +00:00
2019-11-18 07:15:29 +00:00
for init in initializers:
solver = Solver_TSP(init)
for improve in improvements:
solver.bind(improve)
solver(instance, return_value=False, verbose=verbose)
2019-10-31 15:17:47 +00:00
2019-11-18 07:15:29 +00:00
if verbose:
print(f"the total length for the solution found is {solver.found_length}",
f"while the optimal length is {instance.best_sol}",
f"the gap is {solver.gap}%",
f"the solution is found in {solver.time_to_solve} seconds", sep="\n")
2019-11-09 15:52:13 +00:00
2019-11-18 07:15:29 +00:00
index.append((name, solver.name_method))
results.append([solver.found_length, instance.best_sol, solver.gap, solver.time_to_solve])
2019-10-31 17:58:06 +00:00
2019-11-18 07:15:29 +00:00
if show_plots:
solver.plot_solution()
2019-10-23 19:11:32 +00:00
2019-11-04 05:53:26 +00:00
if instance.exist_opt:
2019-11-04 05:43:54 +00:00
solver.solution = np.concatenate([instance.optimal_tour, [instance.optimal_tour[0]]])
2019-11-04 05:44:32 +00:00
solver.method = "optimal"
2019-11-04 05:43:54 +00:00
solver.plot_solution()
2019-10-31 17:58:06 +00:00
index = pd.MultiIndex.from_tuples(index, names=['problem', 'method'])
2019-10-31 17:33:22 +00:00
2019-10-31 17:58:06 +00:00
return pd.DataFrame(results, index=index, columns=["tour length", "optimal solution", "gap", "time to solve"])
2019-10-23 19:11:32 +00:00
2019-10-31 18:05:53 +00:00
2019-10-23 19:07:20 +00:00
if __name__ == '__main__':
2019-11-18 07:31:03 +00:00
df = run(show_plots=False, verbose=True)
df.to_csv("./results.csv")