HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    粒子群和鲸鱼算法(粒子群和鲸鱼算法的区别)

    发布时间:2023-04-21 18:26:15     稿源: 创意岭    阅读: 102        

    大家好!今天让创意岭的小编来大家介绍下关于粒子群和鲸鱼算法的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    粒子群和鲸鱼算法(粒子群和鲸鱼算法的区别)

    一、优化算法笔记(二)优化算法的分类

    (以下描述,均不是学术用语,仅供大家快乐的阅读)

    在分类之前,我们先列举一下常见的优化算法(不然我们拿什么分类呢?)。

    1遗传算法Genetic algorithm

    2粒子群优化算法Particle Swarm Optimization

    3差分进化算法Differential Evolution

    4人工蜂群算法Artificial Bee Colony

    5蚁群算法Ant Colony Optimization

    6人工鱼群算法Artificial Fish Swarm Algorithm

    7杜鹃搜索算法Cuckoo Search

    8萤火虫算法Firefly Algorithm

    9灰狼算法Grey Wolf Optimizer

    10鲸鱼算法Whale Optimization Algorithm

    11群搜索算法Group search optimizer

    12混合蛙跳算法Shuffled Frog Leaping Algorithm

    13烟花算法fireworks algorithm

    14菌群优化算法Bacterial Foraging Optimization

    以上优化算法是我所接触过的算法,没接触过的算法不能随便下结论,知之为知之,不知为不知。其实到目前为止优化算法可能已经有几百种了,我们不可能也不需要全面的了解所有的算法,而且优化算法之间也有较大的共性,深入研究几个之后再看其他优化算法上手速度会灰常的快。

    优化算法从提出到现在不过50-60年(遗传算法1975年提出),虽种类繁多但大多较为相似,不过这也很正常,比较香蕉和人的基因相似度也有50%-60%。当然算法之间的相似度要比香蕉和人的相似度更大,毕竟人家都是优化算法,有着相同的目标,只是实现方式不同。就像条条大路通罗马,我们可以走去,可以坐汽车去,可以坐火车去,也可以坐飞机去,不管使用何种方式,我们都在去往罗马的路上,也不会说坐飞机去要比走去更好,交通工具只是一个工具,最终的方案还是要看我们的选择。

    上面列举了一些常见的算法,即使你一个都没见过也没关系,后面会对它们进行详细的介绍,但是对后面的分类可能会有些许影响,不过问题不大,就先当总结看了。

    再对优化算法分类之前,先介绍一下算法的模型,在笔记(一)中绘制了优化算法的流程,不过那是个较为简单的模型,此处的模型会更加复杂。上面说了优化算法有较大的相似性,这些相似性主要体现在算法的运行流程中。

    优化算法的求解过程可以看做是一个群体的生存过程。

    有一群原始人,他们要在野外中寻找食物,一个原始人是这个群体中的最小单元,他们的最终目标是寻找这个环境中最容易获取食物的位置,即最易存活下来的位置。每个原始人都去独自寻找食物,他们每个人每天获取食物的策略只有采集果实、制作陷阱或者守株待兔,即在一天之中他们不会改变他们的位置。在下一天他们会根据自己的策略变更自己的位置。到了某一天他们又聚在了一起,选择了他们到过的最容易获取食物的位置定居。

    一群原始人=优化算法中的种群、群体;

    一个原始人=优化算法中的个体;

    一个原始人的位置=优化算法中个体的位置、基因等属性;

    原始人变更位置=优化算法中总群的更新操作;

    该位置获取食物的难易程度=优化算法中的适应度函数;

    一天=优化算法中的一个迭代;

    这群原始人最终的定居位置=优化算法所得的解。

    优化算法的流程图如下:

    对优化算法分类得有个标准,按照不同的标准分类也会得到不一样的结果。首先说一下我所使用的分类标准(动态更新,有了新的感悟再加):

    按由来分类比较好理解,就是该算法受何种现象启发而发明,本质是对现象分类。

    可以看出算法根据由来可以大致分为有人类的理论创造而来,向生物学习而来,受物理现象启发。其中向生物学习而来的算法最多,其他类别由于举例有偏差,不是很准确,而且物理现象也经过人类总结,有些与人类现象相交叉,但仍将其独立出来。

    类别分好了,那么为什么要这么分类呢?

    当然是因为要凑字数啦,啊呸,当然是为了更好的理解学习这些算法的原理及特点。

    向动物生存学习而来的算法一定是一种行之有效的方法,能够保证算法的效率和准确性,因为,如果使用该策略的动物无法存活到我们可以对其进行研究,我们也无法得知其生存策略。(而这也是一种幸存者偏差,我们只能看到行之有效的策略,但并不是我们没看到的策略都是垃圾,毕竟也发生过小行星撞地球这种小概率毁灭性事件。讲个冷笑话开cou心zhi一shu下:一只小恐龙对他的小伙伴说,好开心,我最喜欢的那颗星星越来越亮了(完)。)但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。

    按更新过程分类相对复杂一点,主要是根据优化算法流程中更新位置操作的方式来进行分类。更新位置的操作按我的理解可大致分为两类:1.跟随最优解;2.不跟随最优解。

    还是上面原始人的例子,每天他有一次去往其他位置狩猎的机会,他们采用何种方式来决定今天自己应该去哪里呢?

    如果他们的策略是“跟随最优解”,那么他们选取位置的方式就是按一定的策略向群体已知的最佳狩猎位置(历史最佳)或者是当前群体中的最佳狩猎位置(今天最佳)靠近,至于是直线跑过去还是蛇皮走位绕过去,这个要看他们群体的策略。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。有了目标,大家都会朝着目标前进,总有一日,大家会在谋个位置附近相聚,相聚虽好但不利于后续的觅食容易陷入局部最优。

    什么是局部最优呢?假设在当前环境中有一“桃花源”,拥有上帝视角的我们知道这个地方就是最适合原始人们生存的,但是此地入口隐蔽“山有小口,仿佛若有光”、“初极狭,才通人。”,是一个难以发现的地方。如果没有任何一个原始人到达了这里,大家向着已知的最优位置靠近时,也难以发现这个“桃源之地”,而当大家越聚越拢之后,“桃源”被发现的可能性越来越低。虽然原始人们得到了他们的解,但这并不是我们所求的“桃源”,他们聚集之后失去了寻求“桃源”的可能,这群原始人便陷入了局部最优。

    如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?我也不知道,这个应该他们自己决定。毕竟“是什么”比“不是什么”的范围要小的多。总之不跟随最优解时,算法会有自己特定的步骤来更新个体的位置,有可能是随机在自己附近找,也有可能是随机向别人学习。不跟随最优解时,原始人们应该不会快速聚集到某一处,这样一来他们的选择更具多样性。

    按照更新过程对上面的算法分类结果如下

    可以看出上面不跟随最优解的算法只有遗传算法和差分进化算法,他们的更新策略是与进化和基因的重组有关。因此这些不跟随最优解的算法,他们大多依据进化理论更新位置(基因)我把他们叫做进化算法,而那些跟随群体最优解的算法,他们则大多依赖群体的配合协作,我把这些算法叫做群智能算法。

    目前我只总结了这两种,分类方法,如果你有更加优秀的分类方法,我们可以交流一下:

    目录

    上一篇 优化算法笔记(一)优化算法的介绍

    下一篇 优化算法笔记(三)粒子群算法(1)

    二、优化算法笔记(十三)鲸鱼算法

    (以下描述,均不是学术用语,仅供大家快乐的阅读)

    鲸鱼算法(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实现

    三、鲸鱼优化算法和灰狼优化算法哪个好

    灰狼算法好。灰狼优化算法由Mirjalili等人于2014年提出,主要模仿了自然界中灰狼群体的捕食过程。

    四、优化算法笔记(十二)烟花算法

    (以下描述,均不是学术用语,仅供大家快乐的阅读)

    烟花算法(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实现

    以上就是关于粒子群和鲸鱼算法相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    离散粒子群优化算法(离散粒子群优化算法及其应用)

    粒子群算法和蚁群算法(粒子群算法和蚁群算法哪个好)

    游戏数据网(粒子游戏数据网)

    怎么在小程序添加店铺(怎么在小程序添加店铺地址)

    发布作文的网站(发布作文的网站推荐)