伪代码:蚁群算法两点最短路径问题
题目条件:
(1,1)内的空间随机40个散点,指定第1个点为起点到第40点的终点,要求每一步步长小于<0.2,求最短路径(可能无解)
伪代码:
Class aca:
init函数
定义步长,蚂蚁数,迭代次数,信息素矩阵,信息素挥发速度,距离矩阵,距离-概率矩阵,选择概率矩阵,死胡同点列表,路径二维数组..:
计算死胡同列表(计算每个点附近距离小于步长的邻点数,小于2则为死胡同)
定义开始函数:
对迭代次数循环:
初始化路径二维数组,更新选择概率矩阵(基于信息素矩阵 * 距离-概率矩阵)
对蚂蚁循环:
路径二维数组第一点为0
对路径循环(上限为点总数):
计算允许选择列表,排除0点、上一点、死胡同点、超出距离点
计算允许选择列表内点的选择概率(选择概率矩阵)
概率归一化
依据概率轮盘赌选择下一到达点
更新路径二维数组
判断是否到达终点:
退出路径循环
循环计算每个蚂蚁距离:
判断路径列表是否出现终点:
未出现则距离设为1e10的极大值
找出重复路径点
对重复路径点循环:
依次切除重复点之间的路径
循环路径点:
距离 += 路径点距离
寻找每一代蚂蚁最优路径并记录
信息素变化量矩阵初始化(全0)