蚁群算法

一、总览

蚁群算法是一种用来寻找优化路径的概率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。 [1] 

这种算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。

1.1 背景

蚁群系统(Ant System或Ant Colony System)是由意大利学者Dorigo、Maniezzo等人于20世纪90年代首先提出来的。他们在研究蚂蚁觅食的过程中,发现单个蚂蚁的行为比较简单,但是蚁群整体却可以体现一些智能的行为。例如蚁群可以在不同的环境下,寻找最短到达食物源的路径。这是因为蚁群内的蚂蚁可以通过某种信息机制实现信息的传递。后又经进一步研究发现,蚂蚁会在其经过的路径上释放一种可以称之为“信息素”的物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓度较高路径行走,而每只路过的蚂蚁都会在路上留下“信息素”,这就形成一种类似正反馈的机制,这样经过一段时间后,整个蚁群就会沿着最短路径到达食物源了。

1.2 原理

将蚁群算法应用于解决优化问题的基本思路为:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的信息素量较多,随着时间的推进,较短的路径上累积的信息素浓度逐渐增高,选择该路径的蚂蚁个数也愈来愈多。最终,整个蚂蚁会在正反馈的作用下集中到最佳的路径上,此时对应的便是待优化问题的最优解

1.3 实现

蚂蚁找到最短路径要归功于信息素和环境,假设有两条路可从蚁窝通向食物,开始时两条路上的蚂蚁数量差不多:当蚂蚁到达终点之后会立即返回,距离短的路上的蚂蚁往返一次时间短,重复频率快,在单位时间里往返蚂蚁的数目就多,留下的信息素也多,会吸引更多蚂蚁过来,会留下更多信息素。而距离长的路正相反,因此越来越多的蚂蚁聚集到最短路径上来。

蚂蚁具有的智能行为得益于其简单行为规则,该规则让其具有多样性和正反馈。在觅食时,多样性使蚂蚁不会走进死胡同而无限循环,是一种创新能力;正反馈使优良信息保存下来,是一种学习强化能力。两者的巧妙结合使智能行为涌现,如果多样性过剩,系统过于活跃,会导致过多的随机运动,陷入混沌状态;如果多样性不够,正反馈过强,会导致僵化,当环境变化时蚁群不能相应调整。

1.4流程图

 

 

 

1.5 算法终止条件
1、算法已经找到与最优解的距离在预定义范围内的一个解
2、算法已经探索的路径数目达到最大值,或者算法执行的迭代次 数达到最大值
3、程序执行的CPU时间达到最大值
4、算法陷入停滞状态

1.6 算法缺点
1、收敛速度慢
2、易于陷入局部最优

 

二、代码分析

 

 迭代

 

 结果导出

 

 三、实验结果

3.1

 

 

 

 

 图一上的编号是随机生成点的,并非路线的顺序,文字标出的起点和终点才是确定的是起点和终点的顺序。
如图所示,从第13个点出发再从第20个点回来的路线总和最短

 

 

 

 从图二上可以看出直到100代左右才能达到最短距离的稳定值

 

3.2

 

 

 

 

 

 

 

 

 

如图所示,从第20个点出发再从第13个点回来的路线总和最短

 从图二上可以看出直到90代左右就能达到最短距离的稳定值了

总体来看,蚁群数量减少导致更早达到稳定值,因此结果不够精确。

 3.3

 

 

 

 

 

 

 

 

 

如图所示,从第21个点出发再从第16个点回来的路线总和最短

 从图二上可以看出到55代左右就能达到最短距离的稳定值

3.4

 

 

 

 

 

 

如图所示,从第11个点出发再从第9个点回来的路线总和最短

 从图二上可以看出到50代左右就能达到最短距离的稳定值

保持启发函数重要程度因子信息素挥发因子不变

改变信息素重要程度因子改为5和9来观察两幅图的变化。

当其值为5时,最优路径比1时变大,当其值为9时候,最优路径虽然也增大大,但是增大幅度不高。

结论:可见信息素重要程度因子越大,蚂蚁选择之前走过的路径的可能性就越大,搜索路径的随机性减弱。其值越小,蚁群搜索范围就会减少,容易陷入局部最优值。
3.5

 

 

 

 

 

 

 

 

 

如图所示,从第8个点出发再从第6个点回来的路线总和最短

 从图二上可以看出到140代左右能达到最短距离的稳定值

3.6

 

 

 

 

 

 

 

 

 

如图所示,从第27个点出发再从第19个点回来的路线总和最短

 从图二上可以看出到60代左右就能达到最短距离的稳定值,但其实在15代左右开始数值已变化不大

保持信息素重要程度因子信息素挥发因子不变。

改变启发函数重要程度因子改为1和9来观察两幅图的变化。

发现,当其值为1时,迭代的优化效果差很多,最终收敛的时间非常长。

当其值为9时候,最优值几乎稳定在同一个数值,变化幅度很小。

可见当其值越大,蚁群就越容易选择局部较短的路径,算法的收敛速度会加快,但是随机性不高,容易得到局部的相对最优解。
3.7

 

 

 

 

 

 

 

3.8

 

 

 

 

 

 

保持信息素重要程度因子启发函数重要程度因子不变。

改变信息素挥发因子改为0.3和0.9来观察两幅图的变化。

当其值改为0.3的时候其最小值没有变化,改变的只有迭代次数和收敛速度。

因为当其值不大的时候,在各路径上残留的信息素过多,导致无效的路径继续被搜索,影响到算法的收敛速度。

但当其值等于0.9时,变得比0.3时大了一些,因为当其过大时,无效的路径虽然可能被排除搜索但不能保证有效的路径也被放弃搜索,影响到了最优值的选取。
四、结论

蚂蚁数量为城市数量的1-2倍,信息因子为1-4合适,避免信息素过多,陷入局部最优解
启发函数重要程度因子为4-6合适,避免收敛过快
信息素挥发因子为0.2-0.4合适,避免会导致搜索能力降低

posted @ 2019-11-05 20:28  zzb1234  阅读(1001)  评论(0编辑  收藏  举报