蚁群优化算法
蚁群优化(ant colony optimization, ACO)是20世纪 90年代初由意大利学者 M.Dorigo等通过模拟蚂蚁的 行为而提出的一种随机优化 技术。最初用于求解旅行商问题, 现在已经成功用于许多组合 优 化 问 题 。 本 节 课 将 介 绍 ACO算法的基本原理和实现 技术,并通过介绍求解旅行 商问题的ACO算法了解实现 细节。
蚁群算法的基本原理
用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的信息素量较多,时间越长,较短路径上积累的信息素浓度逐渐增高,选择该路径的蚂蚁数量越来越多,最终,整个蚁群会在正反馈的作用下集中到最佳的路径上,这就是最优解。
算法流程
在ACO 算法中,人工蚂蚁实际上代表的是一个解的随机构 建过程,从最初的空解开始,通过不断地向部分解添加解 的成分而构建出一个完整的解 • AS算法对TSP的求解主要有两大步骤:
- 路径构建
- 信息素更新
准备TSP数据
- 不修改参数只手动修改了31个城市点的数据并保存在city2.mat中
运行结果
从结果可以看出,这31个数据在AOC算法迭代了大约125次后最短距离和平均距离开始趋于稳定
alpha、beta、rho三个参数的设置
alpha:信息素重要程度因子
beta:启发函数重要程度因子
rho:信息素挥发因子
选取几个范围数据调整alpha(beta = 5,rho = 1时)
- alpha = 1
- alpha = 2
- alpha = 3
- alpha = 5
- alpha =10
- alpha =15
对alpha的结论
取了1,2,3,5,10,15,这几个数据。
由这几个alpha的取值分析得出:当参数alpha的值越大,收敛速度越快。在取值在10,15之后迭代次数在40次后=附近开始趋于稳定。alpha取值为1,2,3,5时,收敛速度较快。在取值5,10,15的时候,收敛速度较慢,迭代变化效果不够明显,所以alpha的取值不宜过大。
alpha指的是蚂蚁在运动过程中所积累的信息素在指导蚁群搜索中的相对重要程度,alpha的值越大,蚂蚁选择以前走过的路径可能性越大,反之,值越小会使得只得到局部最优。
总而言之,alpha取值小时,收敛速度较慢,算法容易得到局部最优解,取值大事,收敛速度较快,易出现过早收敛,
beta的值修改(alpha = 1,rho = 1时)
- beta = 5
3. beta = 1
4. beta = 7
5. beta =10
6. beta = 15
对beta的结论
原参数beta的取值为5,在改为beta=1时不易收敛,在beta = 15时,迭代次数趋于40的时候接近稳定。beta取值越大,蚂蚁在某个局部点上选择最短路径的可能性越大,但蚁群搜索最优路径的随机性越小,若beta取值偏小,蚁群会随机搜索,蚁群更偏向于根据信息素浓度确定路径,算法收敛变快,从而难以找到最优解。
rho参数(alpha = 1,beta = 5)
- rho = 0.1
- rho = 0.05
- rho = 0.01
- rho = 0.5
- rho = 0.8
rho参数的结论
对rho取值了0.1 , 0.01 , 0.05 , 0.5, 0.8几个数据。其中取值为0.01 ,0.05 , 0.5 ,0.8时迭代速度都比取值为0.1时快。当rho参数较小时,未被选取的路径信息素将减少,使得搜索空间减小从而收敛性变大而得到局部最优解,rho取值过大时,无效的路径可以排除搜索但是不能保证有效路径也会被排除,从而影响到最优解的搜索,收敛速度变慢。
以上可得,慎重选择参数范围对算法有着较大影响。
代码
%% 旅行商问题(TSP)优化
%% 清空环境变量
clear all
clc
%% 导入数据
load city2.mat
%% 计算城市间相互距离
fprintf('Computing Distance Matrix... \n');
n = size(citys,1);
D = zeros(n,n);
for i = 1:n
for j = 1:n
if i ~= j
D(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2));
else
D(i,j) = 1e-4;