Ejemplo n.º 1
0
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))
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()
Ejemplo n.º 3
0
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)))
Ejemplo n.º 4
0
#!/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])