极其详细,阐述麻雀优化算法的优缺点和非常全的改进思路

更多内容第一时间发布在本人个人公众号:算法仓库

麻雀算法具有收敛精度高、收敛速度快、鲁棒性强等特点,在函数优化问题方面,优于粒子群算法,灰狼优化算法等群智能算法。

麻雀优化算法作为一种启发式优化算法,是利用麻雀觅食并逃避捕食者的行为而提出的群智能优化算法,具有寻优能力强、求解效率高等优点。

在麻雀搜索算法中包含三种类型的麻雀个体,即发现者、跟随者和侦察者,三种类型对应三种行为。

与其他许多小鸟相比,麻雀和很强的记忆力。其中有两种不同类型的圈养家麻雀,发现者和加入者。发现者积极寻找食物来源,而加入者则通过生产者获得食物。

发现者在麻雀群体中占有主导地位,在群体中占有的比例一般为10%-20%,负责为整个群体寻找食物并且提供食物的方位和拥有食物的区域。跟随者会一直对发现者监控,一旦发现者找到食物,跟随者会立即跟随发现者去抢夺食物。此外,麻雀能够灵活的在发现者和捕食者之间切换。位于中心的麻雀有时会靠近附近的麻雀,以减少其危险范围。

警戒者负责对觅食区域周围进行监视,当觅食区域周围有捕食者出现时,警戒者会即刻预警,预警信号超过警戒值,整个种群会在发现者的带领下移动寻找下一个觅食地点。

由此,在这几种行为的基础上,设计出了,一种新的启发式算法。

发现者位置更新公式如下:

发现者是给整个麻雀种群提供食物的位置和方向,给予整个种群其更大的全局搜索能力。

其中, 是一个常数,表示最大迭代次数; 是一个随机数. 是一个 的矩阵。Q是服从正态分布的随机数; 是一个 的矩阵。 ,表示预警值; ,表示安全值。

加入者:

表示代中最优发现者的位置;。Xworst表示当前全局最差的位置。最差个体的位置; 表示一个 的矩阵,矩阵中的每单元为随机分配的 -1 和 1 ,且 。

警戒者:

其中, 为当前 代全局最优值;而 为步长控制系数, 它服从正态分布; 为 -1 到 1 的随机数; 是最小的常数,以避免分母出现零。 、、 分别为全局最差适应度值、当前适应度值、全局最优适应度值。

麻雀优化算法改进思路:

1.种群优化。因为麻雀优化算法的种群是随机初始化的,这样会造成初始种群的分布不均,而且如果做应用,外循环多次迭代取平均值,可能会造成初始种群陷入小周期,多次取到不好的值。

基于此,常见的改进,就是对种群进行初始化,一般常用混沌映射,和反向学习进行改进。但是,比较常用的几种映射都已经有人用过了,所以我们需要突出创新,可以用一些小众但映射比较均匀的混沌映射。反向学习也是如此,常见的镜像反向学习,凸透镜成像等等,似乎都已经有人用过了。我在此想到一种新的改进初始化种群的方式,就是,让混沌映射(任选一种)与方向学习(任选一种)让他们随机搭配,然后分别生成种群,组成种群数为2N的种群。然后再取前N个适应度值较好的种群进行排序。这样可以加快收敛,同时避免生成的种群,落入小周期的陷阱。这虽然复杂,但却有效,不失为好的创新。知网上已有类似文章,但不被大众熟知。

2.发现者公式改进:

为 中的均匀随机数, 为警戒阈值,取值范围为 。可以看出,当 大于 时,该发现者将按正态分布随机移动到当前位置附近。(其值收敛于最优位置) 。

当 小于 时是什么情况呢,我们先看看函数 的图像,其中 取值为 1000 。

可以看出在其分布随着 的变大,取值范围逐渐由 慢慢缩小为约 。 i值较小时,取值靠近 1 的概率较高,随着i的增大,取值的分布变得较为均匀。所以当 小于ST,麻雀的每一维都在变小,当然,这不是一个好策略。(其值收敛于 0 )。

所以,我们可以对麻雀搜索算法的发现者公式进行改进,大部分论文都注意到了这个麻雀算法的缺点。但是改进的效果却不尽相同,大部分仅仅停留在表面,很难对其公式做出有意义的改进,绝大部分都是替换,即把麻雀的发现者公式替换成其他算法的全局搜索策略。这样也有个好处,就是相当于融合了别的算法,名义上会更好听。但是实际上,并为真正改善原有算法的缺点,当然了,从写论-文的角度来看,性价比更高。 所以,大部分的改进者,尽可用此方法。

2.跟随者

首先我们先看看 是一个大小为 的矩阵 (1行 列),其每一维都随机从 中选取 。

由于是行向量与矩阵运算,所以文中公式两边不应该出现公式, 出现公式则表示该变量是一个数值而非一个向量。

简化可得其位置更新公式如下:

其中 为当前种群中麻雀的最差位置, 则为种群中麻雀的最优位置。 从公式中可以看出,若 时,其值为一个标准正态分布随机数与一个以自然对数为底数的指数函数的积,当种群收敛时其取值符合标准正态分布随机数。(其值会收敛于 0 )。

若 时,其取值为当前最优的麻雀的位置加上该麻雀与最优位置每一维距离随机加减后,将总和均分到每一维上。

这样解释有点绕口,请结合公式自行理解。该过程可以描述为在当前最优位置附近随机找一个位置,且每一维距最优位置的方差将会变得更小,即不会出现在某一维上与最优位置相差较大,而其他位置相差较小。(其值收敛于最优位置)。

3.警戒者

麻雀算法常见的改进多出于警戒者,因为其参数多,这是麻雀算法的最后一环,如果这个公式好的话,会极大地增强种群多样性,是种群后期不会陷入局部最优解。

在 SSA 算法中,发现者的步长控制参数 β 和 K在平衡全局搜索能力与局部开发能力方面发挥重要作用,但因为 β 和 K 都为随机数,无法满足算法在解空间的探索,可能导致 SSA 陷入局部最优,于是对步长控制参数 β 和 K 进行优化,较大的控制参数便于全局搜索,较小的控制参数促进局部开发。因此改进这两个参数的人很多。

原始的比例系数在20%,但是我们为了更好的解,还可以对比例系数调整改进,进而提升寻优能力。

当然,警戒者的公式其实也可以换成其他算法的全局搜索公式。或者改进一些常用的策略,用来增加种群的多样性,例如莱维飞行,反向学习,柯西变异,高斯变异等等这些策略,但要注意,这些常用的策略是否已经有前人做过。

以上种种,皆可为读者参考,由此可以深思其他算法类似的改进,当然这些只是改进的想法和思路,具体的改进效果需要各位读者去调试,因为这个基础的效果本来就很好,改进过后也不尽然比原来的算法好。

至于基础的麻雀优化算法代码,我就不列上了,相信大家都有,没有的私信我,我发给你。

上面有些符号用latex,这里显示不了,

原文链接:

https://mp.weixin.qq.com/s/tbGKCQvMgPtnzBvhui1mjA

文章版权声明:除非注明,否则均为 谢士广博客 原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,7609人围观)

还没有评论,来说两句吧...

目录[+]