基于余弦相似度的改进蝴蝶优化算法
文章目录
- 一、理论基础
- 1、蝴蝶优化算法
- 2、改进蝴蝶优化算法
- (1)基于余弦相似度位置更新策略
- (2)根据适应度动态调整转换概率策略
- (3)自适应混合惯性权重
- 二、MSBOA算法步骤
- 三、仿真实验与结果分析
- 1、与原算法对比
- 2、与已有文献算法对比
- 四、参考文献
一、理论基础
1、蝴蝶优化算法
请参考这里。
2、改进蝴蝶优化算法
(1)基于余弦相似度位置更新策略
引入余弦相似度衡量最优蝴蝶位置与周围蝴蝶的分布情况,通过构造当前蝴蝶个体位置和最优个体之间的向量,余弦相似度为分布情况的指标,更新余弦相似度较高且适应度较差的蝴蝶个体位置,既加快算法收敛的速度,也保持了种群的多样性。策略具体细节如下:
首先构建a,b\boldsymbol{a,b}a,b向量:a=xit−g∗b=xjt−g∗(1)\begin{aligned}\boldsymbol a=\boldsymbol x_i^t-\boldsymbol g^*\\ \boldsymbol b=\boldsymbol x_j^t-\boldsymbol g^*\end{aligned}\tag{1}a=xit−g∗b=xjt−g∗(1)其中,第ttt次迭代的当前蝴蝶位置,记为xit\boldsymbol x_i^txit。xjt\boldsymbol x_j^txjt表示第ttt次迭代其他蝴蝶位置中的一个,g∗\boldsymbol g^*g∗为第ttt代中最优蝴蝶的位置。
定义cosj(a,b)\cos_j(\boldsymbol a, \boldsymbol b)cosj(a,b)为两个向量之间的余弦相似度,取值范围为[−1,1][-1,1][−1,1],个体位置之间相似度计算公式为:cosj(a,b)=a⋅b∣a∣∣b∣(2)\cos_j(\boldsymbol a, \boldsymbol b)=\frac{\boldsymbol{a\cdot b}}{|\boldsymbol a||\boldsymbol b|}\tag{2}cosj(a,b)=∣a∣∣b∣a⋅b(2)其中,分子为向量a,b\boldsymbol a,\boldsymbol ba,b的内积,分母为向量a,b\boldsymbol a, \boldsymbol ba,b的模之积。
位置更新公式如下:{xjt=g∗+α1n∣∣xjt∣∣2Rrg∗f(xjt)≥f(xit)xit=xit+δRexitotherwise(3)\begin{dcases}\boldsymbol x_j^t=\boldsymbol g^*+\alpha\frac{1}{n||\boldsymbol x_j^t||_2}\boldsymbol R_r\boldsymbol g^*\quad f(\boldsymbol x_j^t)≥f(\boldsymbol x_i^t)\\\boldsymbol x_i^t=\boldsymbol x_i^t+\delta\boldsymbol R_e\boldsymbol x_i^t\quad \quad \quad \quad \,\,\,\,otherwise\end{dcases}\tag{3}⎩⎨⎧xjt=g∗+αn∣∣xjt∣∣21Rrg∗f(xjt)≥f(xit)xit=xit+δRexitotherwise(3)其中f(xit)f(\boldsymbol x_i^t)f(xit)和f(xjt)f(\boldsymbol x_j^t)f(xjt)分别为蝴蝶个体xit\boldsymbol x_i^txit和xjt\boldsymbol x_j^txjt的适应度值,α\alphaα为旋转因子;Rr∈Rn×n\boldsymbol R_r∈\boldsymbol R^{n×n}Rr∈Rn×n是一个其元素取值在 [−1,1][-1,1][−1,1]之间均匀分布的随机矩阵,∣∣⋅∣∣||\boldsymbol\cdot||∣∣⋅∣∣为向量2-范数,理论上能将位置旋转到以半径为α\alphaα的任何位置。Re∈Rn×nR_e∈R^{n×n}Re∈Rn×n是一个其非零元素取值服从高斯分布随机对角矩阵,从理论上看,能将位置伸缩到服从δ\deltaδ的范围内。
(2)根据适应度动态调整转换概率策略
本文采用文献[1]所提出的自适应机制来描述切换概率,并且做了改进。如公式(1)所示。Pit=Pmin+(log(∣fmint∣)+∣fmint∣log(∣fit∣)+∣fit∣)×(Pmax−Pmin)(4)P_i^t=P_{min}+\left(\frac{log(|f_{min}^t|)+|f_{min}^t|}{log(|f_i^t|)+|f_i^t|}\right)×(P_{max}-P_{min})\tag{4}Pit=Pmin+(log(∣fit∣)+∣fit∣log(∣fmint∣)+∣fmint∣)×(Pmax−Pmin)(4)其中,PitP_i^tPit是在第ttt次迭代中第iii只蝴蝶个体位置的切换概率,PminP_{min}Pmin和PmaxP_{max}Pmax分别是切换概率的最小值和最大值,fmintf_{min}^tfmint表示第ttt次迭代的最好适应度,fitf_i^tfit表示在第ttt次迭代第iii只蝴蝶的适应度。蝴蝶位置对应的适应度接近最优的适应度时,其切换的概率接近大值,更容易进入全局的引导;反之当前个体的适应度与最好的适应度相差较大时,其转换概率接近最小值,更容易进入局部的引导。这样有利于将好的个体引导全局,较差的个体得到更多的机会引导。
(3)自适应混合惯性权重
为了协调算法的全局和局部搜索能力引入了自适应惯性权重(5)。w=β×(1−exp(∣fmint∣)+∣fmint∣exp(∣fit∣)+∣fit∣)+K(5)w=\beta×\left(1-\frac{\exp(|f_{min}^t|)+|f_{min}^t|}{\exp(|f_i^t|)+|f_i^t|}\right)+K\tag{5}w=β×(1−exp(∣fit∣)+∣fit∣exp(∣fmint∣)+∣fmint∣)+K(5)其中,KKK为调整过的sigmoidsigmoidsigmoid函数(6)。K=1−1/(1+exp(−(−15t−7Max_iter)/Max_iter))(6)K=1-1/(1+\exp(-(-15t-7Max\_iter)/Max\_iter))\tag{6}K=1−1/(1+exp(−(−15t−7Max_iter)/Max_iter))(6)KKK值是调整过的sigmoidsigmoidsigmoid函数,该函数是神经网络中最常用的激活函数之一。该函数在线性和非线性之间展现出极好的平衡性,拥有平滑的上界域和下边界域。在迭代前期参数KKK能保持较大值,延长初期阶段的全局搜索能力和强度。伸缩的范围较大,保留个体的多样性。中期K值随着迭代次数的增加而减少,从而加快算法的收敛速度。在迭代后期的一段保持一个较小的权重,延长了迭代后期的局部搜索时间,更有利于进行局部搜索,更新后的全局阶段搜索过程用公式(7)表示。xit+1=wxit+(r2×g∗−xit)×f(7)\boldsymbol x_i^{t+1}=w\boldsymbol x_i^t+(\boldsymbol r^2×\boldsymbol g^*-\boldsymbol x_i^t)×f\tag{7}xit+1=wxit+(r2×g∗−xit)×f(7)其中,参数β\betaβ为影响程度因子。蝴蝶个体适应度接近当前最好的适应度时,其权重接近最小值,较小的权重有利于进行局部开发;反之当前个体的适应度与最好的适应度相差较大时,其权重接近最大值,保留当前个体的更多信息,下一次迭代保持较强的全局搜索能力。
二、MSBOA算法步骤
多策略改进蝴蝶优化算法(MSBOA)的基本流程如下:
Step 1:初始化。初始化算法参数,随机生成种群位置,计算适应度并择优保存。
Step 2:蝴蝶位置更新阶段。根据式(1)构建向量,并根据式(2)计算蝴蝶个体位置的余弦相似度,设置阈值CCC将相似度高于阈值的蝴蝶位置通过式(3)进行位置更新。
Step 3: 计算当前个体适应度,并根据式(4)计算PPP值判断当前迭代当前个体是进行全局搜索还是局部搜索,并通过式(5)计算当前个体的自适应惯性权重,更新蝴蝶位置。
Step 4: 计算位置更新后每只蝴蝶所在位置适应度,并且更新最优位置。
Step 5: 重复Step 2、Step 3和Step 4的更新迭代过程,若达到设置收敛精度要求或规定的最大迭代次数,终止算法并输出最优解。
三、仿真实验与结果分析
1、与原算法对比
将MSBOA算法与基于余弦相似度位置更新策略的BOA1算法,结合动态调整概率策略的BOA2算法,增加自适应混合惯性权重的BOA3算法以及基本的BOA算法进行比较,验证不同改进策略的有效性。独立运行30次。以F1~F3为例。
下图为对函数F1的寻优对比曲线。
5种算法的最大值、最小值、平均值及标准差显示如下:
函数:F1
BOA:最大值: 1.4873e-11,最小值:1.1842e-11,平均值:1.3085e-11,标准差:7.8596e-13
BOA1:最大值: 1.2976e-12,最小值:4.8647e-14,平均值:2.5993e-13,标准差:2.4962e-13
BOA2:最大值: 1.4247e-11,最小值:1.1195e-11,平均值:1.2618e-11,标准差:8.3223e-13
BOA3:最大值: 5.7668e-131,最小值:0,平均值:1.9223e-132,标准差:1.0529e-131
MSBOA:最大值: 0,最小值:0,平均值:0,标准差:0
下图为对函数F2的寻优对比曲线。
5种算法的最大值、最小值、平均值及标准差显示如下:
函数:F2
BOA:最大值: 5.7262e-09,最小值:1.999e-09,平均值:4.5713e-09,标准差:1.2576e-09
BOA1:最大值: 1.2196e-09,最小值:1.0712e-10,平均值:3.6748e-10,标准差:2.2777e-10
BOA2:最大值: 8.7251e-09,最小值:5.2145e-09,平均值:6.5784e-09,标准差:8.9912e-10
BOA3:最大值: 8.1849e-282,最小值:0,平均值:2.7283e-283,标准差:0
MSBOA:最大值: 0,最小值:0,平均值:0,标准差:0
下图为对函数F3的寻优对比曲线。
5种算法的最大值、最小值、平均值及标准差显示如下:
函数:F3
BOA:最大值: 1.3987e-11,最小值:1.0692e-11,平均值:1.2555e-11,标准差:8.4149e-13
BOA1:最大值: 7.789e-12,最小值:2.1539e-12,平均值:5.4507e-12,标准差:1.8653e-12
BOA2:最大值: 1.3196e-11,最小值:8.5686e-12,平均值:1.0695e-11,标准差:1.1149e-12
BOA3:最大值: 1.6424e-56,最小值:0,平均值:5.4747e-58,标准差:2.9986e-57
MSBOA:最大值: 0,最小值:0,平均值0,标准差:0
2、与已有文献算法对比
将MSBOA算法与向量粒子群算法(Phasor Particle Swarm Optimization,PPSO)[2],改进的灰狼优化算法(An improved grey wolf optimization,IGWO)[3],对数惯性权重和高斯差分变异策略的鲸群算法(Whale Optimization Algorithm based on Logarithmic inertia weight and Gaussian difference mutation,IGWOA)[4]以 及 优 选 策 略 的 自 适 应 蚁 狮 优 化 算 法[5](Preferred Strategy Self-adaptive ALO,PSALO),基于折射反向学习与自适应控制因子的改进樽海鞘群算法(Modified SSA Based on Refracted Oppositional Learning and Adaptive Control Factor,RCSSA)[6]。独立运算30次进行比较,验证改进算法的优越性。以F1~F3为例。
下图为对函数F1的寻优对比曲线。
6种算法的最大值、最小值、平均值及标准差显示如下:
函数:F1
PPSO:最大值: 0.1012,最小值:0.00010734,平均值:0.022354,标准差:0.024799
IGWO:最大值: 5.7749e-315,最小值:5.8029e-316,平均值:2.8935e-315,标准差:0
IGWOA:最大值: 0,最小值:0,平均值:0,标准差:0
PSALO:最大值: 1.7605e-09,最小值:2.4675e-11,平均值:3.8461e-10,标准差:4.3313e-10
RCSSA:最大值: 0,最小值:0,平均值:0,标准差:0
MSBOA:最大值: 0,最小值:0,平均值:0,标准差:0
下图为对函数F2的寻优对比曲线。
6种算法的最大值、最小值、平均值及标准差显示如下:
函数:F2
PPSO:最大值: 2.3202,最小值:0.011792,平均值:0.66735,标准差:0.51065
IGWO:最大值: 3.5055e-158,最小值:9.976e-159,平均值:1.9556e-158,标准差:6.525e-159
IGWOA:最大值: 1.5589e-186,最小值:3.886e-198,平均值:6.6509e-188,标准差:0
PSALO:最大值: 2.4964e-05,最小值:2.4291e-06,平均值:7.7968e-06,标准差:5.0552e-06
RCSSA:最大值: 2.3135e-173,最小值:1.6686e-173,平均值:1.999e-173,标准差:0
MSBOA:最大值: 0,最小值:0,平均值:0,标准差:0
下图为对函数F3的寻优对比曲线。
6种算法的最大值、最小值、平均值及标准差显示如下:
函数:F3
PPSO:最大值: 1.2508,最小值:1.1228e-07,平均值:0.14186,标准差:0.26569
IGWO:最大值: 8.9925e-303,最小值:1.2995e-304,平均值:1.5428e-303,标准差:0
IGWOA:最大值: 0,最小值:0,平均值:0,标准差:0
PSALO:最大值: 3.3382e-08,最小值:3.3207e-09,平均值:1.4187e-08,标准差:8.2333e-09
RCSSA:最大值: 0,最小值:0,平均值:0,标准差:0
MSBOA:最大值: 0,最小值:0,平均值:0,标准差:0
综上可知,对于以上基本测试函数,MSBOA都有较优的稳定性以及寻优能力,有效的解决BOA算法求解精度不高的问题。
四、参考文献
[1] 宋钰, 石立宝. 参数动态调整的自适应布谷鸟算法[J]. 计算机工程与应用, 2020, 56(23): 61-67.
[2] Ghasemi, M., Akbari, E., Rahimnejad, A. et al. Phasor particle swarm optimization: a simple and efficient variant of PSO[J]. Soft Computing, 2019, 23: 9701-9718.
[3] 龙文, 伍铁斌. 协调探索和开发能力的改进灰狼优化算法[J]. 控制与决策, 2017, 32(10): 1749-1757.
[4] 陈雷, 尹钧圣. 高斯差分变异和对数惯性权重优化的鲸群算法[J]. 计算机工程与应用, 2021, 57(2): 77-90.
[5] 刘景森, 霍宇, 李煜. 优选策略的自适应蚁狮优化算法[J]. 模式识别与人工智能, 2020, 33(2): 121-132.
[6] 范千, 陈振健, 夏樟华. 一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法[J]. 哈尔滨工业大学学报, 2020, 52(10): 183-191.
[7] 陈俊, 何庆. 基于余弦相似度的改进蝴蝶优化算法[J]. 计算机应用, 2021, 41(9): 2668-2677.
基于余弦相似度的改进蝴蝶优化算法相关推荐
- 融合差分变异策略和自适应调整权重的改进蝴蝶优化算法
文章目录 一.理论基础 1.基本蝴蝶优化算法 2.DMABOA改进算法 (1)引入非线性惯性权重 (2)加入具有全局自适应特征的F分布随机变异 (3)融入差分定向变异策略的局部搜索 3.DMABOA算 ...
- 融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法-附代码
融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法 文章目录 融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 无限折叠迭代混沌映射的种群初始化 2.2 ...
- 混合策略改进的蝴蝶优化算法-附代码
混合策略改进的蝴蝶优化算法 文章目录 混合策略改进的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 混沌映射初始化 2.2 融合改进正弦余弦算法的局部搜索 2.3 自适应权重系数 2. ...
- 混沌反馈共享和群体协同效应的蝴蝶优化算法—附代码
混沌反馈共享和群体协同效应的蝴蝶优化算法 文章目录 混沌反馈共享和群体协同效应的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 Hénon混沌映射 2.2 反馈共享机制 2.3 群体协 ...
- 融合收敛因子和樽海鞘群的蝴蝶优化算法-附代码
融合收敛因子和樽海鞘群的蝴蝶优化算法 文章目录 融合收敛因子和樽海鞘群的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 收敛因子 2.2 融合樽海鞘群领导者策略 3.实验结果 4.参考 ...
- 【LEACH协议】基于matlab蝴蝶优化算法WSN安全分簇路由设计【含Matlab源码 2567期】
⛄一.蝴蝶优化算法(MBO)简介 1 介绍 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算法.该算法受 ...
- 基于混合策略改进的蝴蝶优化算法
文章目录 一.理论基础 1.蝴蝶优化算法 2.正弦余弦算法 3.MSBOA算法(混合策略改进的蝴蝶优化算法) (1)融合改进正弦余弦算法的局部搜索 (2)自适应权重系数 (3)逐维变异策略 二.MSB ...
- 基于 Iterative 映射和单纯形法的改进灰狼优化算法-附代码
基于 Iterative 映射和单纯形法的改进灰狼优化算法 文章目录 基于 Iterative 映射和单纯形法的改进灰狼优化算法 1.灰狼优化算法 2. 改进灰狼优化算法(SMIGWO) 2.1 混沌 ...
- 基于改进鲸鱼优化算法的WSN覆盖优化
文章目录 一.理论基础 1.WSN节点覆盖模型 2.基本鲸鱼算法 3.改进鲸鱼优化算法 (1)量子位Bloch球面初始化 (2)改进搜索猎物过程 (3)莱维飞行扰动策略 二.算法流程 三.仿真实验与分 ...
最新文章
- 深度学习已至“瓶颈”?英特尔:数据处理是一剂良药
- UIActionSheet和UIProgressView的组合
- mysql max connects_mysql max_connections 总是 4190
- 使用 GMap.NET 实现添加标注、移动标注功能。(WPF版)
- 启明云端用一张表格带你了解sigmastar SSD20x系列的区别!帮助你快速完成选型!
- 将变量区分_【统计学】区分定类、定序、定距、定比变量!
- 软考高级 真题 2011年上半年 信息系统项目管理师 综合知识
- xbox360使用_从Xbox360浏览网页
- 电子密码锁程序C语言,基于51单片机的电子密码锁程序
- win7系统无法连接蓝牙的强推方案
- 快狗打车CTO沈剑:怕什么技术无穷尽?进一寸有一寸的欢喜
- 美式口语发音技巧:《发音总结》
- 【微信支付付款至零钱】
- 滤波算法一(C程序)
- App自动化测试之Java平台下使用Appium测试App(一)
- html 白色用rgba,javascript – 将RGB转换为RGBA白色
- Set集合下的奇葩,TreeSet有序而且类型相同
- iOS:app直播---原理篇
- 19个免费的ppt制作网站
- Python数据分析的bs4用法