高斯协同粒子群优化算法的实现.doc
- 文档编号:156964
- 上传时间:2022-10-04
- 格式:DOC
- 页数:14
- 大小:736KB
高斯协同粒子群优化算法的实现.doc
《高斯协同粒子群优化算法的实现.doc》由会员分享,可在线阅读,更多相关《高斯协同粒子群优化算法的实现.doc(14页珍藏版)》请在冰豆网上搜索。
实验报告
题目:
多尺度协同变异的粒子群优化算法的实现
学院:
信息科学与技术学院
专业:
计算机技术
年级:
2016级研究生
课程:
计算智能_作业4
姓名:
学号:
备注:
一、实验内容
1.问题描述
粒子群算法(ParticleSwarmOptimizer,PSO)是由Kennedy和Eberhart博士提出的一种基于群体智能的优化算法,其基本思想是受到他们早期对许多鸟类的群体行为进行建模与仿真研究的启发.粒子群算法的优势在于其简单容易实现,没有很多参数需要调整,是非线性连续优化问题、组合优化问题和混合整数非线性优化问题的有效优化工具.由于PSO算法概念简单、实现容易,在函数优化和神经网络权值训练等方面都有很好的表现.由于其又具有深刻的智能背景,既适合科学研究,又特别适于工程应用,因此在近年来得到了飞速的发展.其应用涉及系统控制、人工智能、模式识别、计算机、通信工程等各个领域.粒子群优化算法问世以来受到了广泛的重视,经过十几年的研究,其不论在应用方面还是在优化性能方面都得到了很大的发展.然而,研究人员仍然无法解决一直困扰该算法的两个难题:
早熟和收敛速度慢.在避免早熟收敛的研究中,一些学者提出了控制种群多样性来提高性能的办法.其思想主要分为两个方面:
(1)从PSO参数以及其拓扑结构研究的角度.
(2)从与遗传算法相结合的角度.对于第一个角度,一些学者提出解决微粒间的冲突和聚集,分析微粒和种群最优位置的距离,种群随机多代初始化的思想.而对于第二个角度,主要是通过引入遗传算法中的变异操作实现的,其中文献通过对微粒引入一个小概率随机变异操作来增加种群多样性(dissipativePSO简称DPSO),这样做虽然可以更好的搜索粒子群的解空间,但如变异率控制不当则极容易导致原始种群的混乱,致使在算法的后期达不到精确的局部搜索目的;在此基础上,进一步提高搜索性能,文献给出了一种令变异操作随时间变化的自适应层次PSO算法(self-organizinghierarchicalPSO,简称HPSO),为了使其能够适应变异操作,还确定了自适应参数的选择方式.但由于该算法没有考虑速度公式中惯性因素的影响,因此将发生变异的条件设置为微粒的速度为0,从而使得该算法仍然未能迅速有效的逃离局部极小值.文献为了提高种群多样性和搜索速度间的平衡,对阈值设定进行了改进并结合群体自动分家机制,提出一种自适应逃逸的微粒群算法(Self-AdaptiveEscapePSO,简称AEPSO).然而上述算法在实现变异的时候,均采用单一的均匀变异机制,其逃逸能力大大减弱,进而使改进的PSO算法在有限的迭代次数内无法实现最优解的探索,因此如何提高算法的逃逸能力,使其在快速定位到最优解区域同时提高最优解的精度值得我们进一步研究.
鉴于此,本文提出一种多尺度协同变异的微粒群算法(MAEPSO).该算法利用不同大小方差的高斯变异机制实现解空间的探索,这种多个或大或小的变异机制,能促使整个种群以尽量分散的变异尺度来对解空间进行更加详尽的探索.同时高斯变异的范围随着适应值的变小也逐渐降低,在算法后期有利于提高最优解的精度;在利用不同大小变异算子提高局部精确搜索能力的同时,该算法同样利用均匀算子维护种群多样性.利用试验对不同评测函数进行测试均验证新算法优良的优化性能.
2.解决思路
提出一种多尺度协同变异的微粒群优化算法,其中算法的逃逸能力取决于不同尺度方差的高斯变异算子,不同尺度的变异有助于算法在搜索空间中进行分散式的搜索,同时变异尺度随着适应度的提升而逐渐减少,这样可以在保证逃逸能力的同时,在算法后期提高了最优解的精度保证了算法的收敛性能.
3.实验平台
本实验采用的是windows10+VisualStudio2013运用的win32的运行平台。
二、算法分析
1.基本理论和方法
我们把一个优化问题看作是在空中觅食的鸟群,那么在空中飞行的一只觅食的“鸟”就是PSO算法在解空间中进行搜索的一个“粒子”(Particle),也是优化问题的一个解.“食物"就是优化问题的最优解.粒子在搜索空间中以一定的速度飞行,这个速度根据它本身的飞行经验和同伴的飞行经验来动态调整.所有的粒子都知道
自己到目前为止发现的最好位置T,这个可以看作是粒子自己的飞行经验.此外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置即gP(也称为gbest,gbest是在pbest中的最好值),这个可以看作是粒子的同伴的经验.在由这样一群随机初始化形成的粒子而组成的一个种群中,以迭代的方式进行的速度与位置的更新公式为:
作为问题近似最优解。
其中,1r和2r为两个在[0,1]范围内服从均匀分布的随机变量,用来保持群体的多样性.1c和2c为学习因子,也称加速因子,其使粒子具有自我总结和向群体中优秀个体学习的能力,从而向自己的历史最优点以及群体的历史最优点靠近.w为惯性权重,它起着权衡局部最优能力和全局最优能力的作用.公式中右项中的三个部分分别称为:
惯性部分、认知部分(代表粒子对自身的学习)、社会部分(代表着粒子间的协作).这三个部分之间的相互平衡决定了算法的主要性能.
2.具体算法
通过多尺度高斯变异算子就可以保证无论最优解存在何处,算法进化到何处,都能够准确定位到最优解区域.算法具体描述如下:
设尺度个数为M,首先初始化多尺度高斯变异算子的初始方差。
初始时,方差一般设定为优化变量的取值范围,随着迭代次数的增加,多尺度高斯变异算子的方差会随之
进行调整,具体调整方式如下所示,首先根据适应值的大小对种群中的微粒进行由小到大排序,然后对其进行组合,生成M个子群,每一个子群的微粒个数为P=N/M,K是当前迭代次数,计算每一个子群的适应度:
其中f是微粒的适应值计算函数,不同变异尺度之间相互竞争,根据适应能力的不同而设置不同的变异能力,因此第m个变异算子的标准差为:
由于变异算子的进化是一个递归过程,排在后面的变异算子可能很大,因此对变异算子的标准差做如下规范:
如果
>W/4,则
W为待优化变量空间的宽度,重复使用上式,直到满足
我们知道任何一种进化算法都存在勘探和开采两类不同的操作,PSO算法随着迭代次数的增加粒子群会收敛于某个最优个体,粒子群个体的多样性逐渐丧失.为了防止PSO算法陷入局部极小点,上述算法通过增加变异操作改善种群多样性来提高算法的全局解搜索能力,然而在算法的后期,变异操作往往会使微粒群不能进行精确的局部搜索无法保证算法的收敛性能.因此如何能协调勘探和开采能力是进化算法性能提高的关键.为此,本文算法采用两种方式实现勘探和开采能力间的均衡.首先,本文算法采用HPSO的公式(4)实现PSO进化,该公式消除了速度的惯性部分,这样就使得PSO进化只负责整个算法的开采能力,当速度小于一定阈值时,给予速度一个变异操作——逃逸运动,描述如下: 其中,f是适应值函数,由于PSO算法的进化公式中消除的惯性部分,使得微粒的速度快速下降,这样在有限的迭代次数内能够进行多次的逃逸运动,提高了算法的种群多样性,增强了算法全局解搜索性能.另外,由于本文算法的逃逸运动采用了多尺度高斯变异方式,较小的尺度同样能保证精确解的局部搜索能力,避免了HPSO算法中由于下降过快且采用的均匀变异算法,使其在进化后期无法进行详细局部搜索的不足.另外,式(14)中阈值的大小将会对算法的执行效果有一定影响: 如果阈值过大会导致逃逸次数增加从而打乱PSO种群进化的原有结构,使算法无法进行局部深度搜索,开采能力有所下降;阈值过小会将导致微粒速度需要较长时间达到逃逸条件,在有限次的迭代次数内,无法进行有效地全局搜索,降低了算法搜索速度,勘探能力下降.为此结合文献[18]本文给出一个自适应的阈值设定方法.设微粒各维速度间相互独立,并对每维速度均给予一个不同的阈值,当该维度中有多个微粒速度达到这个值时,阈值就自动下降,通过自动调整每一维速度的阈值的方式达到动态调整微粒速度的目的.具体描述如下: 其中,k1、k2为常数,Size为种群大小,频率G(t)d表示种群第d维速度曾经发生逃逸的总次数;k1标记调整阈值dT和频率G(t)d的条件值;2k用来控制阈值速度下降的幅度.通过控制微粒飞行速度的方式,不仅能保证算法的全局解空间勘探性能,防止算法陷入局部最优,同时在算法后期能使粒子群进行精确的局部搜索,保证算法的收敛速度. 3.算法流程图 三、实验结果 1.输入 没有需要输入的数据,但是有三个评价函数。 如下: 2.输出 输出包含如下几个内容: 每次更新迭代的sigma,以及最优解。 TABLET: Quadric: Rosenbrock: 四、结果分析与比较 1.结论 本文提出一种新的多尺度协同变异的微粒群算法,利用不同大小初始方差的高斯变异机制实现解空间的探索,这种多个或大或小的变异机制,能促使整个种群以尽量分散的变异尺度来对解空间进行更加详尽的探索.同时高斯变异的范围随着适应值的变小也逐渐降低,有利于提高最优解的精度;在利用不同大小变异算子提高局部精确搜索能力的同时,该算法同样利用均匀变异算子维护种群多样性.通过6个benchmark数据进行测试,实验结果表明新算法能够在算法初期就能够快速定位到搜索空间的最优解区域,进而使得微粒通过进化PSO及小尺度变异算子向着最优精确解空间逼近,使其在进化过程中保持局部最优解空间开采的能力,加快了算法的收敛速度.其中不同尺度个数对本文算法性能的影响将是本课题下一阶段研究的重点。 //MAEPSO.cpp: 定义控制台应用程序的入口点。 // #include"stdafx.h" #include #include #include #include #include usingnamespacestd; constintgroupSize=20;//种群数量 constintdimNum=30; //变量维度 constintM=5; //子群数量 constintN=6000; //迭代次数 constintP=groupSize/M; constdoubleW=50; constintc1=1.4; constintc2=1.4; doublegroup[groupSize][dimNum];//粒子群 doublepid[groupSize][dimNum];//存放最适宜的值 doublepgd[dimNum]; doublev[groupSize][dimNum]; //粒子速度 doubleT[dimNum];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 协同 粒子 优化 算法 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)