def main(args): filename = args.file num_ants = args.ants iterations = args.iterations pher = 0.5 a = args.alpha b = args.beta decay = args.decay seed = args.seed stats = args.stats num_points, p_median, points = read_input(filename) aco = AntColony(num_ants, iterations, pher, a, b, decay, seed=seed, stat_file=stats) aco.set_data(num_points, p_median, points) solution = aco.run() print('Best distance: ' + str(solution))
type=int) parser.add_argument('iterations', help='the number of iterations to be \ perfomed by the algorithm', type=int) parser.add_argument('map', help = 'the map to calculate the path from', \ type = str) parser.add_argument('p', help = 'controls the amount of pheromone that is \ evaporated, range[0-1], precision 0.05' , \ type = float, choices = \ np.around(np.arange(0.0,1.05,0.05),decimals = 2)) parser.add_argument('Q', help = 'controls the amount of pheromone that is \ added' , \ type = float) parser.add_argument('-d','--display', default = 0, action = 'count', \ help = 'display the map and the \ resulting path' ) args = parser.parse_args() return args.ants, args.iterations, args.map, args.p, args.Q, args.display if __name__ == '__main__': ants, iterations, map_path, p, Q, display = arguments_parsing() # Get the map Map = Map(map_path) Colony = AntColony(Map, ants, iterations, p, Q) path = Colony.calculate_path() print path if display > 0: Map.represent_path(path)
beta = 2 # Visibility factor e = .5 # Evaporation rate el = 2 # Amount of elite ants # Matrices am = get_adjacency_matrix(M) dist_m = fill_dis_matr(M) # Distances matrix pheromones = np.ones((M, M)) print_matrix(am, M, "Adjacency Matrix") print_matrix(pheromones, M, "Pheromones Matrix") plot_graph(am, dist_m) full_search_result = full_search.find_best_way(dist_m) ac = AntColony(distances=dist_m, n_ants=M, n_best=2, n_iterations=100, decay=0.5, alpha=1, beta=1) aco_result = ac.run() def main(): pass if __name__ == '__main__': main()
end_num = 90 for line in sys.stdin: line = line.strip() dic = line dic = json.loads(dic) #we make dictionary from string all_ants = float(dic['n_ants']) distances = np.asarray(dic['distances']) pheromones = np.asarray(dic['pheromones']) upper_bond = int(math.ceil(all_ants/batch_size)) for splits_number in range(upper_bond): dic2 = dic.copy() if batch_size*(1+splits_number) < all_ants: dic2['n_ants'] = batch_size dic2['n_best'] = dic2['n_ants'] else: dic2['n_ants'] = int(all_ants - splits_number*batch_size) dic2['n_best'] = dic2['n_ants'] ant_colony = AntColony(distances, dic2['n_ants'], dic2['n_iterations']-1, dic2['decay'], dic2['alpha'], dic2['beta'], pheromones) shortest_path, new_pheromone = ant_colony.run(start_num, end_num) dic2['distances'] = dic['distances'] dic2['pheromones'] = dic['pheromones'] print('%s\t%s' % (shortest_path, json.dumps(dic2)))
#!/usr/bin/env python from aco import AntColony import numpy as np import json import sys start_num = 1 end_num = 90 input_copy_filename = "../data/input500_10_800.txt" file_input_copy = open(input_copy_filename, "r") for input_copy in file_input_copy: dic = input_copy.strip() dic = json.loads(dic) dic['distances'] = np.asarray(dic['distances']) ant_colony = AntColony(dic['distances'], dic['n_ants'], dic['n_iterations'], dic['decay'], dic['alpha'], dic['beta']) optimal_path = ant_colony.run(start_num, end_num) print(optimal_path[1])
parser.add_argument("--asys", action="store_true") parser.add_argument("--eas", action="store_true") parser.add_argument("--ras", action="store_true") parser.add_argument("--mmas", action="store_true") parser.add_argument("--bwas", action="store_true") parser.add_argument("--acs", action="store_true") parser.add_argument("--quiet", action="store_true") args = parser.parse_args() return args if __name__ == "__main__": args = parse_arguments() heuristic = Metaheuristic(args) tsplibfile = args.tsplibfile instance = TSP(tsplibfile) n = instance.n heuristic.update_parameters(n) nn = max(heuristic.nn_ls, heuristic.nn_ants) instance.compute_nn_lists(nn) instance.report("instance_report.txt") ant_colony = AntColony(heuristic, instance) ant_colony.report("ant_colony_report.txt")
pheromone_filename = sys.argv[1] input_copy_filename = sys.argv[2] file_pheromone = open(pheromone_filename, "r") file_input_copy = open(input_copy_filename, "r") for pheromone in file_pheromone: new_pheromone = pheromone for input_copy in file_input_copy: dic = input_copy.strip() dic = json.loads(dic) new_pheromone = json.loads(new_pheromone) dic['distances'] = np.asarray(dic['distances']) dic['pheromones'] = np.asarray(new_pheromone['pheromones']) ant_colony = AntColony(dic['distances'], dic['n_ants'], dic['n_iterations'], dic['decay'], dic['alpha'], dic['beta'], dic['pheromones']) ant_colony.update_pheromone() dic['distances'] = np.array(dic['distances']).tolist() dic['pheromones'] = dic['pheromones'].tolist() #print(dic['pheromones']) with open('./' + sys.argv[2], 'w') as file: file.write(json.dumps(dic))
import sys import ast from aco import AntColony import numpy as np import json start_num = 1 end_num = 90 init_pheromone = [] for line in sys.stdin: line = line.strip() splits_number, dic = line.split('\t', 1) dic = json.loads(dic) dic['distances'] = np.asarray(dic['distances']) dic['pheromones'] = np.asarray(dic['pheromones']) if init_pheromone == []: init_pheromone = dic['pheromones'] #dic['distances'] = eval(dic['distances']) ant_colony = AntColony(dic['distances'], dic['n_ants'], dic['n_iterations'], dic['decay'], dic['alpha'], dic['beta'], dic['pheromones']) #ant_colony['pheromones'] = dic['pheromones'] new_pheromone = ant_colony.run_reducer(start_num, end_num) init_pheromone = np.add(init_pheromone, new_pheromone) out_pheromone = {'pheromones': init_pheromone.tolist()} #out_pheromone = {'pheromones':init_pheromone} print('%s' % json.dumps(out_pheromone))
import numpy as np import time start_num = 1 end_num = 90 all_time_pheromones = [] all_time_shortest_path = [None, np.inf] for line in sys.stdin: line = line.strip() shortest_path, dic = line.split('\t', 1) dic = json.loads(dic) new_pheromone = np.asarray(dic['pheromones']) shortest_path = eval(shortest_path) if all_time_shortest_path[1] > shortest_path[1]: all_time_shortest_path = shortest_path if all_time_pheromones == []: all_time_pheromones = new_pheromone else: all_time_pheromones = np.add(all_time_pheromones, new_pheromone) dic['distances'] = np.asarray(dic['distances']) ant_colony = AntColony(dic['distances'], dic['n_ants'], 1, dic['decay'], dic['alpha'], dic['beta'], all_time_pheromones) shortest_path, new_pheromone = ant_colony.run(start_num, end_num) if all_time_shortest_path[1] > shortest_path[1]: all_time_shortest_path = shortest_path print(all_time_shortest_path)