融合最优邻域扰动和反向学习策略的蝴蝶优化算法
文章目录
- 一、理论基础
- 1、基本BOA
- 2、ORBOA
- 2.1 基于改进Tent混沌映射的蝴蝶位置初始化
- 2.2 混合最优邻域扰动策略和透镜成像反向学习策略
- 2.2.1 最优邻域扰动策略
- 2.2.2 透镜成像反向学习策略
- 2.3 随机惯性权重
- 2.4 动态转换概率(P2P_2P2)
- 2.5 ORBOA基本流程
- 二、仿真实验与结果分析
- 三、参考文献
一、理论基础
1、基本BOA
请参考这里。
2、ORBOA
2.1 基于改进Tent混沌映射的蝴蝶位置初始化
本文将改进的Tent混沌映射融入到算法初始阶段,使蝴蝶个体位置分布更加均匀,从而利于算法初期在空间内进行更好的搜索。
Tent混沌映射函数公式可表示为:Zk+1={2Zk,0≤Zk<0.52(1−Zk),0.5≤Zk≤1(1)Z_{k+1}=\begin{dcases}2Z_k,\quad\quad\quad\,\,\, 0\leq Z_k<0.5\\2(1-Z_k),\quad 0.5\leq Z_k\leq1\end{dcases}\tag{1}Zk+1={2Zk,0≤Zk<0.52(1−Zk),0.5≤Zk≤1(1)其中,kkk为映射次数;ZkZ_kZk为第kkk次映射函数值。
改进Tent公式可表示为:Zk+1={2(Zk+0.1⋅rand(0,1)),0≤Zk<0.52−2(Zk+0.1⋅rand(0,1)),0.5≤Zk≤1(2)Z_{k+1}=\begin{dcases}2(Z_k+0.1\cdot\text{rand}(0,1)),\quad\quad\,\,\,\, 0\leq Z_k<0.5\\2-2(Z_k+0.1\cdot\text{rand}(0,1)),\quad 0.5\leq Z_k\leq1\end{dcases}\tag{2}Zk+1={2(Zk+0.1⋅rand(0,1)),0≤Zk<0.52−2(Zk+0.1⋅rand(0,1)),0.5≤Zk≤1(2)改进Tent逆映射可表示为:Xk=lk+(uk−lk)⋅Zk(3)X_k=l_k+(u_k-l_k)\cdot Z_k\tag{3}Xk=lk+(uk−lk)⋅Zk(3)其中,uku_kuk、lkl_klk分别为优化变量区间中的最大值、最小值。
2.2 混合最优邻域扰动策略和透镜成像反向学习策略
混合最优邻域扰动策略和透镜成像反向学习策略引入BOA中,以丰富种群多样性,提高收敛精度,改善算法易陷入局优的缺陷。
2.2.1 最优邻域扰动策略
在全局位置更新时对最优位置处的邻域进行扰动,增强对其邻域空间的搜索,使之能够在全局搜索时更好地跳出局部最优,寻找到全局最优解,提高算法的收敛速度,避免算法早熟。最优邻域扰动公式为:X~(t)={X∗(t)+0.5⋅rand1⋅X∗(t),rand2<0.5X∗(t),rand2≥0.5(4)\widetilde X(t)=\begin{dcases}X^*(t)+0.5\cdot\text{rand}_1\cdot X^*(t),\quad \text{rand}_2<0.5\\X^*(t),\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\,\, \text{rand}_2\geq0.5\end{dcases}\tag{4}X(t)={X∗(t)+0.5⋅rand1⋅X∗(t),rand2<0.5X∗(t),rand2≥0.5(4)其中,X~(t)\widetilde X(t)X(t)为生成的新位置;X∗(t)X^*(t)X∗(t)为全局更新时的最优位置;rand1\text{rand}_1rand1、rand2\text{rand}_2rand2为[0,1][0,1][0,1]内均匀产生的随机数。
通常在进行最优邻域扰动后会得到较多个新生成的邻域位置,此时需用贪婪策略进行收缩排选,判断是否保留。贪婪策略公式为:X∗(t1)={X~(t),f(X~(t))<f(X∗(t))X∗(t),f(X∗(t))≤f(X~(t))(5)X^*(t1)=\begin{dcases}\widetilde X(t),\quad f(\widetilde X(t))<f(X^*(t))\\X^*(t),\,\,\,\, f(X^*(t))\leq f(\widetilde X(t))\end{dcases}\tag{5}X∗(t1)={X(t),f(X(t))<f(X∗(t))X∗(t),f(X∗(t))≤f(X(t))(5)其中,X∗(t1)X^*(t1)X∗(t1)为贪婪策略收缩排选后的最优位置;f(x)f(x)f(x)为xxx的位置适应值。若生成的位置比原位置更好,则取代原位置成为全局最优解;若不如原位置,则全局最优解位置不发生改变。
2.2.2 透镜成像反向学习策略
由于光的折射现象和直线传播,凸透镜能够在光的折射下成像,该原理称为透镜成像原理,将该原理应用在算法搜索阶段,可以更好地跳出局部最优,提高收敛精度和收敛速度。
通过变换得出DDD维空间中的反向点位置为:Xbest∗(t)=aj+bj2+aj+bj2n−Xbest(t)n(6)X^*_{\text{best}}(t)=\frac{a_j+b_j}{2}+\frac{a_j+b_j}{2n}-\frac{X_{\text{best}}(t)}{n}\tag{6}Xbest∗(t)=2aj+bj+2naj+bj−nXbest(t)(6)其中,nnn为缩放因子。
2.3 随机惯性权重
虽然BOA局部搜索能力较强,但在迭代后期仍然容易陷入局部最优,因此在局部搜索时加入随机惯性权重以增强跳出局优的能力。本文提出了一种新的随机惯性权重:ω=μmin+(μmax−μmin)⋅rand()+sin(πt2Tmax+π)(7)\omega=\mu_{\min}+(\mu_{\max}-\mu_{\min})\cdot\text{rand}()+\sin\left(\frac{\pi t}{2T_{\max}}+\pi\right)\tag{7}ω=μmin+(μmax−μmin)⋅rand()+sin(2Tmaxπt+π)(7)其中,μmin\mu_{\min}μmin和μmax\mu_{\max}μmax分别为随机惯性权重的最小值和最大值;TmaxT_{\max}Tmax为最大迭代次数;rand()\text{rand}()rand()为[0,1][0,1][0,1]的随机数。
改进后的BOA算法局部搜索阶段公式可表示为:Xit+1=ωXit+(γ2⋅Xjt−Xkt)⋅fi(8)X_i^{t+1}=\omega X_i^t+(\gamma^2\cdot X_j^t-X_k^t)\cdot f_i\tag{8}Xit+1=ωXit+(γ2⋅Xjt−Xkt)⋅fi(8)
2.4 动态转换概率(P2P_2P2)
在BOA中,切换概率起着决定采用全局搜索还是局部搜索的作用。基本BOA中的P1P_1P1往往采用1个固定常数作为转换概率的触发条件,在算法后期不能快速地收敛到最优个体,因此本文采用动态转换概率来随机切换全局和局部搜索模式,以提高算法后期的收敛速度,更好地平衡全局搜索与局部搜索之间的切换概率。该转换概率公式为:P2=0.6−0.1⋅MaxIter−tMaxIter(9)P_2=0.6-0.1\cdot\frac{\text{MaxIter}-t}{\text{MaxIter}}\tag{9}P2=0.6−0.1⋅MaxIterMaxIter−t(9)其中,ttt、MaxIter\text{MaxIter}MaxIter分别为当前迭代次数和最大迭代次数。当P2>rP_2>rP2>r时,算法采用混合最优邻域扰动策略和透镜成像反向学习策略的全局位置更新公式进行位置更新;反之,算法采用引入随机权重的局部位置更新公式。
2.5 ORBOA基本流程
由于BOA算法本身收敛精度不高,易陷入局部最优,因此引入了改进Tent混沌映射、最优邻域扰动策略和透镜成像反向学习策略,以及在局部搜索阶段引入随机惯性权重,使其能够更好地均匀分布和进行全局寻优。具体算法步骤为:
步骤1 参数初始化。设置初始参数中的种群规模(NNN)、搜索空间维度(DDD)、最大迭代次数(MaxIter)、感觉模态(ccc)、幂指数(aaa)、动态转换概率(P2P_2P2)、初始值上下界(ub,lb)(u_b,lb)(ub,lb)。
步骤2 应用改进Tent混沌序列对初始状态下的种群位置重新分布,生成NNN个DDD维向量ZiZ_iZi,并将其各分量载波到原问题控制变量的取值范围内,对蝴蝶初始个体位置进行重分布。
步骤3 计算每只蝴蝶的适应度(fif_ifi),选出当前最优适应度(fgf_gfg)和其所对应的位置(XbX_bXb)。同时随机产生1个随机数(rrr)。
步骤4 若P2>rP_2>rP2>r,则根据最优邻域扰动策略(式(4))和透镜成像反向学习策略(式(6))对其进行全局位置更新,产生反向解;若更新后的位置更优,则替代原位置成为全局最优位置并采用贪婪机制(式(5))对产生的新位置进行收缩;若不如原来位置则原来位置保持不变。
步骤5 若P2≤rP_2\leq rP2≤r则采用局部随机惯性权重(式(8))进行局部位置更新。
步骤6 判断算法是否达到最大迭代次数或者求解精度。若是,循环结束,输出全局最优解;否则返回到步骤3重新进行寻优。
二、仿真实验与结果分析
将ORBOA与BOA、SSA、GWO和WOA这4种算法进行比较,设置种群规模为30,最大迭代次数为500,每个函数独立运行50次,以文献[1]中表1的6个30维的测试函数为例,结果显示如下:
函数:F1
SSA:最差值: 1.0201e-06, 最优值: 2.7918e-08, 平均值: 1.7683e-07, 标准差: 2.2666e-07, 秩和检验: 3.3111e-20
GWO:最差值: 7.5883e-27, 最优值: 8.7798e-30, 平均值: 1.1979e-27, 标准差: 1.7014e-27, 秩和检验: 3.3111e-20
BOA:最差值: 1.4672e-11, 最优值: 1.1079e-11, 平均值: 1.3089e-11, 标准差: 8.5538e-13, 秩和检验: 3.3111e-20
WOA:最差值: 4.5319e-70, 最优值: 2.8367e-86, 平均值: 1.0268e-71, 标准差: 6.4284e-71, 秩和检验: 3.3111e-20
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
SSA:最差值: 6.9511, 最优值: 0.068147, 平均值: 2.3448, 标准差: 1.6995, 秩和检验: 3.3111e-20
GWO:最差值: 4.065e-16, 最优值: 8.2343e-18, 平均值: 1.0182e-16, 标准差: 8.2431e-17, 秩和检验: 3.3111e-20
BOA:最差值: 5.9414e-09, 最优值: 1.3054e-09, 平均值: 4.2585e-09, 标准差: 1.3917e-09, 秩和检验: 3.3111e-20
WOA:最差值: 2.4058e-49, 最优值: 4.3533e-58, 平均值: 6.1619e-51, 标准差: 3.4161e-50, 秩和检验: 3.3111e-20
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F3
SSA:最差值: 0.54769, 最优值: 0.058656, 平均值: 0.17787, 标准差: 0.089304, 秩和检验: 7.0661e-18
GWO:最差值: 0.0088545, 最优值: 0.00050171, 平均值: 0.0019388, 标准差: 0.0013433, 秩和检验: 7.5041e-18
BOA:最差值: 0.0029791, 最优值: 0.00046065, 平均值: 0.0014843, 标准差: 0.00063359, 秩和检验: 7.9688e-18
WOA:最差值: 0.01416, 最优值: 0.000116, 平均值: 0.0026981, 标准差: 0.0028216, 秩和检验: 4.9596e-15
ORBOA:最差值: 0.00050355, 最优值: 3.9414e-07, 平均值: 0.00015054, 标准差: 0.0001266, 秩和检验: 1
函数:F4
SSA:最差值: 93.5259, 最优值: 20.8941, 平均值: 52.0363, 标准差: 18.2647, 秩和检验: 3.3111e-20
GWO:最差值: 25.8404, 最优值: 0, 平均值: 2.6807, 标准差: 4.9166, 秩和检验: 1.088e-19
BOA:最差值: 205.4265, 最优值: 0, 平均值: 27.455, 标准差: 68.6706, 秩和检验: 7.1392e-15
WOA:最差值: 203.9157, 最优值: 0, 平均值: 4.0783, 标准差: 28.838, 秩和检验: 0.15939
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F5
SSA:最差值: 6.0561, 最优值: 0.93163, 平均值: 2.7897, 标准差: 1.0341, 秩和检验: 3.3111e-20
GWO:最差值: 1.501e-13, 最优值: 7.5495e-14, 平均值: 9.8801e-14, 标准差: 1.8386e-14, 秩和检验: 3.0202e-20
BOA:最差值: 7.0823e-09, 最优值: 3.6587e-09, 平均值: 5.8872e-09, 标准差: 6.9461e-10, 秩和检验: 3.3111e-20
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 4.1567e-15, 标准差: 2.0097e-15, 秩和检验: 1.4011e-15
ORBOA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
函数:F6
SSA:最差值: 0.07796, 最优值: 0.0002683, 平均值: 0.016769, 标准差: 0.01602, 秩和检验: 3.3111e-20
GWO:最差值: 0.028265, 最优值: 0, 平均值: 0.0045677, 标准差: 0.0086249, 秩和检验: 0.00025398
BOA:最差值: 1.1855e-11, 最优值: 1.2346e-12, 平均值: 4.3966e-12, 标准差: 2.3202e-12, 秩和检验: 3.3111e-20
WOA:最差值: 0.18839, 最优值: 0, 平均值: 0.0037679, 标准差: 0.026643, 秩和检验: 0.32709
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
结果表明:ORBOA具有更高的收敛速度、收敛精度和跳出局优的能力。
三、参考文献
[1] 李彦苍, 卜英乔, 朱海涛, 等. 融合最优邻域扰动和反向学习策略的蝴蝶优化算法[J]. 中国科技论文, 2021, 16(11): 1181-1188.
融合最优邻域扰动和反向学习策略的蝴蝶优化算法相关推荐
- 【智能优化算法】基于分段权重和变异反向学习的蝴蝶优化算法求解单目标优化问题附matlab代码
1 简介 针对原始蝴蝶优化算法容易陷入局部最优解,收敛速度慢及寻优精度低等问题,提出分段权重和变异反向学习的蝴蝶优化算法.通过飞行引领策略来矫正邻域内蝴蝶的自身飞行,降低盲目飞行,增强算法跳出局部最优 ...
- 基于透镜成像学习策略的灰狼优化算法-附代码
基于透镜成像学习策略的灰狼优化算法 文章目录 基于透镜成像学习策略的灰狼优化算法 1.灰狼优化算法 2.基于透镜成像学习的 GWO 算法 2.1修改控制参数*C*策略 2.2 透镜成像反向学习策略 3 ...
- 结合重心反向变异的飞蛾扑火优化算法-附代码
结合重心反向变异的飞蛾扑火优化算法 文章目录 结合重心反向变异的飞蛾扑火优化算法 1.飞蛾扑火优化算法 2. 改进飞蛾扑火优化算法 2.1 佳点集初始化种群 2.2 引入动态惯性权重 2.3 重心反向 ...
- 融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法-附代码
融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法 文章目录 融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 无限折叠迭代混沌映射的种群初始化 2.2 ...
- 融合差分变异策略和自适应调整权重的改进蝴蝶优化算法
文章目录 一.理论基础 1.基本蝴蝶优化算法 2.DMABOA改进算法 (1)引入非线性惯性权重 (2)加入具有全局自适应特征的F分布随机变异 (3)融入差分定向变异策略的局部搜索 3.DMABOA算 ...
- 融合改进天牛须和正余弦的双重搜索优化算法
文章目录 一.理论基础 1.正余弦优化算法 2.天牛须搜索算法 3.融合改进天牛须和正余弦的优化算法 (1)引入自适应权重 (2)递减参数r1r_1r1的改变 (3)变步长搜索机制 (4)算法流程图 ...
- 融合收敛因子和樽海鞘群的蝴蝶优化算法
文章目录 一.理论基础 1.蝴蝶优化算法 2.改进策略 (1)收敛因子 (2)融合樽海鞘群领导者策略 (3)CFSSBOA实施步骤 二.仿真实验与分析 三.参考文献 一.理论基础 1.蝴蝶优化算法 请 ...
- 融合收敛因子和樽海鞘群的蝴蝶优化算法-附代码
融合收敛因子和樽海鞘群的蝴蝶优化算法 文章目录 融合收敛因子和樽海鞘群的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 收敛因子 2.2 融合樽海鞘群领导者策略 3.实验结果 4.参考 ...
- 【蝴蝶算法】基于随机惯性权重策略+最优邻域扰动策略+动态转换概率策略的蝴蝶算法求解单目标优化问题附matlab代码IBOA...
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- leetcode--搜索插入位置--python
- 二进制的原码,反码,补码
- 如何在一家大公司里受到重用
- 使用sobel、prewitt、拉普拉斯算子、差分法提取图像的边缘
- 大M单纯形算法的MATLAB实现
- 快速上手python websockets
- 地理信息系统概论 - 地理信息系统(1)
- Robotframework(三)常用API介绍
- android 高性能框架,高性能架构
- python之简单的文件处理
- vim配置参考备忘-------嵌入式
- html解压zip文件怎么打开方式,使用zip.js压缩文件和解压文件
- java 取消引用_java编译时所说的“无法取消引用”是什么意思
- QQ浏览器 不支持html5,如何解决qq浏览器插件显示不了问题
- [生存志] 第33节 黄帝战蚩尤
- 离线/内网环境下搭建vue开发环境
- 软考初级程序员上午单选题(16)
- ubuntu-10.04下 联想 卲阳E46L以太 网驱动程序安 装
- 人类图HumanDesign
- Python里面数据库连接
热门文章
- JAVA订餐系统的心得体会
- 微博舆情 之 数据获取
- hdu 5175 Misaki's Kiss again (抑或运算+公式变形)
- html英文期刊参考文献,论文参考文献英文格式
- 阿里邮箱企业版免费与收费邮箱的区别有哪些
- R语言patchwork包将多个可视化结果组合起来、使用plot_annotation函数以及tag_level参数将组合图用大写字母进行顺序编码、为组合图的标签添加自定义前缀信息
- 射频流盘与射频孪生——流盘技术应用(1)
- 惠普136w耗材贵吗_惠普136w更换硒鼓之后磨粉极低 惠普136w原装硒鼓能加碳粉吗...
- 测试 软通动力软件测试机试_软通动力软件测试笔试题 (转)
- css初级之高级语法