混合蛙跳算法改进及其对旅行商问题的求解

混合蛙跳算法改进及其对旅行商问题的求解

ID:31372945

大小:109.00 KB

页数:7页

时间:2019-01-09

混合蛙跳算法改进及其对旅行商问题的求解_第1页
混合蛙跳算法改进及其对旅行商问题的求解_第2页
混合蛙跳算法改进及其对旅行商问题的求解_第3页
混合蛙跳算法改进及其对旅行商问题的求解_第4页
混合蛙跳算法改进及其对旅行商问题的求解_第5页
资源描述:

《混合蛙跳算法改进及其对旅行商问题的求解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、混合蛙跳算法改进及其对旅行商问题的求解  摘要:针对混合蛙跳算法在进化过程中容易陷入局部最优的问题,使用群体适应度值判断算法在进化过程中是否陷入局部最优,如果陷入局部最优,则对整个种群的当前最优解Gb进行贪婪倒位变异,如果变异后的Gb(新)要优于Gb(旧),则使用Gb(新);否则,使用模拟退火算法判断是否接受Gb(旧)。通过实验,将改进前后的混合蛙跳算法用于对旅行商问题的求解,并通过对比,验证了改进后的算法较未改进的算法更有效。  关键词:混合蛙跳算法;旅行商问题;组合优化问题  DOIDOI:10.11907/rjdk.161741  中图分类号:TP312  文献标识码:A

2、文章编号:16727800(2016)010004102  0引言  混合蛙跳算法(ShuffledFrogLeapingAlgorithm,SFLA)由Eusuff和Lansey在2003年第一次提出,是一种全新的启发式群体智能进化算法,最初用于解决管道网络扩充中管道尺寸的最小化问题[1]。随后,混合蛙跳算法以自身参数设置少、全局搜索寻优能力强、计算强度小、简单易于实现等优势被国内外学者所关注。目前主要用于解决组合优化问题,如水资源分布安排[2]、电力系统的调度[3]、云计算环境下资源分配问题[4]等。7  组合优化问题是从组合问题的可行解中求出最优解。旅行商问题属于一种典型

3、的组合优化问题,是NP难题。旅行商问题的具体描述是:以一个城市为出发点,在N个城市各经历一次,最后回到出发点,使得所经过的路程达到最短。如果不考虑方向性和周期性,则总共存在的闭合路径数目是(N-1)!2。当N选取的数目很大时,计算量将特别大,在求解最优路径时很困难,因为该问题算法在运行过程中,需要很长的运行时间和很大的存储空间,以至于根本不可能在计算机中得到实现,产生了所谓的“组合爆炸”问题。如果采用传统算法(如穷举搜索算法、贪心算法和动态规划算法等),就会遇到上述问题。现代智能算法的出现解决了上述问题,如遗传算法、蚁群算法、粒子群算法等。鉴于此,本文将采用混合蛙跳算法对旅行商

4、问题进行求解。  本文对旅行商问题使用混合蛙跳算法进行求解并针对混合蛙跳算法存在容易陷入局部最优的问题,使用了贪婪倒位变异对当前的全局最优解进行变异,从而使得混合蛙跳算法跳出局部最优,从而向最优解逼近。使用改进前后的混合蛙跳算法分别对旅行商问题进行仿真实验,验证了改进后算法的有效性。  1混合蛙跳算法7  混合蛙跳算法是模拟青蛙觅食过程中群体信息共享和交流机制而产生的一种群智能算法。算法中每只青蛙被定义为问题的一个解。对所有青蛙进行模因分组,分为不同的子群体,青蛙在分组内共享自身的觅食经验和信息,当分组内信息交换到一定阶段后,再将所有分组混合进行分组间的信息交换。不断重复上述过

5、程,一直向着食物源的位置逼近。混合蛙跳算法按照分组分类进行信息的传递,将这种局部进化和重新混合的过程相间进行,有效地将全局信息交互和局部进化搜索进行相互结合,具有高效的计算性能和优良的全局搜索性能。  混合蛙跳算法的具体描述[5]:  随机生成F只青蛙,当问题维度为d时,第i只青蛙表示为X(i)=(X1i,X2i,...,Xdi),其评价函数为f(X(i))。按照评价函数的降序对青蛙进行排序,将青蛙分成m个组(子种群),每个组有n只青蛙,则F=m*n。将分组后的第一只青蛙放到第一组,第二只青蛙放到第二组,以此类推,直到放到第m组,如果有剩余青蛙,将第m+1只青蛙放到第m+1组,

6、直到所有青蛙都放到分组中。  整个种群的最优解记作Gb,子种群中的最优解和最差解分别记作Pb、Pw。在子种群中的寻优过程是以对Pb和Gb作为参考,对Pw的位置进行更新,更新公式如下:  其中,rand()为0~1的随机数,Dmax为允许青蛙移动的最大步长。如果更新后Pw(新)要好于Pw(旧),则用Pw(新)代替Pw(旧)。否则,用Gb代替式(1)中的Pb,重新执行对Pw的更新。如果还得不到更好的解,则随机生成一个个体来替代Pw。多次执行上述更新过程,直到更新结果满足约定条件(迭代次数)。当所有子种群更新完成后,再对所有青蛙进行全局混合、排序,继续进行子种群中的更新。反复执行上述

7、过程,直到达到最大迭代次数或者找到最优解。  2混合蛙跳算法改进7  根据文中混合蛙跳算法所描述,在子种群的更新过程中,使用Pb和Gb作为Pw更新的参考。但是在子种群的更新过程中,Pb和Gb的状态是不会改变的,使得每次的更新范围不会超过Pb和Gb,这样算法就容易陷入局部最优。为了能跳出局部最优,可以在Pw得不到更好解的情况下对Pb和Gb进行变异,增加Pw取得更好解的可能性,并能够加速向全局最优解收敛。本文将贪婪倒位变异和模拟退火算法相结合对Gb进行变异。  2.1更新陷入停滞的判断  由于算

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。