灰狼优化算法改进(灰狼优化算法改进方法)
大家好!今天让创意岭的小编来大家介绍下关于灰狼优化算法改进的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、pb实验和算法优化区别
PB实验和算法优化有很大的区别。PB实验是一种实验性的方法,它通过实验来改进系统的性能,而算法优化则是一种理论性的方法,它通过分析和设计算法来改进系统的性能。
二、优化算法笔记(十三)鲸鱼算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
鲸鱼算法(Whale Optimization Algorithm)是根据鲸鱼围捕猎物的行为而提出的算法。鲸鱼是一种群居的哺乳动物,在捕猎时它们也会相互合作对猎物进行驱赶和围捕。鲸鱼算法提出时间并不长,也是一个新兴的优化算法,研究应用案例不多。
鲸鱼算法中,每个鲸鱼的位置代表了一个可行解。在鲸鱼群捕猎过程中,每只鲸鱼有两种行为,一种是包围猎物,所有的鲸鱼都向着其他鲸鱼前进;另一种是汽包网,鲸鱼环形游动喷出气泡来驱赶猎物。在每一代的游动中,鲸鱼们会随机选择这两种行为来进行捕猎。在鲸鱼进行包围猎物的行为中,鲸鱼将会随机选择是向着最优位置的鲸鱼游去还是随机选择一只鲸鱼作为自己的目标,并向其靠近。
鲸鱼算法,显而易见,主角就是鲸鱼了。
在D维解空间内每个鲸鱼的位置为
每只鲸鱼随机选择进行包围猎物或者是使用汽泡网驱赶猎物,每只鲸鱼选择这两种行为的该率是等的,即P(包围)=P(汽泡网)=0.5。
鲸鱼在包围猎物时会选择向着最优位置的鲸鱼游动或者向着一只随机鲸鱼游动。
该鲸鱼的位置更新公式入下:
其中 为当前最优的鲸鱼的位置,A的每一维为均匀分布在(-a,a)内的随机数,a的初始值为2,随着迭代次数线性递减至0;C为均匀分布在(0,2)内的随机数。||表示数的绝对值,即 每一维的值都是非负数。
该鲸鱼的位置更新公式入下:
其中 为当前群体中随机选择的鲸鱼的位置。
那么鲸鱼在什么时候选择向最优个体游动,什么时候选择随机个体为目标呢?
这个将由A的值决定
当 时,鲸鱼选择向着最优个体游动。注意A是一个D维的向量,所以是A的模小于1时,鲸鱼向着最优个体游动。
当 时,鲸鱼选择向着随机个体游动。
可以看出在包围猎物的过程中,鲸鱼算法的搜索模式为在距最优个体较近的周围搜索或者在距随机个体较远的附近搜索。
2.2气泡网
鲸鱼在捕猎时会喷出汽包形成气泡网来驱赶猎物。
其中b为常数(没找到定义,默认取1),l为均匀分布在[-1,1]内的随机数。
每次行动之前,每只鲸鱼都会抛个硬币,来决定是选择包围猎物还是使用气泡网来驱赶猎物。
从上面的描述可以看出,鲸鱼算法的流程也十分的简单。
适应度函数
实验一 :标准鲸鱼算法
从图上可以看出算法的收敛性还是很强的,在第35代左右就已经完全收敛。再看最后的结果,已经是非常好的结果了,同样也说明的算法的局部搜索能力很强。这样印证了上一节我的说法,算法收敛速度快,缺少跳出局部最优的能力。
从算法的流程我们可以看出,算法的收敛性大概是由参数a来决定的,由于a从2递减为0,使算法的搜索范围越来越小,从而加速算法的收敛。这应该是一个优化后的参数,现在我们固定住a,来弱化算法,减弱其收敛性,看看全局搜索和跳出局部最优能力是否有所加强。
实验二 :固定参数a
从图像可以看出,算法几乎没有收敛的了,算法的收敛速度依旧很快。
看看实验结果。
结果比标准鲸鱼算法差,能说明参数a影响了算法的搜索精度,参数a对算法收敛性的影响在于a对向量A的影响。固定a=1.5时使A的模较之前相比有更大的概率大于1,此时鲸鱼们在包围猎物的行为中选择游向最优个体的概率更小,从而使算法的收敛速度更慢,同时算法的全局搜索能力有一定的提升。
鲸鱼算法作为一个新兴算法,我对它的研究也不是太多。纵观算法的流程,可以看出标准的鲸鱼算法和萤火虫算法有相似之处,它们都是在算法前期进行全局搜索,而在算法的后期进行局部搜索,也都没有跳出局部最优的操作。在面对简单问题上表现出的优秀性能到了复杂问题上可能会有所下降,但是由于算法流程、结构相对简单,算法的改进点感觉也不是太多。
以下指标纯属个人yy,仅供参考
参考文献
Mirjalili S, Lewis A. The Whale Optimization Algorithm[J]. Advances in Engineering Software, 2016, 95:51-67. 提取码:b13x
目录
上一篇 优化算法笔记(十二)烟花算法
下一篇 优化算法笔记(十四)水波算法
优化算法matlab实现(十三)鲸鱼算法matlab实现
三、优化算法笔记(十二)烟花算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
烟花算法(Firework Algorithm,FWA)是一种受烟花爆炸产生火星,并继续分裂爆炸这一过程启发而得出的算法。算法的思想简单,但具体实现复杂。算法提出时间并不长,但是已经有了不少的改进研究和较为全面的应用。
烟花算法中,每一个烟花的位置都代表了一个可行解。烟花的爆炸产生的火星有两种,正常的火星与特别的火星。每个火星都会爆炸产生数个正常火星,某些火星有一定的概率产生一个特别的火星。正常的火星根据当前火星的振幅随机均匀分布在该火星的周围,而特别的火星将在当前火星附近以正态分布方式产生。每次迭代产生的火星数量多于每一代应有的火星数,算法将参照火星位置的优劣,随机留下指定数量的火星,已保持火星数目的稳定。
烟花算法的主角毫无疑问就是烟花了。
式(1)为适应度值越小越优的情况,而式(2)则是适应度值越大越优的情况。 为一个极小的值,以保证分母不为0。
每个火星产生的正常火星数量也由其适应度值来决定。
其中 表示第i个火星将要产生的正常火星数, 是产生正常火星的总数为一个常数,从式(3),(4)可以看出适应度值越好的火星能够产生更多的正常火星,反之,火星适应度越差,能够产生的火星数越少。
由于式(3),(4)计算出的值为小数,烟花算法中使用式(5)将其转化为整数。
从式(3)和式(4)中可以看出,在每一代中将会产生出 个正常火星。产生的正常火星的位置与当前火星的振幅有关,可以从式(1),(2)看出,适应度越优的火星的振幅越小,那么它产生的正常火星将在它自己周围,而适应度越差的火星的振幅越大,它产生的正常火星将会出现在离自己较远的位置。
当前火星每次爆炸会从D维搜索空间内随机选择z维进行更新从而产生新的火星。正常火星的位置由如下公式产生。
其中z为取值1-D的均匀随机正整数,rand(-1,1)表示-1到1内的均匀随机数。从式(6)中可以看出,正常火星的位置与其振幅有直接关系,振幅越大产生的新火星距当前火星的距离约远。
每次迭代过程中,会产生m个特别的火星,即在这N个火星中随机选择m个火星,每个火星产生一个特别的火星。特别的火星的由下面的公式产生:
由上面的过程可知,在每一代中,有N个火星,将会产生出 个正常火星以及m个特别的火星。但是每一代中只能从这 个火星中选择N个火星保留至下一代。
每次会先从 个火星中选择最优的火星保留至下一代,然后再从中选择N-1个火星。选择某个火星的概率如下:
其中R(X)表示该火星距其他所有火星的距离之和,即距其它火星越远的火星,被选择保留至下一代的概率较大。
个火星,而且
,所有烟花算法每次迭代的计算复杂度要大于其他算法,这简直就是一个作弊行为。别的算法每次只搜索了N个位置,而烟花算法却搜索了 个位置。与其他优化算法对比时,其他算法的种群数量应该取 ,否则这将是一场不公正的对决。
适应度函数还是这个简单的小白鼠
实验一 :标准烟花算法
以上数据来自原论文,现在看一看实验的图像以及实验结果。
从图像可以看出每次只选择保留了5个火星,它们的收敛速度很慢,实验结束时距离目标点还有一段距离。
看看实验结果
从实验结果可以看出,算法的性能很不稳定,而造成这一点的原因很可能是其收敛速度较慢,算法仍在收敛过程中,所以结果看上去很差。将最大迭代次数修改为100代,重新试验,其结果如下:
结果好了一些但还是难以接受,为什么烟花算法的结果不理想呢?
原因可能是保留机制(2.3节)的问题,烟花算法中保留火星的概率是根据该火星与其他火星的距离和,距离群体越大的个体被保留下的概率越大。这样做有什么好处呢?好处是火星相对分散,这是一个对抗局部最优的策略,但是,距离群体较远的个体是一个较差的个体的概率非常大,坏处就是,集中于当前最优位置的火星被保留的概率较小,算法的局部搜索能力将较弱。
实验二 . 随机选择的方式保留火星
为了加快烟花算法的收敛速度,增强局部搜索能力,我移除了标准烟花算法的选择过程,使用随机选择的方式保留火星,当然,最优个体依然会被保留至下一代。其他参数保持不变。
可以看出这次的图像相比实验一收敛速度快了不少,在迭代结束时已经相对在一个较小的区域。这次的结果也明显优于实验一。将选择过程改为随机选择后,由于较优的火星产生的较多且分布在自己周围,因此选择到这些较优的火星的概率也相对较大,算法的收敛速度相对较快。与此同时,算法跳出局部最优的能力比修改前要弱。
对于较简单的问题来说当然是随机选择收敛较快结果较好,而复杂的问题则需要更强的跳出局部最优能力。问题的关键仍然是,我们无法在一开始就知道问题的复杂程度。
实验三 .增加火星的种群数量,减少每代产生的正常火星总数
为什么要减少产生的正常火星数,这样算法搜索的次数减少了,效果不会更差吗?其实与直觉相反,减少正常火星总数,增加火星总群数,实际上是让较优的火星产生的正常火星被保留下来的概率变大了,这样也可以解决实验一中的问题,加快算法的收敛速度。
从图像中可以看出,算法在50代之前已经收敛,但是之后只在小范围内进行搜索。实验图像与之前的描述相符,收敛速度加快但是跳出局部最优能力减弱。看看实验结果,实验结果好了不少且结果更加稳定。
其实实验二与实验三,使用了不同的策略,但都达到了同样的目的——保留更多的优质火星到下一代,它们促进了局部搜索但是挤占了较劣火星的位置,削弱了种群的多样性。
每代留下的火星多了,图像看上去是不是更像烟花?
烟花算法的探究远不止如此,几年前作为一个较新的算法来学习时却已经有了大量的论文和书籍,可见大家对烟花算法已经有了较为深入的研究,而我能做的只是应用算法解决问题以及稍作改进让算法与问题的适应性更高。
烟花算法产生正常火星的过程为算法提供了搜索能力,产生特殊火星的过程和选择过程为算法提供了跳出局部最优的能力。但是个人认为选择过程与其他过程的适应性不是很好。标准的选择过程会丢失掉许多较优的个体,使之前产生的正常火星得到的成果没有保留。
烟花算法其实还有比较多的改进点,对算法产生最大的参数应该就是正常火星的总数以及振幅了。简单粗暴的改进:在每一代可以对这两个参数进行变化或者随机化,让算法的搜索能力与跳出局部最优能力在整个流程中动态变化,以均衡两种能力。
以下指标纯属个人yy,仅供参考
参考文献
Tan Y , Zhu Y . Fireworks Algorithm for Optimization[C]// Advances in Swarm Intelligence, First International Conference, ICSI 2010, Beijing, China, June 12-15, 2010, Proceedings, Part I. Springer-Verlag, 2010. 提取码:yaj0
目录
上一篇 优化算法笔记(十一)群搜索算法
下一篇 优化算法笔记(十三)鲸鱼算法
优化算法matlab实现(十二)烟花算法matlab实现
四、如何算改进了一个算法,怎么改才叫改进了呢?
我认为,所谓“改进”就是使发现原算法的不足之处,并优化之,结果是使该算法效率大大提高高,或者适用度更广泛,如果“改进”后的算法不比之前的更优,就不能算改进。反之,只要能够大大提高改算法的效率,或者使该算法适用度更广,就算是改进。至于改进一个细节,如果是一个重要的细节,当然也算是改进。
不过,算法都是高手发明的,他们在公布之前一定将这种算法优化过了,如果要再改进,那一定要非常细心或者比他更高才行。
以上就是关于灰狼优化算法改进相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: