谭琼玲(永州职业技术学院,湖南永州425100)
摘要:算法是软件设计的灵魂,对粒子群优化算法、郭涛算法、蚁群算法、模拟退火算法等许多经典算法的分析,以期为今后的研究提供帮助。
关键词:粒子群优化算法;郭涛算法;蚁群算法;模拟退火算法
中国分类号:TP312文献标志码:A文章编号:1001-7836-
作者简介:谭琼玲(1971-),女,湖南衡山人,讲师,从事计算机应用技术教学与研究。
一、粒子群优化算法
(一)算法概述
粒子群优化算法(ParticleSwarmOptimization,PSO)是一种进化计算技术,由Eberhart博士和kennedy博士发明,源于对鸟群捕食的行为研究,粒子群优化算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解。PSO同遗传算法类似,但没有遗传算法复杂的编码和交叉、变异操作,而是粒子在解空间根据所处的情况进行搜索,没有遗传算法那样有许多参数需要调整,更易于实现,而且收敛速度快。
(二)算法思想
在PSO中,每个优化问题的解都是搜索空间中的一只鸟,鸟被抽象为没有质量和体积的微粒,并将其延伸到N维空间,粒子i在N维空间里的位置表示为一个矢量,每个粒子的飞行速度也表示为一个矢量,所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离.粒子们知道自己到目前为至发现的最好位置(pbest)和现在的位置,这个可以看做是粒子自己的飞行经验。除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest,gbest是pbest中的最好值),这个可以看做是粒子同伴的经验,粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
PSO初始化为一群随机粒子(随机解)。然后通过叠代找到最优解。在每一次叠代中,粒子通过跟踪两个"极值"来更新自己。第一个就是粒子本身所找到的最优解。这个解叫做个体极值pBest.另一个极值是整个种群目前找到的最优解。这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最为粒子的邻居,那么在所有邻居中的极值就是局部极值。
(三)程序的伪代码:
Foreachparticle
Initializeparticle
END
Do
Foreachparticle
Calculatefitnessvalue
Ifthefitnessvalueisbetterthanthebestfitnessvalue(pBest)inhistorysetcurrentvalueasthenewpBest
End
ChoosetheparticlewiththebestfitnessvalueofalltheparticlesasthegBest
Foreachparticle
Calculateparticlevelocityaccordingequation
Updateparticlepositionaccordingequation
End
Whilemaximumiterationsorminimumerrorcriteriaisnotattained
在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax。
二、郭涛算法(改进遗传算法)
(一)算法概述
遗传算法(GeneticAlgorithms,简称GA)是由美国Michigan大学的JohnHolland教授创建的。它来源于达尔文的进化论、魏茨曼的物种选择学说和孟德尔的群体遗传学说。其基本思想是模拟自然界遗传机制和生物进化论而形成的一种过程搜索最优解的算法。其特点是几乎不需要所求问题的任何信息,而仅需要目标函数的信息:不受搜索空间是否连续或可微的限制就可找到最优解。依据它的并行性非常适用于大规模并行计算机。因此遗传算法广泛的应用于自动控制、计算科学、模式识别、工程设计、智能故障诊断、管理科学和社会科学领域,适用于解决复杂的非线性和多维空间寻优问题。
遗传算法是建立在自然选择和群体遗传学机理基础上的随机迭代和进化,具有广泛适用性的搜索方法,具有很强的全局优化搜索能力。它模拟了自然选择和自然遗传过程中发生的繁殖、交配和变异现象,根据适者生存、优胜劣汰的自然法则,利用遗传算子(选择、交叉和变异)逐代产生优选个体(即候选解),最终搜索到较优的个体。
(二)算法思想
先任意产生n个随机数,然后从n个数里随机选择m个数,再有这m个数合成一个新数,将这个新数同n个数中间适应值函数值的最差的比较,如果好的话就取代最差的那个,如果它比最好的还要好的话,则把最好的也取代。如果比最差的坏,则重新合成一个新数。依次循环下去。
三、模拟退火算法
(一)算法概述
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表(CoolingSchedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S。
(二)算法思想
(1)初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点),每个T值的迭代次数L
(2)对k=1,……,L做第(3)至第6步:
(3)产生新解S′
(4)计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数
(5)若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当前解。
(6)如果满足终止条件则输出当前解作为最优解,结束程序。终止条件通常取为连续若干个新解都没有被接受时终止算法。
(7)T逐渐减少,且T->0,然后转第2步。
(三)简单应用
作为模拟退火算法应用,讨论货郎担问题(TravellingSalesmanProblem,简记为TSP):设有n个城市,用数码1,…,n代表。城市i和城市j之间的距离为d(i,j)i,j=1,…,n.TSP问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短。
模拟退火算法的应用很广泛,可以求解最大截问题(MaxCutProblem)、0-1背包问题(ZeroOneKnapsackProblem)图着色问题(GraphColouringProblem)、调度问题(SchedulingProblem)等等。
四、蚁群算法
(一)算法概述
蚁群算法(antcolonyoptimization,ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型技术。它由MarcoDorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。蚁群算法是一种模拟进化算法。初步的研究表明该算法具有许多优良的性质。针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。蚁群算法是一种求解组合最优化问题的新型通用启发式方法,该方法具有正反馈、分布式计算和富于建设性的贪婪启发式搜索的特点。正因为蚁群算法有这些优点,很多研究者都在致力研究和改过它,本文的目的正是为了介绍蚁群算法,学习如何编写蚁群算法。
(二)算法应用
昆虫世界中,蚂蚁的组成是一种群居的世袭大家庭,我们称之为蚁群。蚂蚁分为世袭制的蚁王(后)和工蚁两种,它们具有高度组织的社会性,彼此沟通不仅可以借助触觉和视觉的联系,在大规模的协调行动中还可以借助外激素(有些书称信息素)之类的信息介质。
首先我们要理解蚂蚁是如何觅食的,蚂蚁平时在巢穴附近作无规则行走,一量发现食物并不立即进食而是将之搬回蚁穴与其他蚂蚁分享,在食物小时则独自搬回蚁穴,否则就回蚁穴搬兵,一路上会留下外激素,食物越大外激素的浓度就越大,越能吸引其他的蚂蚁过去一起搬去食物,这样最终就能将食物全部搬回蚁穴。这个过程用程序实现看似非常复杂,要编写一个“智能”的蚂蚁也看似不太可能,事实上每个蚂蚁只做了非常简单的工作:检查某个范围内有无食物,并逐渐向外激素浓的方向运动。简而言之,蚁群运动无非是同时反复执行多个简单规则而已。下面详细说明蚁群中的这些简单规则:
1.范围:蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并且能移动的距离也在这个范围之内。
2.环境:蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有外激素,外激素有两种,一种是找到食物的蚂蚁洒下的食物外激素,一种是找到窝的蚂蚁洒下的窝的外激素。每个蚂蚁都仅仅能感知它范围内的环境信息,环境以一定的速率让外激素消失。
3.觅食规则:在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。否则看是否有外激素,并且比较在能感知的范围内哪一点的外激素最多,这样,它就朝外激素多的地方走,并且每只蚂蚁多会以小概率犯错误,从而并不是往外激素最多的点移动。蚂蚁找窝的规则和上面一样,只不过它对窝的外激素做出反应,而对食物外激素没反应。
4.移动规则:每只蚂蚁都朝向外激素最多的方向移,并且,当周围没有外激素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下去,并且,在运动的方向有一个随机的小的扰动。为了防止蚂蚁原地转圈,它会记住最近刚走过了哪些点,如果发现要走的下一点已经在最近走过了,它就会尽量避开。
5.避障规则:如果蚂蚁要移动的方向有障碍物挡住,它会随机地选择另一个方向,并且有外激素指引的话,它会按照觅食的规则行为。
6.播撒外激素规则:每只蚂蚁在刚找到食物或者窝的时候撒发的外激素最多,并随着它走远的距离,播撒的外激素越来越少。
根据这几条规则,蚂蚁之间并没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过外激素这个纽带,实际上把各个蚂蚁之间关联起来了。比如,当一只蚂蚁找到了食物,它并没有直接告诉其他蚂蚁这儿有食物,而是向环境播撒外激素,当其他的蚂蚁经过它附近的时候,就会感觉到外激素的存在,进而根据外激素的指引找到了食物,成功的觅食算法正是最小化搜索食物的时间。
参考文献:
[1]苑玮琦,郑潇.智能选取滤波器的方向图滤波算法[J].光电工程,2006,(33):91-95.
[2]LinHong、YifeiWan、AnilJain,FingerprintImageEnhancement:AlgorithmandPerformanceEvaluation[J].IEEETrans.onPatternAnalysisandMachineIntelligence,1998,20(8):777-789.
[3]曾洪波,汪国有,张天序.基于连续方向图的指纹智能预处理算法[J].红外与激光工程,2001,30(6):426-431.
[4]AnilJain,LinHong,RuudBolle.On-LineFingerprintVerification[J].IEEETrans.onPatternAnalysisandMachineIntelligence,1997,19(4):302-313.
[5]韩伟红,黄子中,王志英,指纹自动识别系统中的预处理技术[J].计算机研究与发展,1997,34(12):913-920.