import numpy as np
class AntColony:
def __init__(self, distances, n_ants, n_best, n_iterations, decay, alpha=1, beta=1):
# 初始化蚁群算法的参数
self.distances = distances # 城市间的距离矩阵
# 初始化信息素矩阵, 行列为输入的distances的行列, 每个信息素的初始值为1/distances的行数, 也就是说每行信息素的和都=1
self.pheromone = np.ones(self.distances.shape) / len(distances)
self.all_inds = range(len(distances)) # 城市索引, 列表=[0,1,2,3...len(distances)]
self.n_ants = n_ants # 蚂蚁数量
self.n_best = n_best # 选择的最佳路径数量, b_best=1
self.n_iterations = n_iterations # 迭代次数
self.decay = decay # 信息素衰减率
self.alpha = alpha # 信息素重要性因子
self.beta = beta # 启发式信息重要性因子
def run(self):
shortest_path = None # 当前迭代中的最短路径
all_time_shortest_path = ("placeholder", np.inf) # 全局最短路径, np.inf代表无穷大
for i in range(self.n_iterations):
all_paths = self.gen_all_paths() # 生成所有蚂蚁的路径
self.spread_pheronome(al
05-01
4289
4289
08-08
6198
6198
02-14
12-23

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



