大自然的每一个领域都是美妙绝伦的。——古希腊亚里士多德《杂谈》
学校子衿广场那边的花坛来了一窝新的蚂蚁。路过可以看到旁边有一堆土
起初还以为是哪个人特意撒的,然后观察了两天发现是蚂蚁们在挖新窝把土搬出来,这么一小堆得干了好久。一个个小蚂蚁把一粒粒土运到白圈画的地方,
还有两个蚂蚁还会头顶头交流一会,还有蚂蚁跑了很远无功而返,估计划水去了
概念
蚁群算法,优化算法的一种。擅长解决组合优化问题。例如著名的旅行商问题(TSP)、工序排序问题、图着色问题,网络路由问题等等。
基本思想:根据蚁群觅食行为而得来的一种算法
蚂蚁的视力并不是很好,但是他们又是凭借什么区寻找到距离食物的最短路径的呢?
单只蚂蚁的觅食行为貌似是杂乱无章的,但是据昆虫学家观察,蚁群在觅食时总能够找到离食物最近的路线,这其中的原因是什么呢?经过研究发现,每一只蚂蚁在觅食的过程中,会在沿途释放出一种叫做信息素的物质。其他蚂蚁会察觉到这种物质,因此,这种物质会影响到其他蚂蚁的觅食行为。当一些路径上经过的蚂蚁越多时,这条路径上的信息素浓度也就越高,其他蚂蚁选择这条路径的可能性也就越大,从而更增加了这条路径上的信息素浓度。当然,一条路径上的信息素浓度也会随着时间的流逝而降低。这种选择过程被称之为蚂蚁的自催化行为,是一种正反馈机制,也可以将整个蚁群认定为一个增强型学习系统。
觅食行为图解
A点为一个蚁穴,设定其中有两只蚂蚁,蚂蚁1和蚂蚁2。C点为食物所在位置,B点只是路径上的一点。假设ABC形成一个等边三角形,且两只蚂蚁的移动速度均相同。
如此往复,ABC路径的信息素浓度会越来越低,AC路径上的信息素浓度会越来越高,所以ABC路径上将没有蚂蚁再次经过,两只蚂蚁都只会选择路径较短的AC线路去搬运食物。
数学模型
了解到蚁群算法最基本的知识,我决定深入学习一下它的实现,以下是我对其数学模型简单学习后的总结。
TSP(Traveling Salesman Problem)问题,中文叫做旅行商问题:假设一个旅行商人,他要遍历n个城市,但是每个城市只能遍历一次,最终还要回到最初所在的城市,要求制定一个遍历方案,使经过的总路程最短。
m:蚂蚁数量,约为城市数量的1.5倍。如果蚂蚁数量过大,则每条路径上的信息素浓度趋于平均,正反馈作用减弱,从而导致收敛速度减慢;如果过小,则可能导致一些从未搜索过的路径信息素浓度减小为0,导致过早收敛,解的全局最优性降低
α:信息素因子,反映了蚂蚁运动过程中积累的信息量在指导蚁群搜索中的相对重要程度,取值范围
通常在[1,4]之间。如果信息素因子值设置过大,则容易使随机搜索性减弱;其值过小容易过早陷入局部最优β:启发函数因子,反映了启发式信息在指导蚁群搜索中的相对重要程度,取值范围在[3 ,
4.5]之 间。如果值设置过大,虽然收敛速度加快,但是易陷入局部最优;其值过小,蚁群易陷入纯粹的随机搜索,很难找到最优解ρ:信息素挥发因子,反映了信息素的消失水平,相反的反映了信息素的保持水平,取值范围通常在[0.2 ,
0.5]之间。当取值过大时,容易影响随机性和全局最优性;反之,收敛速度降低Q:信息素常数,表示蚂蚁遍历一次所有城市所释放的信息素总量。越大则收敛速度越快,但是容易陷入局部最优;反之会影响收敛速度
n:城市数量
蚁群算法解决TSP问题的流程
(todo)程序代码
todo: