From f9758703f9f1770d735bb8157c14e44ebc003cea Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 19 Jun 2023 22:06:44 +0200 Subject: [PATCH] script for stats + stats --- ...1_to_5_secs_ant_10_alpha_1_beta_1_to_4.png | Bin 0 -> 82605 bytes ..._0.01_to_20_secs_ant_10_alpha_1_beta_4.png | Bin 0 -> 53739 bytes tests/04_cluster_ant_colony_no_animation.py | 10 +- ..._no_animation_no_random_alpha_variation.py | 79 +++++++++ ...y_no_animation_no_random_beta_variation.py | 86 ++++++++++ ...ony_no_animation_no_random_single_value.py | 91 ++++++++++ tests/data_sample/ALL_tsp/ch150.opt.tour | 157 ++++++++++++++++++ tests/data_sample/ALL_tsp/eil76.opt.tour | 83 +++++++++ 8 files changed, 502 insertions(+), 4 deletions(-) create mode 100644 .assets/images/att48/stats_average_2_att48_aco_0.01_to_5_secs_ant_10_alpha_1_beta_1_to_4.png create mode 100644 .assets/images/att48/stats_average_5_att48_aco_0.01_to_20_secs_ant_10_alpha_1_beta_4.png create mode 100644 tests/04_cluster_ant_colony_no_animation_no_random_alpha_variation.py create mode 100644 tests/04_cluster_ant_colony_no_animation_no_random_beta_variation.py create mode 100644 tests/04_cluster_ant_colony_no_animation_no_random_single_value.py create mode 100644 tests/data_sample/ALL_tsp/ch150.opt.tour create mode 100644 tests/data_sample/ALL_tsp/eil76.opt.tour diff --git a/.assets/images/att48/stats_average_2_att48_aco_0.01_to_5_secs_ant_10_alpha_1_beta_1_to_4.png b/.assets/images/att48/stats_average_2_att48_aco_0.01_to_5_secs_ant_10_alpha_1_beta_1_to_4.png new file mode 100644 index 0000000000000000000000000000000000000000..49ee24e2cb1cb1e287e023e115b41cfd7a22a9d7 GIT binary patch literal 82605 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 literal 0 HcmV?d00001 diff --git a/tests/04_cluster_ant_colony_no_animation.py b/tests/04_cluster_ant_colony_no_animation.py index 7b62d0e..a279594 100644 --- a/tests/04_cluster_ant_colony_no_animation.py +++ b/tests/04_cluster_ant_colony_no_animation.py @@ -11,13 +11,15 @@ def generate_cities(nb, max_coords=1000): nb_ville = 2000 max_coords = 1000 nb_truck = 1 -max_time = 2 +max_time = 5 nb_ants = 10 max_time_per_cluster = max_time / nb_truck start_time_generate = time.time() -cities = [[6734, 1453], [2233, 10], [5530, 1424], [401, 841], [3082, 1644], [7608, 4458], [7573, 3716], [7265, 1268], [6898, 1885], [1112, 2049], [5468, 2606], [5989, 2873], [4706, 2674], [4612, 2035], [6347, 2683], [6107, 669], [7611, 5184], [7462, 3590], [7732, 4723], [5900, 3561], [4483, 3369], [6101, 1110], [5199, 2182], [1633, 2809], [4307, 2322], [675, 1006], [7555, 4819], [7541, 3981], [3177, 756], [7352, 4506], [7545, 2801], [3245, 3305], [6426, 3173], [4608, 1198], [23, 2216], [7248, 3779], [7762, 4595], [7392, 2244], [3484, 2829], [6271, 2135], [4985, 140], [1916, 1569], [7280, 4899], [7509, 3239], [10, 2676], [6807, 2993], [5185, 3258], [3023, 1942]] +cities = [[37.4393516691, 541.2090699418], [612.1759508571, 494.3166877396], [38.1312338227, 353.1484581781], [53.4418081065, 131.484901365], [143.0606355347, 631.7200953923], [689.9451267256, 468.5354998742], [112.7478815786, 529.417757826], [141.4875865042, 504.818485571], [661.0513901702, 445.9375182115], [98.7899036592, 384.5926031158], [697.3881696597, 180.3962284275], [536.4894189738, 287.2279085051], [192.4067320507, 20.439405931], [282.7865258765, 229.8001556189], [240.8251726391, 281.51414372], [246.9281323057, 322.461332116], [649.7313216456, 62.3331575282], [352.96585626, 666.7873101942], [633.392367658, 534.9398453712], [488.311799404, 437.4869439948], [141.4039286509, 228.4325551488], [17.3632612602, 240.2407068508], [397.5586451389, 231.3591208928], [565.7853781464, 282.3858748974], [475.8975387047, 468.5392706317], [322.4224566559, 550.3165478233], [397.5586634023, 74.7588387765], [672.8618339396, 432.882640963], [571.2189680147, 530.261699153], [104.6531165914, 482.8224768783], [356.7098388794, 67.6477131712], [400.4070255527, 253.6794479997], [282.3036243109, 426.8380500923], [58.7766988363, 507.1712386832], [189.75062244, 460.3815233617], [659.9124120147, 226.6284156239], [639.0307636033, 467.2302300719], [415.0258357432, 233.3045376118], [547.2662016307, 161.6589278401], [616.6547902644, 339.3409309407], [494.8592427417, 148.1217856389], [629.9980812186, 433.4548164038], [471.101431241, 314.2219307579], [138.2440514421, 137.1679919735], [91.5847556724, 110.0203007516], [390.6972811808, 423.9774318385], [565.1617825137, 429.1598152874], [54.5248980387, 438.5515408431], [334.350832971, 153.796923804], [531.0291024509, 612.3874827889], [475.7345905802, 385.7844618897], [228.8325218994, 410.4461939615], [578.3805347586, 321.3303494537], [358.9170574485, 404.4670352898], [486.4648554867, 593.0429937016], [343.169370767, 509.3123571315], [530.3626972076, 137.6881275684], [498.8065475299, 576.2102674608], [224.31827155, 312.4677490415], [595.836073259, 81.8130051356], [661.5588724308, 217.0456944477], [43.6892045516, 305.4722789165], [79.465345253, 445.9641737689], [210.4163247004, 130.7151137038], [432.2642292251, 629.4092661116], [623.2487161301, 69.189285084], [436.5194739944, 282.935645607], [59.4163265482, 40.1280234442], [630.9230074073, 230.342988813], [579.3265539688, 601.0359410602], [117.862450748, 112.9796833705], [297.7912565664, 166.3131886803], [22.7642703744, 455.5340094037], [259.7095810385, 10.6199925885], [342.3579873647, 599.3880182608], [10.0260950143, +488.9310558282], [315.2926064118, 273.2275475579], [220.7044919297, 270.0819745721], [192.1186059948, 314.1839922798], [271.5042718992, 225.2921989972], [530.7320005441, 504.0670155337], [42.5331441666, 656.3645162886], [396.1274792588, 539.4648066027], [118.6631474021, 508.7129103929], [395.6913876595, 699.5376048429], [559.0157105844, 560.8866941411], [22.6471035906, 526.2470392816], [135.6377085256, 325.8409901555], [141.4507014379, 485.2477927763], [396.7741299332, 460.7557115283], [87.7494562765, 19.6170129082], [350.4245639661, 420.6531186835], [216.7010817133, 466.4816410995], [130.9237737024, 351.1491733079], [72.6329856671, 645.7852219213], [144.6002949996, 457.4224283926], [212.3725077442, 594.9216893413], [49.9186786455, 541.4350825349], [656.6943525585, 558.1109593509], [176.5941623792, 648.5239953299], [500.3825200226, 198.7428378322], [634.317867842, 612.8291643194], [59.7537372726, 551.6321886765], [15.2145765106, 143.0441928532], [283.0054378872, 376.4439530184], [146.5389000907, 39.4231794338], [101.8685605377, 635.098685018], [588.1968537448, 580.5946976921], [457.2628632528, 350.0164047376], [537.4663680494, 472.5842276692], [269.3669098585, 367.4763636538], [239.9045383695, 102.629765339], [88.4677500396, 384.0507209275], [658.9133693395, 583.9575181023], [97.7359146347, 157.4558657632], [506.6191384007, 233.0022156094], [500.2566898239, 64.9136393489], [594.4048565021, 275.874186899], [66.230814661, 24.1317387604], [598.4162993909, 414.5557574275], [172.308833083, 344.3963466366], [299.48128518, 251.829512132], [303.8379894831, 21.052606379], [197.896926984, 512.388896098], [56.0199567669, 243.0663818382], [255.5566183121, 448.8651882442], [608.4256112402, 222.5421309272], [70.2722703273, 77.9227026433], [398.2298999899, 119.557657386], [635.4970237093, 133.3225902609], [378.3484559418, 272.2907677147], [484.8029663388, 677.0730379436], [278.8710882619, 299.9308770828], [381.6537300653, 360.3337602785], [557.6070707573, 595.3185092281], [249.0589749342, 76.6595112599], [562.9048787838, 670.0382113114], [398.550436558, 392.6493259144], [590.893972056, 370.7414913742], [558.2008003726, 0.4198814512], [461.4114714423, 530.5254969413], [354.7242881504, 685.40453619], [193.6611295657, +669.7432521028], [352.3140807211, 140.3273323662], [308.434570974, 115.2054269847], [299.588137008, 530.588961902], [334.2748764383, 152.1494569394], [690.9658585947, 134.5793307203], [48.0798124069, 270.968067372], [91.6467647724, 166.3541158474]] #cities[0] = [max_coords/2, max_coords/2] stop_time_generate = time.time() @@ -84,8 +86,8 @@ for i, (route, color) in enumerate(best_routes): y = [city[1] for city in route] x.append(x[0]) y.append(y[0]) - plt.plot(x, y, color=color, marker='x', linestyle='-', label=f"Cluster {i}") + plt.plot(x, y, color="blue", marker='o', linestyle='-', label=f"Cluster {i}") # add title with nb_ville, nb_truck and max_time - plt.title(f"nb_ville = {nb_ville}, nb_truck = {nb_truck}, max_time = {max_time}") + plt.title(f"nb_ville = {len(cities)}, nb_truck = {nb_truck}, max_time = {max_time}") plt.show() diff --git a/tests/04_cluster_ant_colony_no_animation_no_random_alpha_variation.py b/tests/04_cluster_ant_colony_no_animation_no_random_alpha_variation.py new file mode 100644 index 0000000..ed8c81e --- /dev/null +++ b/tests/04_cluster_ant_colony_no_animation_no_random_alpha_variation.py @@ -0,0 +1,79 @@ +import matplotlib.pyplot as plt +import numpy as np +from libs.clustering import split_tour_across_clusters +from libs.aco import AntColony, total_distance + +cities = [[565, 575], [25, 185], [345, 750], [945, 685], [845, 655], [880, 660], [25, 230], [525, 1000], [580, 1175], [650, 1130], [1605, 620], [1220, 580], [1465, 200], [1530, 5], [845, 680], [725, 370], [145, 665], [415, 635], [510, 875], [560, 365], [300, 465], [520, 585], [480, 415], +[835, 625], [975, 580], [1215, 245], [1320, 315], [1250, 400], [660, 180], [410, 250], [420, 555], [575, 665], [1150, 1160], [700, 580], [685, 595], [685, 610], [770, 610], [795, 645], [720, 635], [760, 650], [475, 960], [95, 260], [875, 920], [700, 500], [555, 815], [830, 485], +[1170, 65], [830, 610], [605, 625], [595, 360], [1340, 725], [1740, 245]] +optimal = 7542 + +max_times = [0.01, 0.1, 0.2, 0.5] +n_ants = 10 +alphas = [1, 4] +beta = 4 +evaporation = 0.5 +intensification = 2 +n_runs = 5 # Nombre de fois où chaque configuration sera exécutée pour obtenir une moyenne + +average_best_route_per_max_time_per_alpha = [] + +for alpha in alphas: + average_best_route_per_max_time = [] + for max_time in max_times: + + total_best_route_length = 0 + + for _ in range(n_runs): + print("Run number: ", _, "for max_time: ", max_time) + clusters = split_tour_across_clusters(cities, 1) + + total_distance_for_run = 0 + + for i, cluster_indices in enumerate(clusters.values()): + cluster_cities = [cities[index] for index in cluster_indices] + + ant_colony = AntColony(cluster_cities, n_ants=n_ants, max_time=max_time, alpha=alpha, beta=beta, evaporation=evaporation, intensification=intensification) + best_route = ant_colony.run() + total_distance_for_run += total_distance(best_route) + + total_best_route_length += total_distance_for_run + + average_best_route_length = total_best_route_length / n_runs + average_best_route_per_max_time.append(average_best_route_length) + + average_best_route_per_max_time_per_alpha.append(average_best_route_per_max_time) + +colors = ['b', 'g'] + +total_bars_per_group = len(alphas) +total_groups = len(max_times) + +unit_space_per_group = 1 +bars_space_per_group = total_bars_per_group / (total_bars_per_group + 1) +bar_width = bars_space_per_group / total_bars_per_group + +bar_positions = np.arange(total_groups) + +plt.figure(figsize=(10, 7)) + +for i, average_best_route_per_max_time in enumerate(average_best_route_per_max_time_per_alpha): + plt.bar(bar_positions + i * bar_width, average_best_route_per_max_time, width=bar_width, color=colors[i]) + +plt.axhline(y=optimal, color='r') + +plt.xticks(bar_positions + bar_width / 2, max_times) # Set the x-axis labels to be the max_time values +plt.xlabel('Max time') +plt.ylabel('Average best route length') + +title = "" +title += "Average best route length ({} iterations) for different max times\n".format(n_runs) +title += "Nb cities: " + str(len(cities)) + " / " +title += "Ants: " + str(n_ants) + " / " +title += "Alpha: " + str(alphas) + " / " +title += "Beta: " + str(beta) + " / " +title += "Evaporation: " + str(evaporation) + " / " +title += "Intensification: " + str(intensification) +plt.title(title) + +plt.show() \ No newline at end of file diff --git a/tests/04_cluster_ant_colony_no_animation_no_random_beta_variation.py b/tests/04_cluster_ant_colony_no_animation_no_random_beta_variation.py new file mode 100644 index 0000000..d93db20 --- /dev/null +++ b/tests/04_cluster_ant_colony_no_animation_no_random_beta_variation.py @@ -0,0 +1,86 @@ +import matplotlib.pyplot as plt +from libs.clustering import split_tour_across_clusters +from libs.aco import AntColony, total_distance +import numpy as np + +cities = [[6734, 1453], [2233, 10], [5530, 1424], [401, 841], [3082, 1644], [7608, 4458], [7573, 3716], [7265, 1268], [6898, 1885], [1112, 2049], [5468, 2606], [5989, 2873], [4706, 2674], [4612, 2035], [6347, 2683], [6107, 669], [7611, 5184], [7462, 3590], [7732, 4723], [5900, 3561], [4483, 3369], [6101, 1110], [5199, 2182], [1633, 2809], [4307, 2322], [675, 1006], [7555, 4819], [7541, 3981], [3177, 756], [7352, 4506], [7545, 2801], [3245, 3305], [6426, 3173], [4608, 1198], [23, 2216], [7248, 3779], [7762, 4595], [7392, 2244], [3484, 2829], [6271, 2135], [4985, 140], [1916, 1569], [7280, 4899], [7509, 3239], [10, 2676], [6807, 2993], [5185, 3258], [3023, 1942]] +optimal = 33523 + +max_times = [0.1, 0.2, 0.5, 1, 2] +n_ants = 10 +alpha = 1 +betas = [2, 4, 6, 8] # Pour contenir deux valeurs de beta +evaporation = 0.5 +intensification = 2 +n_runs = 2 # Nombre de fois où chaque configuration sera exécutée pour obtenir une moyenne + +average_best_route_per_max_time_per_beta = [] + +for beta in betas: + average_best_route_per_max_time = [] + + for max_time in max_times: + + total_best_route_length = 0 + + for _ in range(n_runs): + print("Run number: ", _, "for max_time: ", max_time, " and beta: ", beta) + clusters = split_tour_across_clusters(cities, 1) + + total_distance_for_run = 0 + + for i, cluster_indices in enumerate(clusters.values()): + cluster_cities = [cities[index] for index in cluster_indices] + + ant_colony = AntColony(cluster_cities, n_ants=n_ants, max_time=max_time, alpha=alpha, beta=beta, evaporation=evaporation, intensification=intensification) + best_route = ant_colony.run() + total_distance_for_run += total_distance(best_route) + + total_best_route_length += total_distance_for_run + + average_best_route_length = total_best_route_length / n_runs + average_best_route_per_max_time.append(average_best_route_length) + + average_best_route_per_max_time_per_beta.append(average_best_route_per_max_time) + +# Maintenant, nous avons toutes les valeurs moyennes, créons un histogramme +colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k'] + +total_bars_per_group = len(betas) +total_groups = len(max_times) + +# Unité d'espace pour chaque groupe de barres (incluant l'espace entre les groupes) +unit_space_per_group = 1 + +# Espace qui serait occupé par les barres dans chaque groupe +bars_space_per_group = total_bars_per_group / (total_bars_per_group + 1) + +# La largeur de chaque barre serait +bar_width = bars_space_per_group / total_bars_per_group +index = np.arange(len(max_times)) + +plt.figure() + +for i, average_best_route_per_max_time in enumerate(average_best_route_per_max_time_per_beta): + plt.bar(index + i * bar_width, average_best_route_per_max_time, bar_width, color=colors[i], label='Beta = '+str(betas[i])) + for j, v in enumerate(average_best_route_per_max_time): + plt.text(j + i * bar_width, v + 0.01 + (i*0.2), int(v), va='bottom', ha='center') + +plt.axhline(y=optimal, color='r') +plt.xlabel('Max time') +plt.ylabel('Average best route length') + +title = "" +title += "Comparaison of betas with average best route length ({} iterations) for different max times and each betas\n".format(n_runs) +title += "Nb cities: " + str(len(cities)) + " / " +title += "Ants: " + str(n_ants) + " / " +title += "Alpha: " + str(alpha) + " / " +title += "Evaporation: " + str(evaporation) + " / " +title += "Intensification: " + str(intensification) +plt.title(title) + +plt.xticks(index + bar_width / 2, max_times) +plt.legend() + +plt.tight_layout() +plt.show() \ No newline at end of file diff --git a/tests/04_cluster_ant_colony_no_animation_no_random_single_value.py b/tests/04_cluster_ant_colony_no_animation_no_random_single_value.py new file mode 100644 index 0000000..1e18e06 --- /dev/null +++ b/tests/04_cluster_ant_colony_no_animation_no_random_single_value.py @@ -0,0 +1,91 @@ +import matplotlib.pyplot as plt +from libs.clustering import split_tour_across_clusters +from libs.aco import AntColony, total_distance + +cities = [[22, 22], [36, 26], [21, 45], [45, 35], [55, 20], [33, 34], [50, 50], [55, 45], [26, 59], [40, 66], [55, 65], [35, 51], [62, 35], [62, 57], [62, 24], [21, 36], [33, 44], [9, 56], [62, 48], [66, 14], +[44, 13], [26, 13], [11, 28], [7, 43], [17, 64], [41, 46], [55, 34], [35, 16], [52, 26], [43, 26], [31, 76], [22, 53], [26, 29], [50, 40], [55, 50], [54, 10], [60, 15], [47, 66], [30, 60], [30, 50], [12, 17], [15, 14], [16, 19], [21, 48], [50, 30], [51, 42], [50, 15], [48, 21], [12, 38], [15, 56], [29, 39], [54, 38], [55, 57], [67, 41], [10, 70], [6, 25], [65, 27], [40, 60], [70, 64], [64, 4], [36, 6], [30, 20], [20, 30], [15, 5], [50, 70], [57, 72], [45, 42], [38, 33], [50, 4], [66, 8], [59, +5], [35, 60], [27, 24], [40, 20], [40, 37], [40, 40]] +optimal = 538 + +max_times = [0.01, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20] +n_ants = 10 +alpha = 1 +beta = 4 +evaporation = 0.5 +intensification = 2 +n_runs = 5 # Nombre de fois où chaque configuration sera exécutée pour obtenir une moyenne + + +average_best_route_per_max_time = [] + +for max_time in max_times: + + total_best_route_length = 0 + + for _ in range(n_runs): + print("Run number: ", _, "for max_time: ", max_time) + clusters = split_tour_across_clusters(cities, 1) + + total_distance_for_run = 0 + + for i, cluster_indices in enumerate(clusters.values()): + cluster_cities = [cities[index] for index in cluster_indices] + + ant_colony = AntColony(cluster_cities, n_ants=n_ants, max_time=max_time, alpha=alpha, beta=beta, evaporation=evaporation, intensification=intensification) + best_route = ant_colony.run() + total_distance_for_run += total_distance(best_route) + + total_best_route_length += total_distance_for_run + + average_best_route_length = total_best_route_length / n_runs + average_best_route_per_max_time.append(average_best_route_length) + +# Maintenant, nous avons toutes les valeurs moyennes, créons un histogramme +colors = [ + '#1f77b4', # Bleu moyen + '#ff7f0e', # Orange + '#2ca02c', # Vert + '#d62728', # Rouge + '#9467bd', # Violet + '#8c564b', # Marron + '#e377c2', # Rose + '#7f7f7f', # Gris + '#bcbd22', # Vert olive + '#17becf', # Turquoise + '#1b9e77', # Vert Teal + '#d95f02', # Orange foncé + '#7570b3', # Violet moyen + '#e7298a', # Fuchsia + '#66a61e', # Vert pomme + '#e6ab02', # Jaune or + '#a6761d', # Bronze + '#666666', # Gris foncé + '#f781bf', # Rose clair + '#999999', # Gris moyen +] + +plt.figure() +bar_width = 0.8 +bar_positions = range(len(max_times)) # Crée une liste d'indices pour chaque barre +plt.bar(bar_positions, average_best_route_per_max_time, width=bar_width, color=colors[:len(max_times)]) +plt.axhline(y=optimal, color='r') + +# Ajouter des valeurs au-dessus des barres +for i, v in enumerate(average_best_route_per_max_time): + plt.text(i - 0.15, v + 0.01, round(v, 2)) + +plt.xticks(bar_positions, max_times) # Fixe les labels sur l'axe des x aux valeurs de max_time +plt.xlabel('Max time') +plt.ylabel('Average best route length') + +title = "" +title += "Average best route length ({} iterations) for different max times\n".format(n_runs) +title += "Nb cities: " + str(len(cities)) + " / " +title += "Ants: " + str(n_ants) + " / " +title += "Alpha: " + str(alpha) + " / " +title += "Beta: " + str(beta) + " / " +title += "Evaporation: " + str(evaporation) + " / " +title += "Intensification: " + str(intensification) +plt.title(title) + +plt.show() \ No newline at end of file diff --git a/tests/data_sample/ALL_tsp/ch150.opt.tour b/tests/data_sample/ALL_tsp/ch150.opt.tour new file mode 100644 index 0000000..6499874 --- /dev/null +++ b/tests/data_sample/ALL_tsp/ch150.opt.tour @@ -0,0 +1,157 @@ +NAME : ch150.opt.tour +COMMENT : Length 6528 +TYPE : TOUR +DIMENSION : 150 +TOUR_SECTION +1 +98 +103 +82 +95 +107 +5 +100 +143 +97 +146 +26 +75 +18 +142 +85 +65 +132 +137 +50 +55 +58 +141 +83 +56 +90 +46 +92 +54 +138 +134 +131 +32 +23 +38 +67 +43 +109 +51 +20 +25 +110 +81 +29 +86 +135 +70 +108 +102 +114 +99 +19 +2 +37 +6 +28 +9 +42 +120 +47 +139 +40 +53 +118 +24 +12 +116 +101 +41 +57 +39 +127 +69 +36 +61 +11 +148 +130 +17 +66 +60 +140 +117 +129 +27 +31 +123 +74 +13 +106 +91 +119 +68 +128 +45 +71 +44 +64 +112 +136 +145 +144 +49 +147 +72 +80 +14 +122 +77 +133 +15 +78 +21 +150 +115 +4 +104 +22 +125 +149 +62 +3 +113 +10 +94 +88 +121 +79 +59 +16 +111 +105 +33 +126 +52 +93 +124 +35 +96 +89 +8 +7 +84 +30 +63 +48 +73 +76 +34 +87 +-1 +EOF diff --git a/tests/data_sample/ALL_tsp/eil76.opt.tour b/tests/data_sample/ALL_tsp/eil76.opt.tour new file mode 100644 index 0000000..6fd2cba --- /dev/null +++ b/tests/data_sample/ALL_tsp/eil76.opt.tour @@ -0,0 +1,83 @@ +NAME : eil76.opt.tour +COMMENT : Optimum tour for eil76.tsp (538) +TYPE : TOUR +DIMENSION : 76 +TOUR_SECTION +1 +33 +63 +16 +3 +44 +32 +9 +39 +72 +58 +10 +31 +55 +25 +50 +18 +24 +49 +23 +56 +41 +43 +42 +64 +22 +61 +21 +47 +36 +69 +71 +60 +70 +20 +37 +5 +15 +57 +13 +54 +19 +14 +59 +66 +65 +38 +11 +53 +7 +35 +8 +46 +34 +52 +27 +45 +29 +48 +30 +4 +75 +76 +67 +26 +12 +40 +17 +51 +6 +68 +2 +74 +28 +62 +73 +-1 +EOF