初识蚁群算法

蚁群算法(ant colonyoptimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。

各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物。当一只找到食物以后,它会向环境释放一种挥发性分泌物pheromone (称为信息素,该物质随着时间的推移会逐渐挥发消失,信息素浓度的大小表征路径的远近)来实现的,吸引其他的蚂蚁过来,这样越来越多的蚂蚁会找到食物。有些蚂蚁并没有像其它蚂蚁一样总重复同样的路,他们会另辟蹊径,如果另开辟的道路比原来的其他道路更短,那么,渐渐地,更多的蚂蚁被吸引到这条较短的路上来。最后,经过一段时间运行,可能会出现一条最短的路径被大多数蚂蚁重复着。

 

实现步骤:

1.      首先要初始化一群蚂蚁和信息素。

2.      在刚开始每一只蚂蚁的时候按照一个随机规则走下一步,并在走过的路径上播撒信息素,同时环境以一定的速率让信息素消失(信息素的挥发)。当有一只蚂蚁走到终点是时候,更新所有路径上的信息素。

3.      随着信息素的积累,蚂蚁们便会跟随信息素的引导走向同一条路,但是也会有一定的概率犯错(没有走信息素最多的路),这样他就会另辟一条新的路径。如果,新的路径比之前的路径更优,这条路径上的信息素会提高,吸引更多蚂蚁走这一条路径。

4.      这样循环往复,蚂蚁们就有可能走出一条最优路径。

 

蚁群算法最核心的东西就是蚂蚁们觅食规则和信息素的更新方式。蚂蚁觅食规则一定要在信息素的引导下(信息素越大的点越容易被经过),但是又要有一定的犯错概率,以便发现更优的解。信息素的更新最主要的是,信息素的积累快慢和更新方式。如果信息素过快的积累,容易导致算法的早产,在还没有发现最优解的情况下就停止了。如果信息素积累的过慢,容易让算法陷入局部最优解而跳不出来,从而导致算法时间过长,收敛速度慢,甚至不收敛。

信息素的更新方式主要有两种:离线方式(同步更新方式)的主要思想是在若干只蚂蚁完成所有路径的访问之后,统一对残留信息进行更新处理。信息素的在线更新(异步更新方式)即蚂蚁每行走一步,立即回溯并且更新行走路径上的信息素。

蚁群算法是信息素积累的公式:

初识蚁群算法_第1张图片

式(2-1)、式(2-2)和式(2-3)中:m为蚂蚁个数;n为迭代次数;i为蚂蚁所在位置;j为蚂蚁可以到达的置; 为蚂蚁可以到达位置的集合; 为启发性信息,这里为由i到j的路径的能见度,即为目标函数,这里为两点间开销(可能是距离); 为由i到j的路径的信息素强度; 为蚂蚁k由i到j的路径上留下的信息素数量; 为路径权; 为启发性信息的权; 为路径上信息素数量的蒸发系数;Q为信息素质量系数; 为蚂蚁k从位置i移动到位置j的转移概率。

蚁群算法被广泛的应用在NP-hard问题中,比如TSP(travel salesman problem)。给你一个城市群,你要访问里面所有的城市但是每个城市只能访问一次,找出一条最优的路径,让你的总路径最短。

初识蚁群算法_第2张图片

蚁群算法的优点是在参数合理的情况下,能够快速找到一条最优路径。但是在遇到大规模的城市群时,蚁群算法往往很容易出现早产或者信息素更新停滞的现象,这样就很难找到最优解了。

对于蚁群算法出现的上述问题,我们现在有几种改进的方法。

1.      精英蚁群系统(Elitist Ant System,EAS):

精英蚁群系统,顾名思义,就是对最优秀的路径进行额外的信息素加强。以提高收敛速度。

初识蚁群算法_第3张图片

式(3-6)表示信息素增加强度定义方法,和以前的相同,是调整最优解的影响权重的参数,适当的设置该参数的值可以提高算法的性能。式(3-7)表示精英蚂蚁给路径(i,j)上所增加的信息素量。

2. 最大最小蚁群系统(Max-Min AntSystem,MMAS)

        “最大最小蚁群系统”是德国学者Thomas Stutzle 等提出的另一种通用性较强的改进的蚁群算法。该算法相比基本蚁群算法作了如下一些改进:

        1)一次循环结束后,并不是所有的蚂蚁都进行信息素更新,而是只对一只蚂蚁的信息素进行更新。这只蚂蚁只能是两类蚂蚁:在当前循环中找到最优解的蚂蚁或者是可能          发现已知最优路径的蚂蚁。其信息素更新依照如下规则:         

初识蚁群算法_第4张图片

         式 (3-9)中 根据进行信息素更新的蚂蚁的类别可以是已知的最优解的路径长度或者是本次循环中的最优解的路径长度。

         2)信息素浓度的限制。

        为了防止某条路径上的信息素出现大或者过小的极端情况,设定信息素浓度区间为 。通过这种方式使得在某条路径上的信息素浓度增大到超过区间上限或者减小到低于区           间下限时,算法采用强制手段对其进行调整,以此提高算法的有效性。

        为了在开始吸引更多的蚂蚁进行搜索,信息素浓度初始化的值不再是一个常数,而是设置为区间的上限,并且选定一个较小的挥发系数,以此来得到更多的搜索路径。

 

蚁群算法的应用进展以蚁群算法为代表的蚁群智能已成为当今分布式人工智能研究的一个热点,许多源于蜂群和蚁群模型设计的算法己越来越多地被应用于企业的运转模式的研究。美国五角大楼正在资助关于群智能系统的研究工作-群体战略(Swarm Strategy),它的一个实战用途是通过运用成群的空中无人驾驶飞行器和地面车辆来转移敌人的注意力,让自己的军队在敌人后方不被察觉地安全进行。英国电信公司和美国世界通信公司以电子蚂蚁为基础,对新的电信网络管理方法进行了试验。群智能还被应用于工厂生产计划的制定和运输部门的后勤管理。美国太平洋西南航空公司采用了一种直接源于蚂蚁行为研究成果的运输管理软件,结果每年至少节约了1000万美元的费用开支。英国联合利华公司己率先利用群智能技术改善其一家牙膏厂的运转情况。美国通用汽车公司、法国液气公司、荷兰公路交通部和美国一些移民事务机构也都采用这种技术来改善其运转的机能。鉴于群智能广阔的应用前景,美国和欧盟均于近几年开始出资资助基于群智能模拟的相关研究项目,并在一些院校开设群体智能的相关课程。国内,国家自然科学基金‘十五’期间学科交叉类优先资助领域中的认知科学及其信息处理的研究内容中也明确列出了群智能领域的进化、自适应与现场认知主题。

你可能感兴趣的:(算法学习)