-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
43 lines (33 loc) · 1.83 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from utils import (generate_node_map,plot_cv_map,
draw_connection,generate_final_result,
draw_pheromone, save_experiment_result)
from ant_colony_system import BaseAntColonySystem,ElitarianACS
import config
import cv2
if __name__ == "__main__":
graph = generate_node_map(40)
imagmap = plot_cv_map(graph,config.POSITION_LIMIT,config.POSITION_LIMIT)
# path_finder = BaseAntColonySystem(alpha=config.ALPHA,
# beta=config.BETA,
# max_iter=config.MAX_ITER,
# n_ants=config.N_ANTS,
# Q = config.Q,
# p_decay=config.P_DECAY,
# random_state=config.RANDOM_STATE)
path_finder = ElitarianACS(alpha=config.ALPHA,
beta=config.BETA,
max_iter=config.MAX_ITER,
n_ants=config.N_ANTS,
Q = config.Q,
p_decay=config.P_DECAY,
random_state=config.RANDOM_STATE)
for iter,min_distance,best_path,figure, best_iteration in path_finder.calculate_path(graph):
print(f"Best iteration: {best_iteration} -> {min_distance=:.1f}")
imgmap = draw_pheromone(graph,imagmap,path_finder.adj_pheromone_matrix[...,1])
imgmap = draw_connection(best_path,imgmap,min_distance,best_iteration=best_iteration)
final_image = generate_final_result(figure,imgmap)
if config.SHOW_RESULT:
cv2.imshow("Final Result",final_image)
cv2.waitKey(10)
if config.SAVE_RESULT:
save_experiment_result(final_image,iter)