柯西变异和自适应权重优化的蝴蝶算法[通俗易懂]

柯西变异和自适应权重优化的蝴蝶算法[通俗易懂]文章目录一、理论基础1、蝴蝶优化算法2、改进的蝴蝶优化算法(1)柯西变异(2)自适应权重(3)动态切换概率策略(4)算法描述二、函数测试与结果分析三、参考文献四、Matlab仿真程序一、理论基础1、蝴蝶优化算法请参考这里。2、改进的蝴蝶优化算法为了改进蝴蝶算法容易陷入局部最优和收敛精度低的问题,本文从三个方面对蝴蝶算法进行改进。首先通过引入柯西分布函数的方法对全局搜索的蝴蝶位置信息进行变异,提高蝴蝶的全局搜索能力;其次通过引入自适应权重因子来提高蝴蝶的局部搜索能力;最后采用动态切换概率ppp平衡算

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、理论基础

1、蝴蝶优化算法

请参考这里

2、改进的蝴蝶优化算法

为了改进蝴蝶算法容易陷入局部最优和收敛精度低的问题,本文从三个方面对蝴蝶算法进行改进。首先通过引入柯西分布函数的方法对全局搜索的蝴蝶位置信息进行变异,提高蝴蝶的全局搜索能力;其次通过引入自适应权重因子来提高蝴蝶的局部搜索能力;最后采用动态切换概率 p p p平衡算法局部搜索和全局搜索的比重,提升了算法的寻优性能。因此本文提出一种混合策略改进的蝴蝶优化算法(CWBOA)。

(1)柯西变异

针对蝴蝶优化算法易陷入局部最优的特点,利用柯西变异来增加种群的多样性,提高算法的全局搜索能力,增加搜索空间。柯西分布函数在原点处的峰值较小但在两端的分布比较长,利用柯西变异能够在当前变异的蝴蝶个体附近生成更大的扰动从而使得柯西分布函数的范围比较广,采用柯西变异两端分布更容易跳出局部最优值。本文融入柯西算子,充分利用柯西分布函数两端变异的效果来优化算全局最优个体,使得算法能够更好地达到全局最优。
在求得当前最优解后,本文使用公式 (1)所示的更新公式对当前全局最优解进行变异处理。 x n e w b e s t = x b e s t + x b e s t × Cauchy ( 0 , 1 ) (1) x_{newbest}=x_{best}+x_{best}×\text{Cauchy}(0,1)\tag{1} xnewbest=xbest+xbest×Cauchy(0,1)(1)

(2)自适应权重

自适应权重公式如式(2)所示 w = s i n ( π t 2 ⋅ i t m a x + π ) + 1 (2) w=sin(\frac{\pi t}{2\cdot itmax}+\pi)+1\tag{2} w=sin(2itmaxπt+π)+1(2)其中, t t t为当前迭代次数, i t m a x itmax itmax为最大迭代次数。
改进后的局部搜索公式为 x i t + 1 = w ⋅ x i t + ( r 2 × x j t − x k t ) × f i (3) x_i^{t+1}=w\cdot x_i^t+(r^2×x_j^t-x_k^t)×f_i\tag{3} xit+1=wxit+(r2×xjtxkt)×fi(3)通过融合自适应权重因子 w w w,使蝴蝶个体具有更好的局部寻优能力。

(3)动态切换概率策略

引入动态切换概率来平衡局部开采和全局开采的比重,来实现更好的寻优策略。动态切换概率 p p p的公式如下 p = 0.6 − 0.1 × ( M a x I t e r − t ) / M a x I t e r (4) p=0.6-0.1×(MaxIter-t)/MaxIter\tag{4} p=0.60.1×(MaxItert)/MaxIter(4)

(4)算法描述

CWBOA的具体执行步骤如下:
在这里插入图片描述


图1 改进算法的流程图

二、函数测试与结果分析

本文选取了基于柯西变异和动态自适应权重的蝴蝶优化算法(CWBOA) 、基本蝴蝶算法 (BOA)、鲸鱼算法(WOA)以及花授粉算法(FPA)进行对比。为了实验的公平、客观性,本文将所有算法的初始种群规模统一设为30, 迭代次数设置为500,四个算法的共有参数保持一致。CWBOA和BOA 中的 c c c感官形态设置为0.01, a a a幂指数在迭代过程从0.1迭代到0.3;基本的BOA和FPA中的切换概率均为 p = 0.8 p=0.8 p=0.8
为了验证改进后的BOA在收敛性和鲁棒性两方面的性能上更优,本文基于14个测试函数进行对比实验,标准测试函数的信息见表1。


表1 测试函数的基本信息

在这里插入图片描述本文以f1、f3、f7、f9、f11、f12、f14为例。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述最大值、最小值、平均值和标准差显示如下:

函数:F1
BOA:最大值: 1.4499e-11,最小值:1.1241e-11,平均值:1.2801e-11,标准差:8.858e-13
WOA:最大值: 7.3975e-73,最小值:2.3916e-85,平均值:3.131e-74,标准差:1.353e-73
FPA:最大值: 23803.0104,最小值:947.6602,平均值:4173.2952,标准差:5457.3121
CWBOA:最大值: 0,最小值:0,平均值:0,标准差:0
函数:F3
BOA:最大值: 5.7184e-09,最小值:2.2932e-09,平均值:4.4704e-09,标准差:1.278e-09
WOA:最大值: 8.9851e-50,最小值:4.8473e-58,平均值:5.076e-51,标准差:1.8277e-50
FPA:最大值: 8710.4476,最小值:28.1287,平均值:513.6911,标准差:1768.5884
CWBOA:最大值: 4.7981e-249,最小值:7.7934e-279,平均值:1.6759e-250,标准差:0
函数:F7
BOA:最大值: 0.41445,最小值:1.7408e-13,平均值:0.068926,标准差:0.15676
WOA:最大值: 0,最小值:0,平均值:0,标准差:0
FPA:最大值: 2.755,最小值:2.959e-11,平均值:0.10097,标准差:0.50222
CWBOA:最大值: 0,最小值:0,平均值:0,标准差:0
函数:F9
BOA:最大值: 1.2352e-11,最小值:8.7385e-12,平均值:1.012e-11,标准差:1.0014e-12
WOA:最大值: 5.2454e-05,最小值:1.6577e-46,平均值:4.0482e-06,标准差:1.0357e-05
FPA:最大值: 3505.7816,最小值:70.2088,平均值:711.0633,标准差:1036.3243
CWBOA:最大值: 0,最小值:0,平均值:0,标准差:0
函数:F11
BOA:最大值: 6.6915e-09,最小值:5.2465e-09,平均值:6.057e-09,标准差:3.692e-10
WOA:最大值: 7.9936e-15,最小值:8.8818e-16,平均值:4.6777e-15,标准差:2.6279e-15
FPA:最大值: 19.9631,最小值:14.2613,平均值:17.6983,标准差:1.6073
CWBOA:最大值: 8.8818e-16,最小值:8.8818e-16,平均值:8.8818e-16,标准差:0
函数:F12
BOA:最大值: 7.7948e-12,最小值:8.4921e-13,平均值:4.5165e-12,标准差:2.1098e-12
WOA:最大值: 0,最小值:0,平均值:0,标准差:0
FPA:最大值: 223.7537,最小值:9.77,平均值:31.449,标准差:40.2159
CWBOA:最大值: 0,最小值:0,平均值:0,标准差:0
函数:F14
BOA:最大值: 0.043863,最小值:7.9381e-14,平均值:0.026527,标准差:0.021455
WOA:最大值: 0.043671,最小值:0,平均值:0.011645,标准差:0.019642
FPA:最大值: 0.047395,最小值:8.7206e-05,平均值:0.011072,标准差:0.015677
CWBOA:最大值: 0,最小值:0,平均值:0,标准差:0

Jetbrains全家桶1年46,售后保障稳定

由函数的收敛曲线可知,改进的CWBOA在收敛的速度和精度上要优于BOA、WOA、FPA。

三、参考文献

[1] 高文欣, 刘升, 肖子雅, 等. 柯西变异和自适应权重优化的蝴蝶算法[J]. 计算机工程与应用, 2020, 56(15): 43-50.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213532.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 自定义web接收推送_Java Web

    自定义web接收推送_Java Webhttps://www.webjars.org/提供了很多js的jar,但是有时候有些js没有,我们也想打成jar,那怎么办?我们以jquery3.4.1版本为例子开始1.创建如下结构pom文件内容如下:<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http://maven.apache….

    2022年10月28日
  • python stdout

    python stdoutpythonstdout

  • 超级全面的 Lombok 注解介绍,学一波!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:riemann blog.csdn.net/riemann_/article/details/10537498…

  • java的线程安全、单例模式、JVM内存结构等知识学习和整理

    知其然,不知其所以然 !在技术的海洋里,前路漫漫,我一直在迷失着自我。欢迎访问我的csdn博客,我们一同成长!“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!” 博客首页:http://blog.csdn.net/u010648555在下面的题目来自于我要加的一个QQ群,然后要加这个QQ群,首先要通过进阶考核,也就是下面这些题,当我看到这些题目的时候。发现这些题目很常见,但是细细去研究

  • python解释器安装教程(win10)「建议收藏」

    python解释器安装教程(win10)「建议收藏」python,环境变量

  • 什么是TCC?_tc部门是什么意思

    什么是TCC?_tc部门是什么意思假设现在有一个电商系统,里面有一个支付订单的场景,那对一个订单支付之后,我们需要做下面的步骤 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 业务场景有了,现在要更进一步,实现一个TCC分布式事务的效果,也就是说,订单服务-修改订单状态,库存服务-扣减库存,积分服务-增加积分,仓储服务-创建销售出库单,上述这几个步骤,要么一起成功,要么一起失败,必须是一个整体性的事务举个例子,现在订单的状态都修

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号