蚁群算法简述及实现

合集下载

蚁群算法内容简介

蚁群算法内容简介

蚁群算法内容简介蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法群算法是由意大利学者Dorigo等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻经的行为而提出的一种基于种群的启发式随机搜索算法,蚁群算法具有并行性、鲁棒性、正反馈性等特点。

蚁群算法最早成功应用于解决著名的旅行商问题以及二次分配问题、车间任务调度问题、图的着色问题、网络路由等许多复杂的组合问题。

蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质.针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。

随着人们对效益的要求越来越高,人们发现组合优化的各种方法,但在一些复杂度比较高的问题上,一些传统的方法显示了他的限制,列如计算量上升太快,时间复杂度很高,这就需要一些新的方法来解决这些问题,从而有效地克服传统蚁群算法中容易陷入局部最优解和收敛速度慢的现象。

蚁群系统(Ant Colony System),这种算法是目前国内外启发式算法中的研究热点和前沿课题,被成功地运用于旅行商问题的求解,蚁群算法在求解复杂优化问题方面具有很大的优越性和广阔的前景。

但是,根据观察实验发现,蚁群中的多个蚂蚁的运动是随机的,在扩散范围较大时,在较短时间内很难找出一条较好的路径,在算法实现的过程中容易出现停滞现象和收敛速度慢现象。

在这种弊端的情况下,学者们提出了一种自适应蚁群算法,通过自适应地调整运行过程中的挥发因子来改变路径中信息素浓度,从而有效地克服传统蚁群算法中容易陷入局部最优解和收敛速度慢的现象。

下面是一些最常用的变异蚁群算法精英蚂蚁系统全局最优解决方案在每个迭代以及其他所有的蚂蚁的沉积信息素。

最大最小蚂蚁系统(MMAS)添加的最大和最小的信息素量[ τmax ,τmin ],只有全局最佳或迭代最好的巡逻沉积的信息素。

蚁群算法的原理与实现

蚁群算法的原理与实现

蚁群算法的原理与实现蚁群算法的原理与实现蚁群算法是一种基于蚁群行为觅食的启发式搜索算法,它模拟了蚁群觅食的过程,通过蚂蚁之间的信息交流和相互合作,最终找到最优解。

蚁群算法具有自组织、分布式计算和并行搜索等特点,被广泛应用于优化问题的求解。

蚁群算法的基本原理是模拟蚂蚁觅食的行为。

在蚂蚁觅食的过程中,蚂蚁们会释放信息素,并根据信息素的浓度选择路径。

当一只蚂蚁找到食物后,它会返回蚁巢,并释放更多的信息素,吸引其他蚂蚁跟随它的路径。

随着时间的推移,路径上的信息素浓度会逐渐增加,越来越多的蚂蚁会选择这条路径,形成正反馈的效应。

最终,蚂蚁们会找到一条最优路径连接蚁巢和食物。

蚁群算法的实现过程可以分为两个阶段,即路径选择阶段和信息素更新阶段。

在路径选择阶段,蚂蚁根据信息素的浓度和距离选择路径。

通常情况下,蚂蚁倾向于选择信息素浓度高且距离短的路径。

在信息素更新阶段,蚂蚁会根据路径的质量释放信息素。

一般来说,路径质量好的蚂蚁会释放更多的信息素,以吸引更多的蚂蚁跟随。

为了实现蚁群算法,需要定义一些重要的参数,如信息素浓度、信息素挥发率、蚂蚁的移动速度和路径选择的启发因子等。

信息素浓度表示路径上的信息素浓度大小,信息素挥发率表示信息素的衰减速度,蚂蚁的移动速度表示蚂蚁在路径上的移动速度,路径选择的启发因子表示蚂蚁在选择路径时信息素和距离的权重。

蚁群算法的优势在于它能够找到全局最优解,并且对解空间的搜索范围不敏感。

同时,蚁群算法还能够处理具有多个局部最优解的问题,通过信息素的传播和挥发,逐渐淘汰次优解,最终找到全局最优解。

然而,蚁群算法也存在一些不足之处。

首先,算法的收敛速度较慢,需要进行多次迭代才能达到较好的结果。

此外,算法的参数设置对算法的性能影响较大,需要进行调优。

最后,蚁群算法在处理大规模问题时,需要消耗较大的计算资源。

总的来说,蚁群算法是一种有效的优化算法,能够解决许多实际问题。

通过模拟蚂蚁的觅食行为,蚁群算法能够找到最优解,具有自组织、分布式计算和并行搜索等特点。

蚁群算法及案例分析精选全文

蚁群算法及案例分析精选全文
问过的节点;另外,人工蚁
群在选择下一条路径的时
候并不是完全盲目的,而是
按一定的算法规律有意识
地寻找最短路径
自然界蚁群不具有记忆的
能力,它们的选路凭借外
激素,或者道路的残留信
息来选择,更多地体现正
反馈的过程
人工蚁群和自然界蚁群的相似之处在于,两者优先选择的都
是含“外激素”浓度较大的路径; 两者的工作单元(蚂蚁)都
正反馈、较强的鲁棒性、全
局性、普遍性
局部搜索能力较弱,易出现
停滞和局部收敛、收敛速度
慢等问题
优良的分布式并行计算机制
长时间花费在解的构造上,
导致搜索时间过长
Hale Waihona Puke 易于与其他方法相结合算法最先基于离散问题,不
能直接解决连续优化问题
蚁群算法的
特点
蚁群算法的特点及应用领域
由于蚁群算法对图的对称性以
及目标函数无特殊要求,因此
L_ave=zeros(NC_max,1);
%各代路线的平均长度
while NC<=NC_max
%停止条件之一:达到最大迭代次数
% 第二步:将m只蚂蚁放到n个城市上
Randpos=[];
for i=1:(ceil(m/n))
Randpos=[Randpos,randperm(n)];
end
Tabu(:,1)=(Randpos(1,1:m))';
scatter(C(:,1),C(:,2));
L(i)=L(i)+D(R(1),R(n));
hold on
end
plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)])

蚁群算法的原理及其应用

蚁群算法的原理及其应用

蚁群算法的原理及其应用1. 蚁群算法的介绍蚁群算法(Ant Colony Optimization, ACO)是一种启发式优化算法,它模拟了蚂蚁在寻找食物路径时的行为。

蚁群算法通过模拟蚂蚁在信息素的引导下进行行为选择,来寻找最优解。

蚁群算法的核心思想是利用分布式的信息交流和反馈机制来完成问题的求解。

2. 蚁群算法的原理蚁群算法的原理可简述为以下几个步骤:1.创建蚁群:随机生成一定数量的蚂蚁,将其放置在问题的初始状态上。

2.信息素初始化:对于每条路径,初始化其上的信息素浓度。

3.蚂蚁的移动:每只蚂蚁根据一定的规则,在解空间中移动,并根据路径上的信息素浓度决定移动的方向。

4.信息素更新:每只蚂蚁在移动到目标位置后,根据路径的质量调整经过路径上的信息素浓度。

5.更新最优路径:记录当前找到的最优路径,并更新全局最优路径。

6.蚂蚁迭代:重复进行2-5步骤,直到满足终止条件。

3. 蚁群算法的应用蚁群算法被广泛应用于许多优化问题的求解,特别是在组合优化、路径规划、图着色等领域。

3.1 组合优化问题蚁群算法在组合优化问题中的应用主要包括旅行商问题(TSP)、背包问题(KP)、调度问题等。

通过模拟蚂蚁的移动和信息素的更新,蚁群算法可以找到全局最优解或接近最优解的解决方案。

3.2 路径规划问题在路径规划问题中,蚁群算法常被用于解决无人车、无人机等的最优路径规划。

蚁群算法能够在搜索空间中寻找最短路径,并考虑到交通拥堵等实际情况,提供合适的路径方案。

3.3 图着色问题蚁群算法可以用于解决图着色问题,即给定一个图,用尽可能少的颜色对其顶点进行着色,使得相邻顶点的颜色不同。

蚁群算法通过模拟蚂蚁的移动和信息素的更新,能够找到一种较好的图着色方案。

4. 蚁群算法的优缺点4.1 优点•收敛性好:蚁群算法能够在相对较短的时间内找到较优解。

•分布式计算:蚂蚁的并行搜索使得蚁群算法能够处理大规模复杂问题。

•鲁棒性强:蚁群算法对问题的可行域和约束条件的适应性较强。

蚁群算法概述

蚁群算法概述

蚁群算法概述一、蚁群算法蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来寻找最优解决方案的机率型技术。

它由Marco Dorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。

蚂蚁在路径上前进时会根据前边走过的蚂蚁所留下的分泌物选择其要走的路径。

其选择一条路径的概率与该路径上分泌物的强度成正比。

因此,由大量蚂蚁组成的群体的集体行为实际上构成一种学习信息的正反馈现象:某一条路径走过的蚂蚁越多,后面的蚂蚁选择该路径的可能性就越大。

蚂蚁的个体间通过这种信息的交流寻求通向食物的最短路径。

蚁群算法就是根据这一特点,通过模仿蚂蚁的行为,从而实现寻优。

这种算法有别于传统编程模式,其优势在于,避免了冗长的编程和筹划,程序本身是基于一定规则的随机运行来寻找最佳配置。

也就是说,当程序最开始找到目标的时候,路径几乎不可能是最优的,甚至可能是包含了无数错误的选择而极度冗长的。

但是,程序可以通过蚂蚁寻找食物的时候的信息素原理,不断地去修正原来的路线,使整个路线越来越短,也就是说,程序执行的时间越长,所获得的路径就越可能接近最优路径。

这看起来很类似与我们所见的由无数例子进行归纳概括形成最佳路径的过程。

实际上好似是程序的一个自我学习的过程。

3、人工蚂蚁和真实蚂蚁的异同ACO是一种基于群体的、用于求解复杂优化问题的通用搜索技术。

与真实蚂蚁通过外激素的留存/跟随行为进行间接通讯相似,ACO中一群简单的人工蚂蚁(主体)通过信息素(一种分布式的数字信息,与真实蚂蚁释放的外激素相对应)进行间接通讯,并利用该信息和与问题相关的启发式信息逐步构造问题的解。

人工蚂蚁具有双重特性:一方面,他们是真实蚂蚁的抽象,具有真实蚂蚁的特性,另一方面,他们还有一些在真实蚂蚁中找不到的特性,这些新的特性,使人工蚂蚁在解决实际优化问题时,具有更好地搜索较好解的能力。

人工蚂蚁与真实蚂蚁的相同点为:1.都是一群相互协作的个体。

蚂蚁群算法的原理与应用

蚂蚁群算法的原理与应用

蚂蚁群算法的原理与应用一、引言蚂蚁群算法(Ant Colony Algorithm)是一种仿生学算法,它从模拟蚂蚁寻找食物的行为中得到启示,通过模拟蚂蚁在一个环境中移动的过程,从而找到最优解。

二、蚂蚁群算法原理1. 蚂蚁行为模拟在蚂蚁群算法中,蚂蚁走的路线形成了图的结构,每个节点代表一个城市,边表示两个城市之间的路径。

蚂蚁执行一系列的行为,比如跟随其他蚂蚁、发现新的路径和留下路径信息等。

这些行为模拟蚂蚁在寻找食物时的行为。

2. 均衡信息素更新蚂蚁在走过一条路径后,会在路径上留下信息素,信息素的含量越多,蚂蚁就越有可能跟随这条路径。

然而,过多的信息素会导致所有蚂蚁只走这一条路径,无法寻找更优的路径。

因此,需要均衡信息素的含量,让所有路径都有被探索的机会。

3. 路径选择蚂蚁在走到一个城市后,需要选择下一个城市。

选择的概率与路径上的信息素含量以及该路径已经被其他蚂蚁走过的情况有关。

信息素含量高的路径以及没有被走过的路径,被选中的概率越高。

三、蚂蚁群算法应用1. 旅行商问题旅行商问题是一种经典的算法问题,它需要在多个城市之间找到一条最短的路径,使得每个城市都被访问,而且最终回到起点。

蚂蚁群算法可以用于解决这个问题,通过模拟蚂蚁在不同的路径上走过的情况,找到最短的路径。

2. 网络路由在一个复杂的网络中,需要选择不同的路径来传输数据。

传输路径的选择会影响网络的质量和效率。

蚂蚁群算法可以用于网络路由,通过蚂蚁在网络中寻找最优的路径,从而提高网络的稳定性和传输效率。

3.生产调度在生产过程中,需要对不同的任务进行调度,以保证生产效率和质量。

蚂蚁群算法可以用于生产调度,通过模拟蚂蚁在不同任务之间的选择过程,从而找到最优的调度方案。

四、结论蚂蚁群算法是一种有效的仿生学算法,在许多领域都有广泛的应用。

通过模拟蚂蚁在不同的环境中的行为,蚂蚁群算法可以找到最优的解决方案。

在未来,蚂蚁群算法有望在更多的领域得到应用,从而提高生产效率和质量。

蚁群算法——精选推荐

蚁群算法——精选推荐

蚁群算法⼀、蚁群算法简介 蚁群算法(AG)是⼀种模拟蚂蚁觅⾷⾏为的模拟优化算法,它是由意⼤利学者Dorigo M等⼈于1991年⾸先提出,并⾸先使⽤在解决TSP(旅⾏商问题)上。

之后,⼜系统研究了蚁群算法的基本原理和数学模型.⼆、蚁群算法原理1、蚂蚁在路径上释放信息素。

2、碰到还没⾛过的路⼝,就随机挑选⼀条路⾛。

同时,释放与路径长度有关的信息素。

3、信息素浓度与路径长度成反⽐。

后来的蚂蚁再次碰到该路⼝时,就选择信息素浓度较⾼路径。

4、最优路径上的信息素浓度越来越⼤。

5、最终蚁群找到最优寻⾷路径。

三、蚁群算法流程图四、实例应⽤基于TSP问题的基本蚁群算法原理讲解参考⽼师上课讲解的PPT不做过多粘贴1.源代码:%% 旅⾏商问题(TSP)优化%% 清空环境变量clear allclc%% 导⼊数据citys = ceil(rand(50,2)*50000)%load newcitys.mat%% 计算城市间相互距离fprintf('Computing Distance Matrix... \n');n = size(citys,1);D = zeros(n,n);for i = 1:nfor j = 1:nif i ~= jD(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2));elseD(i,j) = 1e-4;endendend%% 初始化参数fprintf('Initializing Parameters... \n');m = 50; % 蚂蚁数量alpha = 1; % 信息素重要程度因⼦beta = 5; % 启发函数重要程度因⼦rho = 0.05; % 信息素挥发因⼦Q = 1; % 常系数Eta = 1./D; % 启发函数Tau = ones(n,n); % 信息素矩阵Table = zeros(m,n); % 路径记录表iter = 1; % 迭代次数初值iter_max = 150; % 最⼤迭代次数Route_best = zeros(iter_max,n); % 各代最佳路径Length_best = zeros(iter_max,1); % 各代最佳路径的长度Length_ave = zeros(iter_max,1); % 各代路径的平均长度%% 迭代寻找最佳路径figure;while iter <= iter_maxfprintf('迭代第%d次\n',iter);% 随机产⽣各个蚂蚁的起点城市start = zeros(m,1);for i = 1:mtemp = randperm(n);start(i) = temp(1);endTable(:,1) = start;% 构建解空间citys_index = 1:n;% 逐个蚂蚁路径选择for i = 1:m% 逐个城市路径选择for j = 2:ntabu = Table(i,1:(j - 1)); % 已访问的城市集合(禁忌表)allow_index = ~ismember(citys_index,tabu);allow = citys_index(allow_index); % 待访问的城市集合P = allow;% 计算城市间转移概率for k = 1:length(allow)P(k) = Tau(tabu(end),allow(k))^alpha * Eta(tabu(end),allow(k))^beta; endP = P/sum(P);% 轮盘赌法选择下⼀个访问城市Pc = cumsum(P);target_index = find(Pc >= rand);target = allow(target_index(1));Table(i,j) = target;endend% 计算各个蚂蚁的路径距离Length = zeros(m,1);for i = 1:mRoute = Table(i,:);for j = 1:(n - 1)Length(i) = Length(i) + D(Route(j),Route(j + 1));endLength(i) = Length(i) + D(Route(n),Route(1));end% 计算最短路径距离及平均距离if iter == 1[min_Length,min_index] = min(Length);Length_best(iter) = min_Length;Length_ave(iter) = mean(Length);Route_best(iter,:) = Table(min_index,:);else[min_Length,min_index] = min(Length);Length_best(iter) = min(Length_best(iter - 1),min_Length);Length_ave(iter) = mean(Length);if Length_best(iter) == min_LengthRoute_best(iter,:) = Table(min_index,:);elseRoute_best(iter,:) = Route_best((iter-1),:);endend% 更新信息素Delta_Tau = zeros(n,n);% 逐个蚂蚁计算for i = 1:m% 逐个城市计算for j = 1:(n - 1)Delta_Tau(Table(i,j),Table(i,j+1)) = Delta_Tau(Table(i,j),Table(i,j+1)) + Q/Length(i); endDelta_Tau(Table(i,n),Table(i,1)) = Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i); endTau = (1-rho) * Tau + Delta_Tau;% 迭代次数加1,清空路径记录表% figure;%最佳路径的迭代变化过程[Shortest_Length,index] = min(Length_best(1:iter));Shortest_Route = Route_best(index,:);plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...[citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');pause(0.3);iter = iter + 1;Table = zeros(m,n);% endend%% 结果显⽰[Shortest_Length,index] = min(Length_best);Shortest_Route = Route_best(index,:);disp(['最短距离:' num2str(Shortest_Length)]);disp(['最短路径:' num2str([Shortest_Route Shortest_Route(1)])]);%% 绘图figure(1)plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...[citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');grid onfor i = 1:size(citys,1)text(citys(i,1),citys(i,2),[' ' num2str(i)]);endtext(citys(Shortest_Route(1),1),citys(Shortest_Route(1),2),' 起点');text(citys(Shortest_Route(end),1),citys(Shortest_Route(end),2),' 终点');xlabel('城市位置横坐标')ylabel('城市位置纵坐标')title(['蚁群算法优化路径(最短距离:' num2str(Shortest_Length) ')'])figure(2)plot(1:iter_max,Length_best,'b',1:iter_max,Length_ave,'r:')legend('最短距离','平均距离')xlabel('迭代次数')ylabel('距离')title('各代最短距离与平均距离对⽐')运⾏结果:利⽤函数citys = ceil(rand(50,2)*50000) 随机产⽣五⼗个城市坐标2.研究信息素重要程度因⼦alpha, 启发函数重要程度因⼦beta,信息素挥发因⼦rho对结果的影响为了保证变量唯⼀我重新设置五⼗个城市信息进⾏实验在原来设值运⾏结果:实验结果可知当迭代到120次趋于稳定2.1 alpha值对实验结果影响(1)当alpha=4时运⾏结果实验结果可知当迭代到48次左右趋于稳定(2)当alpha=8时运⾏结果:有图可知迭代40次左右趋于稳定,搜索性较⼩(3)当alpha= 0.5运⾏结果:有图可知迭代到140次左右趋于稳定(4)当alpha=0.2时运⾏结果:结果趋于110次左右稳定所以如果信息素因⼦值设置过⼤,则容易使随机搜索性减弱;其值过⼩容易过早陷⼊局部最优2.2 beta值对实验影响(1)当 beta=8时运⾏结果结果迭代75次左右趋于稳定(2)当 beta=1时运⾏结果:结果迭代130次左右趋于稳定所以beta如果值设置过⼤,虽然收敛速度加快,但是易陷⼊局部最优;其值过⼩,蚁群易陷⼊纯粹的随机搜索,很难找到最优解2.3 rho值对实验结果影响(1)当rho=3时运⾏结果:结果迭代75次左右趋于稳定(2)当rho=0.05运⾏结果:结果迭代125次左右趋于稳定所以如果rho取值过⼤时,容易影响随机性和全局最优性;反之,收敛速度降低总结:蚁群算法对于参数的敏感程度较⾼,参数设置的好,算法的结果也就好,参数设置的不好则运⾏结果也就不好,所以通常得到的只是局部最优解。

数据分析知识:数据挖掘中的蚁群算法

数据分析知识:数据挖掘中的蚁群算法

数据分析知识:数据挖掘中的蚁群算法蚁群算法是一种模拟蚂蚁觅食行为的启发式算法。

它是一种基于群体智能的方法,能够有效地用于数据挖掘和机器学习领域。

本文将介绍蚁群算法的基本原理和应用案例。

一、蚁群算法的基本原理蚁群算法受到了蚂蚁觅食行为的启发。

蚂蚁在觅食过程中会遵循一定的规则,例如在路径上释放信息素,吸引其他蚂蚁前往同一方向;在路径上的信息素浓度较高的路径更容易选择。

蚁群算法利用了这些规则,以一种群体智能的方式搜索解空间。

具体来说,蚁群算法由以下几个步骤组成:1.初始化:定义问题的解空间和初试信息素浓度。

解空间可以是任何基于排列、图形或其他对象的集合,例如TSP问题中的城市序列集合。

信息素浓度矩阵是一个与解空间大小相同的矩阵,用于反映每个解的吸引力。

2.移动规则:蚂蚁在解空间中移动的规则。

通常规则包括根据当前解和信息素浓度选择下一步解以及更新当前解的信息素浓度。

3.信息素更新:蚁群中的蚂蚁经过路径后,更新路径上的信息素浓度。

通常信息素浓度的更新涉及一个挥发系数和一个信息素增量。

4.终止条件:确定蚁群算法的运行时间,例如最大迭代次数或达到特定解的准确度。

蚁群算法是一种群体智能的方法,每只蚂蚁只能看到局部的解。

通过信息素的释放和更新,蚁群最终能够找到全局最优解。

二、蚁群算法的应用案例蚁群算法最常用于解决组合优化问题,例如TSP问题、车辆路径问题和任务分配问题。

下面将介绍蚁群算法在TSP问题和车辆路径问题中的应用。

1. TSP问题TSP问题是一个NP难问题,是指在旅行时,如何有效地走遍所有篮子,使得总的旅行距离最小。

蚁群算法是适用于TSP问题的一种有效的算法。

在每一代,蚂蚁会在城市之间移动,假设当前城市为i,则下一个选择的城市j是基于概率函数计算得到的。

概率函数考虑了当前城市的信息素浓度以及城市之间的距离。

每条路径释放的信息素浓度大小根据路径长度而定。

这样,蚂蚁可以在TSP问题上找到最优解。

2.车辆路径问题车辆路径问题是指在有限时间内如何合理地分配车辆到不同的客户,以最小化送货时间和车辆的旅行距离。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

蚁群算法简述及实现1 蚁群算法的原理分析蚁群算法是受自然界中真实蚁群算法的集体觅食行为的启发而发展起来的一种基于群体的模拟进化算法,属于随机搜索算法,所以它更恰当的名字应该叫“人工蚁群算法”,我们一般简称为蚁群算法。

M.Dorigo等人充分的利用了蚁群搜索食物的过程与著名的TSP问题的相似性,通过人工模拟蚁群搜索食物的行为来求解TSP问题。

蚂蚁这种社会性动物,虽然个体行为及其简单,但是由这些简单个体所组成的群体却表现出及其复杂的行为特征。

这是因为蚂蚁在寻找食物时,能在其经过的路径上释放一种叫做信息素的物质,使得一定范围内的其他蚂蚁能够感觉到这种物质,且倾向于朝着该物质强度高的方向移动。

蚁群的集体行为表现为一种正反馈现象,蚁群这种选择路径的行为过程称之为自催化行为。

由于其原理是一种正反馈机制,因此也可以把蚁群的行为理解成所谓的增强型学习系统(Reinforcement Learning System)。

引用M.Dorigo所举的例子来说明蚁群发现最短路径的原理和机制,见图1所示。

假设D 和H之间、B和H之间以及B和D之间(通过C)的距离为1,C位于D和B的中央(见图1 (a))。

现在我们考虑在等间隔等离散世界时间点(t=0,1,2……)的蚁群系统情况。

假设每单位时间有30只蚂蚁从A到B,另三十只蚂蚁从E到D,其行走速度都为1(一个单位时间所走距离为1),在行走时,一只蚂蚁可在时刻t留下浓度为1的信息素。

为简单起见,设信息素在时间区间(t+1,t+2)的中点(t+1.5)时刻瞬时完全挥发。

在t=0时刻无任何信息素,但分别有30只蚂蚁在B、30只蚂蚁在D等待出发。

它们选择走哪一条路径是完全随机的,因此在两个节点上蚁群可各自一分为二,走两个方向。

但在t=1时刻,从A到B的30只蚂蚁在通向H的路径上(见图1 (b))发现一条浓度为15的信息素,这是由15只从B走向H的先行蚂蚁留下来的;而在通向C的路径上它们可以发现一条浓度为30的信息素路径,这是由15只走向BC的路径的蚂蚁所留下的气息与15只从D经C到达B留下的气息之和(图1 (c))。

这时,选择路径的概率就有了偏差,向C走的蚂蚁数将是向H走的蚂蚁数的2倍。

对于从E到D来的蚂蚁也是如此。

(a)(b)(c)图1 蚁群路径搜索实例这个过程一直会持续到所有的蚂蚁最终都选择了最短的路径为止。

这样,我们就可以理解蚁群算法的基本思想:如果在给定点,一只蚂蚁要在不同的路径中选择,那么,那些被先行蚂蚁大量选择的路径(也就是信息素留存较浓的路径)被选中的概率就更大,较多的信息素意味着较短的路径,也就意味着较好的问题回答。

2人工蚁群算法描述蚁群算法可以看作为一种基于解空间参数化概率分布模型(Parameterized Probabilistic Model)的搜索算法框架(Model-based search algorithms)。

在蚁群算法中,解空间参数化概率,模型的参数就是信息素,因而这种参数化概率分布模型就是信息素模型。

在基于模型的搜索算法框架中,可行解通过在一个解空间参数化概率分布模型上的搜索产生,此模型的参数用以前产生的解来更新,使得在新模型上的搜索能够集中在高质量的解搜索空间内。

这种方法的有效性建立在高质量的解总是包含好的解构成元素的假设前提下。

通过学习这种解构成元素对解的质量的影响有助于找到一种机制,并通过解构成元素的最佳组合来构造出高质量的解。

一般来说,一个记忆模型的搜索算法通常使用以下两步迭代来解决优化问题:1)可行解通过在解空间参数化概率分布模型上的搜索产生。

2)用搜索产生的解来更新参数化概率模型,即更新解空间参数化概率分布的参数,使得在新模型上的参数搜索能够集中在高质量的解搜索空间内。

在蚁群算法中,基于信息素的解空间参数化概率模型(信息素模型)以解构造图的形式给出。

在解构造图上,定义了一种作为随机搜索机制的人工蚁群,蚂蚁通过一种分布在解构造图上被称为信息素的局部信息的指引,在解构造图上移动,从而逐步的构造出问题的可行。

信息素与解构造图上的节点或弧相关联,作为解空间参数化概率分布模型的参数。

由于TSP问题可以直接的映射为解构造图(城市为节点,城市间的路径为弧,信息素分布在弧上),加之TSP问题也是个NP难题,所以,蚁群算法的大部分应用都集中在TSP问题上。

一般而言,用于求解TSP问题、生产调度问题等优化问题的蚁群算法都遵循下面的统一算法框架。

算法1:求解组合优化问题的蚁群算法设置参数,初始化信息素踪迹While(不满足条件时)dofor蚁群中的每只蚂蚁for每个解构造步(直到构造出完整的可行解)1)蚂蚁按照信息素及启发式信息的指引构造一步问题的解;2)进行信息素局部更新。

(可选)endforendfor1)以某些已获得的解为起点进行邻域(局部)搜索;(可选)2)根据某些已获得的解的质量进行全局信息素更新。

endwhileend在算法1中,蚂蚁逐步的构造问题的可行解,在一步解的构造过程中,蚂蚁以概率方式选择信息素强且启发式因子高的弧到达下一个节点,直到不能继续移动为止。

此时蚂蚁所走过的路径对应求解问题的一个可行解。

局部信息素更新针对蚂蚁当前走过的一步路径上的信息素进行,全局信息素更新是在所有蚂蚁找到可行解之后,根据发现解的质量或当前算法找到的最好解对路径上的信息素进行更新。

3 蚁群算法与其他搜索算法比较3.1 蚁群算法与进化算法比较近年来,遗传算法(GA)、进化规划(Evolutionary Planning)、进化策略(Evolutionary Strategies)在理论和应用上发展迅速、效果显著并逐渐走向了融合,形成了一种新颖的模拟进化的计算理论,统称为进化计算(Evolutionary Computation)。

因此我们可以用进化计算作为代表与蚁群算法进行比较,从另一个角度来认识蚁群算法,加深对蚁群算法的理解。

蚁群算法与进化计算的相似之处有两点:首先,两种算法均采用群体表示问题的解;其次,新群体通过包含在群体中与问题相关的知识来生成。

两者的主要区别在于进化计算中所有问题的的知识都包含在当前群体中,而蚁群算法中代表过去所学的知识保存在信息素的踪迹中。

3.2 蚁群算法与模拟退火算法比较从模拟退火算法的搜索策略可以看出蚁群算法和模拟退火算法(SA)从本质上来讲是一致的。

SA对某个“固体的”一个微观状态i计算其能量E i的过程与蚂蚁的一次“周游”一样,都是对解空间的一次采样;“退火”与“分泌信息素”都是利用积累信息来增强对子空间的搜索;而“Metropolis准则”和“随机状态转移规则”类似,都是使算法能够跳出局部最优,在一定范围内接受恶化解,搜索新的子空间。

因此,SA已经非常成熟的收敛性研究对分析设置蚂蚁规模参数和信息素分布策略对最终解质量的影响有很大的借鉴意义。

对于SA的收敛性分析一般分两种情况,齐次Markov链和非齐次Markov链。

齐次Markov链的分析结果告诉我们,在任意温度t,SA都达到平衡分布的情况下,当t→0时,SA将收敛于全局最优。

也就是说,在任意温度t,SA都要遍历整个解空间。

那么,如果我们保留sA采样后的当前全局最优解,则即使在任何温度t,SA都会收敛于全局最优。

换句话说,对于蚁群算法,如果蚂蚁数量(规模)足够多,能够保证对解空间的遍历,那么即使不用信息素,也能保证全局收敛。

不过这种方法显然就是一种盲目随机搜索,没有任何实际的应用价值。

对于非其次Markov链的SA,即在某个固定温度t,采样次数有限,而t将无限趋近于0的情况下,结论告诉我们当控制参数序列满足一定条件时,SA才收敛于整体最优解集。

其更直接的表述方式是:控制参数t的衰减量与在温度t下的采样数之间存在一种均衡:t的衰减量越大,则在温度艺下的采样数就必须越多;反之,若t的衰减量缓慢,则在每个温度下SA只需进行少量采样。

那么。

从蚁群算法的角度可以看到:因为蚂蚁的规模实际上影响的只是信息素更新的频率,所以当规模设置较大时,每次更新信息素时,可以以较快的速度拉大不同状态上的信息素差距;当规模较小时,每次只对信息素进行少量更新,以免算法早熟。

由此可见,对蚁群算法的参数设置可以直接利用SA中对“冷却进度表”的研究成果。

此外,既然两者在本质上一致,那么SA的一些改进和变异可以直接用在蚁群算法上以改进其性能。

3.3 蚁群算法与神经网络比较由许多并发、局部交互的单元(人工蚂蚁)组成的蚁群,可以看成是一种“连接”系统。

“连接”系统最具代表性的例子是神经网络(Neural Network,简称NN)。

从结构上看,蚁群算法与通常的神经网络具有类似的并行机制。

蚂蚁访问过的每一个状态i对应于神经网络中的神经元i,与问题相关的状态i的邻域结构与神经元i中的突触连接相对应。

蚂蚁本身可以看成是通过神经网络的并发输入信号,以修改突触与神经元之间的连接强度。

信号经过随机转换函数的局部反传,使用的突触越多,两个神经元之间的连接越强。

蚁群算法中的学习规则可以解释为一种后天性的规则,即质量较好的解包含连接信号的强度高于质量较差的解。

4 基本蚁群算法及其实现4.1 引言蚁群在觅食过程中总能找到蚁巢和食物源之间的最短路径。

受蚂蚁的这种行为启发,意大利学者M.Dorigo、V.Maniezzo以及A.Colorni首先提出了一种新型的随机搜索模拟进化算法—蚂蚁系统(Ant System,简称As)。

AS算法是第一个蚁群算法的模型,被称为基本蚁群算法。

AS算法首先被用来求解TSP问题,并取得了巨大成功。

实验结果显示AS算法具有很强的发现较好解的能力,但同时也存在一些缺点,如收敛速度较慢、易出现停滞现象等等。

针对AS 算法的不足之处,许多学者对其进行了深入的研究,提出了一些改进的蚁群算法,如带精英策略的蚂蚁系统(Ant System With elitist strategy,简称AS elitist、蚁群系统(Ant Colorni System,简称ACS)、基于优化排序的蚂蚁系统(Rank-Based Version of Ant System,简称AS rank)、最大-最小蚂蚁系统(Max-Min Ant System,简称MMAS)以及最优-最差蚂蚁系统(Best-Worst Ant System,简称BW AS)等等。

4.2 蚂蚁系统的模型描述为了说明蚂蚁系统的模型,首先引入TSP问题。

一般地来说,旅行商问题(Traveling Salesman Problem,简称TSP问题)可以描述如下:设C={c l,c2,…,c n}为n个城市的集合,L= {L ij|c i、c j∈C }是c中元素两两连接的集合,G=(C,L)是一个图,已知各城市之间的距离,TSP问题的求解目的是从G中找出长度最短的Hamiltonian 圈,即找出对C={c l,c2,…,c n}中n个城市访问且只访问一次的最短的一条封闭曲线。

相关文档
最新文档