计算机科学与技术毕业设计随机蛙跳算法的研究与实现.docx
- 文档编号:28652186
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:33
- 大小:235.94KB
计算机科学与技术毕业设计随机蛙跳算法的研究与实现.docx
《计算机科学与技术毕业设计随机蛙跳算法的研究与实现.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术毕业设计随机蛙跳算法的研究与实现.docx(33页珍藏版)》请在冰豆网上搜索。
计算机科学与技术毕业设计随机蛙跳算法的研究与实现
本科毕业论文
题
目
随机蛙跳算法的研究与实现
作者:
胡云辰
专业:
计算机科学与技术
指导教师:
丁卫平
完成日期:
2011年6月
摘要
随机蛙跳算法(ShuffledFrogLeapingAlgorithm,SFLA)是进化计算领域中一种新兴、有效的亚启发式种群算法,它结合了具有较强局部搜索能力的元算法(MemeticAlogrithm,MA)和具有良好全局搜索性能的粒子群算法(ParticleSwarmOptimization,PSO)的优点,算法寻优能力强,易于编程实现,由Eusuff和Lansey于2003年正式提出,近几年来逐渐受到学术界和工程优化领域的关注。
本文首先介绍了随机蛙跳算法的理论基础-粒子群优化算法及其两者之间的关系;然后总结了随机蛙跳算法的基本原理、算法流程;及在背包求解问题上的应用。
在上述研究基础上提出了一种带有电荷的改进随机蛙跳算法(QSFLA)和一种基于最差扰动的改进随机蛙跳算法(WDSFLA),并通过实验对以上述两种算法进行了仿真测试和分析。
本课题对进一步研究和改进随机蛙跳算法提供了一定的参考价值。
关键词随机蛙跳算法,亚启发式算法,粒子群优化算法,工程优化,背包问题,
最差扰动
ABSTRACT
ShuffledFrogLeapingAlgorithmisanemergingeffectivesub-heuristicinthefieldofevolutionarycomputation,whichcombinestheadvantagesofMemeticAlgorithmandParticleSwarmOptimization,whichhasstronglocalsearchandglobalsearchability.Soitisgoodatsearchingforthebestandiseasytobeprogrammed.ItisraisedformallybyEusuffandLanseyin2003andbecomegraduallypopularthefieldofacademicandoptimizationinrecentyears
Firstly,thispaperdescribesthetheoreticalbasisofshuffledfrogleapingalgorithm-ParticleSwarmOptimizationandtheirrelationship.Thensummarizethebasicprincipleandflowofshuffledfrogleaping.Nextwesolveproblemsabouttheapplicationonpackingbags. Basedontheabovestudy,weraisetwonewshuffledfrogleapingalgorithm:
animprovedshuffledfrogleapingwithachargeonitandanewshuffledfrogleapingalgorithmbasedonworstdisturbance.Thesimulationsandanalysisaboutthenewalgorithmsaredonebyexperiment.
Thesubjectprovidesacertainreferencevalueforthefurtherstudyandimprovementofshuffledfrogleapingalgorithm
KeyWords:
ShuffledLeapingFrogAlgorithm,Sub-heuristicAlgorithm,Engineering
Optimization,Knapsackproblem,ParticleSwarmOptimization,Worst
Disturbance
第1章绪论
1.1课题研究的目的意义
社会和科技的飞速发展,已使模拟或者部分模拟生物群体的生命活动成为可能。
目前,人们正着力研究具有某些生命基本特征的人工系统,或者通过抽取生物现象中的基本动力规则来进一步理解生命,并且在物理媒体如计算机上重建这些现象,使它们成为一种新的实验方式或受操纵的实验系统。
眼下已有很多源于生物现象的计算技巧,例如神经网络和遗传算法。
在信息的传递方面。
如何在让信息更加快捷有效的传递给其他人,也是我们所要考虑的。
随机跳蛙算法(SFLA)是一种基于种群的亚启发式协同搜索算法,算法的执行过程是模拟自然界的元进化行为。
作为一种全新的优化计算方法,SFLA以随机联合体进化算法(ShuffledComplexEvolution,SCE)作为广度搜索的执行框架,结合了基于遗传基因的元进化算法(MemeticAlgorithm,MA)及基于群体觅食行为的粒子群算法(ParticleSwarmOptimization,PSO)的特点,具有易于理解、易于编程实现及寻优能力强等优势。
SFLA的执行过程模拟了一群青蛙(解)在一片湿地上(解空间)中跳动觅食的行为。
(如图(1.1)所示):
Group1
Group2
Frogn
Group3
Frog1
Frog2
搜索空间:
每个种群先进行局部搜索之后,各个种群再进行信息交换
Groupn
图1.1基本随机蛙跳算法基本思想示意图
每一只青蛙在觅食行为中被看作元或思想的载体,每只青蛙可以与其他青蛙交流思想并且可以通过传递信息的方式来改进其他蛙的元信息,这些信息可以通过诸如模仿等行为在人脑中行进传递。
元信息的例子很多,包括歌曲、思想、信息、格言以及服装时尚等。
元信息的传播方式有很多种,譬如一个学者在听到或者看到一些有价值的信息时,可以把信息传播给他的学生或者同事,可以再特的文章中或其将手的课程中提及这些信息。
在SFLA中,元信息的改变是通过改变个体的位置来实现的。
在算法执行初期,一群蛙被分为多个族群,不同的族群被认为是具有不同思想的青蛙的集合。
族群中的蛙按照一定的元进化策略,采用类似粒子群算法的进化方法,在解空间中进行局部深度搜索及内部思想交流。
这一过程不断重复演进,直到预先定义的收敛性条件得到满足为止。
全局性的信息交换和内部思想交流机制的结合,使得算法具有避免过早陷入局部极值点的能力,从而指引算法搜索过程向着全局最优点的方向进行搜索。
SFLA虽然已对多种优化问题取得了很好的求解效果,并在诸多应用研究领域都取得了长足的发展,但远未达到成熟的阶段,还有很多问题值得深入的分析与探讨。
首先,算法是否存在统一的参数?
如果不存在,如何合理设置针对不同问题的参数组合?
其次,算法在求解最优值处于边界值点上的问题时并非十分有效,如何进行解决?
这些问题都需要学者们在今后的研究中做进一步探讨。
此外,与其他优化算法一样,关于SFLA理论方面的研究尚显不足,进一步的理论研究应侧重于算法收敛性、收敛速度、鲁棒性及算法模型改性等方面。
总体看来,SFLA算法扩展了智能优化算法的领域,提供了求解优化问题的新思路,具有巨大的科研价值和应用潜力。
本课题主要对经典SFLA算法进行研究和编程实现,并对其典型问题进行探讨、分析等,接着对于目前算法中存在的不足提出一些改进策略,最后根据自己的成果完成一篇毕业论文。
1.2课题研究现状
算法的提出时间不长,无论在理论还是实践方面都处于起步阶段。
在学者们的不断努力下,近年来这种算法不断得到完善和广泛的工程应用,如函数优化、地下水管网优化设计、齿轮问题、旅行商问题、下料问题等,进一步证明它在解决优化问题上的优越性。
然而,与其他的智能优化算法一样,SFLA同样存在易收敛到局部最优、在求解部分函数优化问题时效果不够理想的缺陷。
根据没有免费的午餐(nofreelunch,NFL)定理:
从解决实际问题的角度出发,融合不同类型的优化算法,充分发挥它们各自的优势是解决问题的必然发展趋势。
为提高算法性能,又有学者利用青蛙间的吸引与排斥机制对算法的更新策略作了适当的修正。
函数仿真结果表明,改进后的SFLA克服了基本SFLA收敛缓慢、易陷入局部最优以及求解质量不高的缺点,验证了算法的可行性和有效性。
最初,2003年,Eusuff和Lansey[1]在研究资源网络优化时,将随机蛙跳算法实验性地应用在了求解水资源网络的管径选择和管网扩张问题[2]中。
在原文中,他们将表示管径类型的一串整数值构成解向量,将随机蛙跳算法作为优化工具,并用EPANET检验了整个过程的约束性。
通过与类似文献的比较,作者有力地展示了随机蛙跳算法在解决这一类问题上的优越性,并给出了解决此类问题时的相关参数设置情况。
接着,2005年,Elbeltagi[3]等人对随机蛙跳算法、遗传算法、粒子群优化算法、蚁群算法及元算法进行了比较,详细描述了各种算法,给出了各个算法的简单实现过程的伪码及合理化的参数组合。
采用F8和F10这两个具有连续变量的函数,评价了随机蛙跳算法的计算性能,结果显示随机蛙跳算法在F10函数的求解方面性能不够理想,在F8函数的求解上性能优于遗传算法,与粒子群优化算法的性能相近。
3年后,我国的学者对随机蛙跳算法进行了改进,将算法中的个体认知能力部分的公式进行了修改。
通过对4个具有连续变量的标准函数的测试表明,改进后的SFLA算法在达优率、计算时间和达到最优值所需要的函数评价次数方面都得到了显著改善。
从而使随机蛙跳算法在连续优化方面达到了一个新的高度。
近来,2008年,随机蛙跳算法在类聚问题方面也取得了可喜的突破。
首先是Yang等[5]采用随机蛙跳与遗传的混合算法求解了基于聚类的基因选择问题,取得了较好的结果。
然后,Amili[14]等人采用随机蛙跳算法求解了K均值聚类问题。
通过多组数据集对算法的求解效果进行了测试,并与其他4种算法进行了比较,结果显示随机蛙跳算法的目标函数值(距离矩阵中所有数值和的最小值)明显优于其他算法的目标值。
此外,他们还系统地测试了算法参数组合,给出了算法的最佳参数组合[5]。
除了上面提到的,Elbeltagi、李海英[6]等人还不断地对随机蛙跳算法进行改进,不断地调整算法中的参数组合,通过表水模型标定问题、通过与遗传算法比较,来说明随机蛙跳算法算法的有效性。
使其在离散优化问题方面更加适用。
修改后的SFLA具有更好的柔性框架,其中的各种机制都可以用多种算法予以实现。
目前,改进后的SFLA已经在许多领域得到了应用,譬如水资源网络优化问题、连续优化问题、成品油管网优化问题、离散优化问题、聚类问题[7]、双准则带缓冲区的流水车间调度问题、TSP问题以及多变量PID控制器参数调节问题等。
在短短的几年内,SFLA引起了学术界的广泛关注,成为了国际优化计算领域的研究热点之一,亦逐渐成为解决实际工程优化问题的热门工具。
关于随机蛙跳算法的相关应用已经涉及资源网络优化问题、TSP问题、离散优化问题、聚类问题、流水车间调度问题、连续优化问题、工业装配线排序问题、以及参数调节问题等。
本小节重点对其中的几种应用展开论述。
1.3论文主要工作
本文主要工作有以下几个方面:
(1)介绍了随机蛙跳算法的理论基础:
粒子群优化算法的基本概念和过程。
从知识角度对其进行了分析,归纳了两者之间的联系。
(2)总结了随机蛙跳算法的基本原理和流程,接着将其运用到背包问题的求解中去,并且做出一定的数值分析。
(3)针对目前基本的随机蛙跳算法不能充分反映群体智能的问题提出了一些改进思路和方法,并结合实例对改进的算法进行分析和验证。
1.4论文章节安排
论文的结构与章节安排如下:
第一章绪论。
介绍了论文研究目的和意义,分析了目前国内外研究动态,并简要描述了本文主要的工作以及各章节安排。
第二章粒子群优化算法的基本理论。
介绍了经典的粒子群优化算法,分析了该算法的优点,以及在实际运用方面的优势。
最后,结合实例阐述其与随机蛙跳算法的区别与联系。
说明随机蛙跳算法对粒子群优化算法的补充与完善。
第三章随机蛙跳算法的基本理论及应用。
正式绍随机蛙跳算法,指出该算法是对于粒子群优化算法的补充与优化。
并对于一些经典的随机蛙跳算法的应用加以分析与实现。
第四章随机蛙跳算法在背包问题求解方面的应用。
本章重点介绍了基本随机蛙跳算法在求解背包问题方面的具体应用,并给出了相关的伪代码,最后设置相关的参数对其进行数值测试。
第五章改进的随机蛙跳算法研究。
深入分析随机蛙跳算法的相关参数,指出其在反映种群的智能行为方面还有提升空间。
对此提出一些自己的改进意见,并赋予相关参数加以测试与分析。
第六章结束语。
对整个论文工作进行了总结,并对随机蛙跳算法的未来发展算进行了展望。
第2章粒子群优化算法基本理论
2.1粒子群优化算法概述
粒子群优化算法(ParticleSwarmoptimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。
是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。
通常认为它是群集智能(Swarmintelligence,SI)的一种。
它可以被纳入多主体优化系统(MultiagentOptimizationSystem,MAOS).粒子群优化算法是由Eberhart博士和kennedy博士发明。
粒子群优化算法模拟鸟群的捕食行为。
一群鸟在随机搜索食物,在这个区域里只有一块食物。
所有的鸟都不知道食物在那里。
但是他们知道当前的位置离食物还有多远。
那么找到食物的最优策略是什么呢。
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
粒子群优化算法从这种模型中得到启示并用于解决优化问题。
算法中,每个优化问题的解都是搜索空间中的一只鸟。
我们称之为“粒子”。
所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。
然后粒子们就追随当前的最优粒子在解空间中搜索。
粒子群算法自问世以来,由于算法形式简洁,容易编程,应用广泛,同时也由于它易陷入局部极值,必须进一步改进,然后在一定程度上可以增强其优化性能,深受业内人士的重视。
现阶段研究粒子群优化算法的性能改进,主要集中在各种机制的改进,得出一种新的算法,提高了优化性能,求解实际问题。
例如:
有研究者借鉴遗传算法的思想提出了混合PSO算法(HybridPSO)的概念。
由于PSO搜索过程很大程度上依赖Pbest和Gbest,它的搜索区域受到了这两个极值的限制,混合PSO算法就将PSO基本算法和遗传算法的选择机制相结合,以提高算法的性能。
Angeline[8]副将演化计算所采用的自然选择机制引入PSO,提高PSO的局部搜索能力,但同时削弱了全局搜索能力;Noel[9]等人将梯度信息引入PSO算法,主要是利用梯度信息使算法搜索到局部最优点,最大特点是不需要邻居结构,可节省标准PSO算法需要比较的计算量,加快了收敛速度;Wachowiak[10]等人提出将Powell[10]方法嵌人PSO算法中,以提高解的精度;Parsopoulos[11]等人提出采用非线性单纯形方法(NSM)去初始化PSO;Shi[12]等人介绍了两种混合GA和PSO的方法:
PSO-GA并行混合进化算法(PGPHEA)和PSOGA串行混合进化算法(PGSHE),混合PSO算法由于局部搜索能力增强,在一定程度上可找到最优点,且可克服早熟收敛问题,但是以增加计算时间为代价。
2.2粒子群优化算法基本执行过程
执行该算法首先要进行的是算法的初始化。
即:
初始化为一群随机粒子(随机解),然后通过叠代找到最优解,在每一次叠代中,粒子通过跟踪两个“极值”来更新自己。
第一个就是粒子本身所找到的最优解,这个解叫做个体极值pbest,另一个极值是整个种群目前找到的最优解,这个极值是全局极值gbest。
另外也可以不用整个种群而只是用其中一部分最优粒子的邻居,那么在所有邻居中的极值就是局部极值。
然后,在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置:
式2.1
式2.2
v[]是粒子的速度,present[]是当前粒子的位置。
pbest[]与gbest[]如前定义rand()是介于(0,1)之间的随机数。
C1,C2是学习因子。
算法的伪代码如下:
Foreachparticle
Initializeparticle
END
Do
Foreachparticle
Calculatefitnessvalue
Ifthefitnessvalueisbetterthanthebestfitnessvalue(pBest)inhistory
setcurrentvalueasthenewpBest
End
ChoosetheparticlewiththebestfitnessvalueofalltheparticlesasthegBest
Foreachparticle
Calculateparticlevelocityaccordingequation(a)
Updateparticlepositionaccordingequation(b)
End
Whilemaximumiterationsorminimumerrorcriteriaisnotattained
在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax。
2.3粒子群优化算法核心参数分析
粒子群优化算法中并没有许多需要调节的参数,下面列出了这些参数以及经验设置,描述如下:
(1)粒子数:
一般取20–40。
其实对于大部分的问题10个粒子已经足够可以取得好的结果,不过对于比较难的问题或者特定类别的问题,粒子数可以取到100或200。
(2)粒子的长度:
这是由优化问题决定,就是问题解的长度。
(3)粒子的范围:
由优化问题决定,每一维可是设定不同的范围。
(4)Vmax:
最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子属于[-10,10],那么Vmax的大小就是20。
(4)学习因子:
C1和C2通常等于2。
不过在文献中也有其他的取值.但是一般C1等于C2并且范围在0和4之间。
(5)中止条件:
最大循环数以及最小错误要求。
例如,在神经网络训练例子中,最小错误可以设定为1个错误分类,最大循环设定为2000,这个中止条件由具体的问题确定。
(6)全局PSO和局部PSO:
我们介绍了两种版本的粒子群优化算法:
全局版和局部版。
前者速度快不过有时会陷入局部最优。
后者收敛速度慢一点不过很难陷入局部最优。
在实际应用中,可以先用全局PSO找到大致的结果,再有局部PSO进行搜索。
另外的一个重要参数是惯性权重,由于没有做出规范性的定义与说明,所以在此不再赘述。
2.4粒子群优化算法与随机蛙跳算法联系
在随机蛙跳算法中,种群中包括若干个族群,每个族群各自采用搜索策略进行局部搜索。
之后,对所有的族群进行混洗,再次分为各个子群。
为了提高族群的收敛速度和搜索效率,采用PSO算法中的局部搜索策略。
式2.3
式2.4
式中,rand1(),rand2()为[0,1]之间的随机数;
Pb为族群中最优位置(问题的局部最优解);
Xw为D维空间中微粒所处的坐标位置。
如果新位置的适应度接近最优解,则采用;
否则,丢弃;重新随机生成一个新解代替。
这样既可以防止陷入局部最优,又可以提高收敛速度和搜索效率。
两者的关系可以由以下的代码反映:
Begin;
随机产生Psolutions(individuals);
ForeachindividualiEP;
SortthewholepopulationPindescendingorderoftheirfitness;
//根据每个个体的适应度按降序排列
DividethepopulationPintomemeplexes;
//将种群划分为m个族群
Foreachmemeplex;
Determinethebestandworstindividuals;
ImprovetheworstindividualpositionusingEqs5and6;
Repeatforaspecificnumberofiterations;
End;
Combinetheevolvedmemeplexes;
SortthepopulationPindescendingorderoftheirfitness;
Checkiftermination=true;
End;
由以上的论述不难看出,在一个随机蛙算算法中,每一个蛙群可以看做是由多个粒子群优化算法的搜索空间组成。
话句话说,一个随机蛙跳算法的搜索过程,可以看做是将其搜索空间划分成多个粒子群优化算法的搜索空间,也是多个粒子群优化算法的并行执行过程。
第3章随机蛙跳算法基本理论及应用
3.1随机蛙跳算法基本概念和原理
随机蛙跳算法(SFLA)是由EusuffM.M.和Lansey提出的一种亚启发式群智能进化算法,该算法的原理为:
把种群中的每一个个体都视为一个青蛙,整个种群划分为m个规模为n的子种群。
对子群中的青蛙个体,首先利用该子群最好与最差个体产生新的子个体(可视为青蛙的一次跳跃),如果子个体的适应度比父代个体优,则用其替换父代个体,否则利用种群最好个体与该子群的最差个体重新产生新的子个体(视为青蛙再次跳跃),如果仍然比其父代个体差,则随机产生一个新的个体替换父代个体。
随机蛙跳算法算法的这种进化策略就象一个个青蛙在向着最优解跳跃一样,使算法逐渐收敛到最优。
该算法的执行步骤如下:
步骤
(1)初始化参数;
步骤
(2)随机产生初始蛙群,计算各个蛙的最适值;
步骤(3)按最适值的大小进行降序排列,并记录好最优解Px,并且将蛙群分成族群,把F个蛙分配到m个族群中去,每个族群包括n个蛙;
步骤(4)局部搜索过程,即:
根据随机蛙跳算法的算法公式,在每一个族群中进行元进化;
步骤(5)将各个族群进行混合。
在每个族群都进行过一轮元进化过程以后,将各个种族中的蛙进行重新排列和族群划分,并记录全局最优解Px;
步骤(6)检验计算停止条件。
如果满足了算法收敛条件,则停止算法的执行过程,否则跳转到步骤(3)。
通常而言,如果算法在连续几个全局思想交流以后,最优解没有得到明显的改进,则应该停止算法的执行。
某些情况下,最大函数的评价次数也可以作为算法停止的准则。
该算法的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机科学 技术 毕业设计 随机 蛙跳 算法 研究 实现