莱维飞行和反馈策略的自适应被囊群算法-程序员宅基地

技术标签: matlab  最优化问题  改进被囊群优化算法  

一、理论基础

1、被囊群优化算法

请参考这里

2、LSATSA算法

(1)融入反馈策略位置更新

本文在搜索种群空间中随机选出一只被囊动物,得到随机被囊动物的反馈信息,然后再结合最佳位置去更新个体位置。通过不断地迭代,最终找到食物。如果选择的随机被囊动物离食物近,那么它反馈给其他被囊动物的信息是有利于个体位置更新的,则在更新位置时加入反馈的信息;反之,如果随机被囊动物离食物远,那么反馈回来的信息对当前位置更新没有帮助。 建立的数学模型如下: γ = 1 1 + exp ⁡ ( − t ) (1) \gamma=\frac{1}{1+\exp(-t)}\tag{1} γ=1+exp(t)1(1) β = F max ⁡ + ( F max ⁡ − F min ⁡ ) ⋅ rand (2) \beta=\text{F}_{\max}+(\text{F}_{\max}-\text{F}_{\min})\cdot\text{rand}\tag{2} β=Fmax+(FmaxFmin)rand(2) P ( x ) = { P ( x ) + β ⋅ ( F best − P ( x ) ) + β ⋅ ( R ( x ) − P ( x ) ) + γ , F ( R ( x ) ) ≥ F ( P ( x ) ) P ( x ) + β ⋅ ( F best − P ( x ) ) + γ ,       F ( R ( x ) ) < F ( P ( x ) ) (3) P(x)=\begin{dcases}P(x)+\beta\cdot(\text F_{\text{best}}-P(x))+\beta\cdot(R(x)-P(x))+\gamma,\quad \text F(R(x))≥\text F(P(x))\\P(x)+\beta\cdot(\text F_{\text{best}}-P(x))+\gamma,\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\,\, \text F(R(x))<\text F(P(x))\end{dcases}\tag{3} P(x)={ P(x)+β(FbestP(x))+β(R(x)P(x))+γ,F(R(x))F(P(x))P(x)+β(FbestP(x))+γ,F(R(x))<F(P(x))(3)其中, β \beta β是共享系数,平衡位置更新时反馈信息的大小; γ \gamma γ为反馈数,随着迭代次数的增加,呈现递增趋势,能够加快被囊动物之间的信息交流; R ( x ) R(x) R(x)为随机被囊动物个体; F \text F F为计算被囊个体适应度; t t t表示当前迭代次数。
反馈策略可以借助随机个体的信息帮助自身更快的完成最佳位置的探索,有效的避免了算法陷入局部最优的风险。而且在迭代的初期,这样的反馈策略,使得算法增强了探索开发能力,可以避免算法早熟现象。

(2)莱维飞行策略

由于莱维飞行机制,使得个体位置的变化更加灵动,所以可以避免算法陷入停滞状态。其使用引入莱维飞行的位置更新如下: P ( x ) = { P ( x ) + α ⋅ L ( β ) ⋅ ( F best − P ( x ) ) , t / T max ⁡ < rand F best + A ⋅ P D ,    t / T max ⁡ > rand    and    rand ≥ 0.5 F best − A ⋅ P D ,    t / T max ⁡ > rand    and    rand < 0.5 (4) P(x)=\begin{dcases}P(x)+\alpha\cdot\text L(\beta)\cdot(\text F_{\text{best}}-P(x)),\quad t/T_{\max}<\text{rand}\\\text{F}_{\text{best}}+A\cdot PD,\quad\,\, t/T_{\max}>\text{rand}\,\,\text{and}\,\,\text{rand}≥0.5\\\text{F}_{\text{best}}-A\cdot PD,\quad\,\, t/T_{\max}>\text{rand}\,\,\text{and}\,\,\text{rand}<0.5\end{dcases}\tag{4} P(x)=P(x)+αL(β)(FbestP(x)),t/Tmax<randFbest+APD,t/Tmax>randandrand0.5FbestAPD,t/Tmax>randandrand<0.5(4)其中, L ( β ) \text{L}(\beta) L(β)的表达式请参考这里

(3)自适应权重

针对标准被囊群算法的盲目性,本文在被囊群算法的群体行为中加入自适应权重值。在更新个体位置时,使用自适应权重代替原被囊群算法中的随机数。具体的数学表达如下式: c = { 2 e − ( 2 t / T max ⁡ ) ,     t < T max ⁡ / 2 2 e − ( T max ⁡ − t ) / T max ⁡ , t ≥ T m a x / 2 (5) c=\begin{dcases}2e^{-(2t/T_{\max})},\quad\quad\,\,\, t<T_{\max}/2\\2e^{-(T_{\max}-t)/T_{\max}},\quad t≥T_{max}/2\end{dcases}\tag{5} c={ 2e(2t/Tmax),t<Tmax/22e(Tmaxt)/Tmax,tTmax/2(5)在被囊群算法的群体行为中引入自适应权重值的个体位置更新公式为: P ( x + 1 ) = P ( x ) + P ( x + 1 ) 2 + c (6) P(x+1)=\frac{P(x)+P(x+1)}{2+c}\tag{6} P(x+1)=2+cP(x)+P(x+1)(6)算法迭代中前期,自适应权重值随时间逐渐减小,位置更新权重整体增大,更新步长增大,算法在前期具有较强的探索能力;算法迭代中后期,自适应权重值随时间逐渐增大,位置更新权重整体减小,更新步长减小,算法在后期具有较强的开发能力。

(4)LFATSA算法流程

本文将莱维飞行、反馈策略和自适应函数融入到标准的被囊群算法中,使得算法具有较强的全局搜索能力和局部开发能力,而且有效的降低了算法的盲目性。当陷入局部最优的时候,改进的算法还具有跳出局部最优的能力。较标准的被囊群算法来说,改进后的被囊群算法整体上效果更优。算法步骤如下:
Step1 初始化种群 P P P
Step2 初始化种群参数,边界条件;
Step3 计算每个个体的适应度值;
Step4 根据式(3)加入反馈策略更新个体位置;
Step5 根据式(5)计算自适应权重值 c c c
Step6 在原位置更新处融入式(4)莱维飞行机制和自适应权重共同更新个体位置;
Step7 根据群体行为更新每个个体位置;
Step8 调整超出给定搜索空间边界的个体位置;
Step9 计算更新后的群体每个个体的适应度值,如果适应度优于之前,则更新;
Step10 如果满足停止条件,则停止算法,否则重复步骤如果满足停止条件,则停止算法,否则重复步骤Step6~Step10
Step11 返回最优值。

二、仿真实验与分析

为了验证算法的有效性和鲁棒性,将本文算法与SCA、WOA和标准TSA做比较,实验中种群设置为30,空间维度为30,最大迭代次数为500,每个算法独立运行30次。以文献[1]中表1的6个测试函数为例。结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
SCA:最差值: 928.3378,最优值:0.0068383,平均值:41.9881,标准差:168.6353,秩和检验:1.2118e-12
WOA:最差值: 7.8791e-73,最优值:1.238e-87,平均值:4.7914e-74,标准差:1.5792e-73,秩和检验:1.2118e-12
TSA:最差值: 1.8883e-194,最优值:2.0134e-204,平均值:1.2405e-195,标准差:0,秩和检验:1.2118e-12
LFATSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F2
SCA:最差值: 0.10609,最优值:6.2247e-05,平均值:0.01643,标准差:0.023782,秩和检验:3.018e-11
WOA:最差值: 1.0166e-48,最优值:6.6973e-59,平均值:3.4129e-50,标准差:1.8555e-49,秩和检验:3.018e-11
TSA:最差值: 4.6928e-99,最优值:4.3806e-104,平均值:4.9106e-100,标准差:1.1851e-99,秩和检验:3.018e-11
LFATSA:最差值: 1.3241e-242,最优值:0,平均值:4.506e-244,标准差:0,秩和检验:1
函数:F3
SCA:最差值: 23647.2713,最优值:1164.7578,平均值:9011.4302,标准差:5782.3753,秩和检验:1.2118e-12
WOA:最差值: 74058.1662,最优值:21355.9667,平均值:42938.3251,标准差:12161.5342,秩和检验:1.2118e-12
TSA:最差值: 5.0436e-182,最优值:1.1919e-188,平均值:5.1879e-183,标准差:0,秩和检验:1.2118e-12
LFATSA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F4
SCA:最差值: 56.4123,最优值:14.946,平均值:35.9019,标准差:11.7196,秩和检验:3.0199e-11
WOA:最差值: 85.9274,最优值:0.23655,平均值:41.4208,标准差:29.1391,秩和检验:3.0199e-11
TSA:最差值: 5.0299e-90,最优值:5.0027e-96,平均值:1.9234e-91,标准差:9.1511e-91,秩和检验:3.0199e-11
LFATSA:最差值: 2.9321e-207,最优值:0,平均值:9.7738e-209,标准差:0,秩和检验:1
函数:F5
SCA:最差值: 20.3136,最优值:0.13047,平均值:12.5283,标准差:9.2009,秩和检验:1.2118e-12
WOA:最差值: 7.9936e-15,最优值:8.8818e-16,平均值:4.6777e-15,标准差:2.2726e-15,秩和检验:3.0358e-10
TSA:最差值: 4.4409e-15,最优值:4.4409e-15,平均值:4.4409e-15,标准差:0,秩和检验:1.6853e-14
LFATSA:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0,秩和检验:NaN
函数:F6
SCA:最差值: 1304340.6865,最优值:3.4219,平均值:123779.5734,标准差:298910.7992,秩和检验:3.0199e-11
WOA:最差值: 0.94253,最优值:0.183,平均值:0.49778,标准差:0.19571,秩和检验:3.0199e-11
TSA:最差值: 2.8949,最优值:2.1065,平均值:2.6352,标准差:0.21421,秩和检验:0.0086844
LFATSA:最差值: 2.8832,最优值:1.9814,平均值:2.7243,标准差:0.19161,秩和检验:1

实验结果表明:LFATSA算法具有很好的性能,收敛速度快和寻优精度高,探索能力和开发能力得到增强。

代码下载地址:https://download.csdn.net/download/weixin_43821559/85941303

三、参考文献

[1] 梁建明, 何庆. 莱维飞行和反馈策略的自适应被囊群算法[J/OL]. 小型微型计算机系统: 1-9 [2021-11-13].

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43821559/article/details/121301662

智能推荐

使用R语言生成随机数-程序员宅基地

文章浏览阅读2.4k次。本文介绍了在R语言中生成随机数的几种常用方法,包括均匀分布、正态分布、二项分布和泊松分布。通过使用相应的函数,我们可以根据特定的需求生成符合不同分布特征的随机数。在R语言中,我们可以使用不同的函数来生成随机数。本文将介绍几种常用的生成随机数的方法,并提供相应的源代码示例。二项分布随机数是指进行n次独立的是/非试验,每次试验成功的概率为p,成功次数的概率分布。该函数接受三个参数,分别是生成随机数的个数、试验次数和成功概率。函数生成正态分布的随机数。均匀分布随机数是指在给定的范围内,每个数值出现的概率相等。_r语言生成随机数

【python】array数组添加一行或一列数据_python array添加数据-程序员宅基地

文章浏览阅读5.9k次,点赞5次,收藏14次。python中的array数据类型如何增加一行或一列?来看看_python array添加数据

Day06_JavaSE篇-程序员宅基地

文章浏览阅读273次。文章目录Java基础1.说下面向对象四大特性2.Java语言有哪些特点3.什么是Java程序的主类?应用程序和小程序的主类有何不同?4.访问修饰符public,private,protected,以及不写(默认)时的区别?5.float f=3.4;是否正确?6.Java有没有goto?7.(&和&&)的区别?8.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?9.用最有效率的方法计算2乘以8?10.什么是Java注释11.Java有哪些数据类

latex公式在word或wps中的应用_latex公式转wps-程序员宅基地

文章浏览阅读2.4w次,点赞2次,收藏19次。要点概览目的在doc文档中插入latex代码以生成公式环境windows + word/wps方法:利用mathtype或aurora在学习工作中经常要输入公式,平时一般喜欢用latex来做学习记录,因此公式往往都是用latex输入的。 但有时需要提交一些doc文档,需要用的编辑器是word或wps,这时如果要重新输入公式,那将会是很麻烦的一件事情,所以希望能重复利用在latex文档中输入_latex公式转wps

WINDOWS系统文件详解 _windows服务器系统版本通过哪个文件来看?-程序员宅基地

文章浏览阅读906次。WINDOWS系统文件详解 详细的介绍了WINDOWS系统文件的用途A ↑ ACCESS.CHM - Windows帮助文件 ACCSTAT.EXE - 辅助状态指示器 ADVAPI32.DLL - 高级Win32应用程序接口 AHA154X.MPD - SCSI驱动程序 AM1500T.VXT - 网卡驱动程序 AM2100.DOS - 网卡驱动程序 APPSTART.ANI - 动画光_windows服务器系统版本通过哪个文件来看?

Kubernetes单节点搭建----flannel扁平化网络的搭建_你使用的 kubernetes 集群如何实现扁平化网络的?-程序员宅基地

文章浏览阅读587次。Kubernetes单节点搭建----flannel扁平化网络的搭建在上一期的博客中已经介绍了如何搭建单节点master的etcd,本次就来详细介绍一下该如何搭建flannel网络。flannel是建立在物理网络设备基础上的虚拟网络。所以容器通过虚拟出来的网络就可以进行通信。flannel网络是如何实现容器之间的通信的呢?1.首先node节点中的docker 0网卡会分配给每个pod一个I..._你使用的 kubernetes 集群如何实现扁平化网络的?

随便推点

vmware + centos 7安装vmtools时提示The path "" is not a valid path to the 3.10.0-xxx.el7.x86_64 kernel h_not a valid path to the 2.6.32-程序员宅基地

文章浏览阅读2.6k次。vmware + centos 7安装vmtools时提示The path "" is not a valid path to the 3.10.0-327.el7.x86_64 kernel h_not a valid path to the 2.6.32

elementUI --- el-select 下拉框右侧放提示文字_element select 备注-程序员宅基地

文章浏览阅读7.4k次,点赞2次,收藏7次。需求:1.下拉框右侧需要显示对于备注文字<el-select v-model="ruleForm.tableName" placeholder="请选择数据表" @change="changeDataTable" popper-class="step-one"> <el-option v-for=..._element select 备注

响应式网页应用-PWA-程序员宅基地

文章浏览阅读286次。一、响应式网页应用-PWA介绍 响应式网页应用-PWA是Progressive Web App的英文缩写,渐进式增强WEB应用。一个为响应式设计的“保护伞”式的术语,是 Google 在2015年提出的概念,2017年落地的web技术。目的就是在移动端利用提供的标准化框架,在网页应用中实现和..._pwa的响应式设计

L1-028 判断素数 (10分)_本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:-程序员宅基地

文章浏览阅读80次。L1-028 判断素数 (10分)题目本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例:211111输出样例:YesNo思路用试除法即可,数据过大不可以用素数筛代码#include<bits/stdc++.h>#define INF 0x3f3f3f3f#d_本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:

项目整合seata后出现NettyClientChannelManager : no available service ‘null‘ found, please make sure registr_若依 nettyclientchannelmanager-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏2次。项目整合seata后启动时出现NettyClientChannelManager : no available service 'null' found, please make sure registry config correct出现此错误的原因是未能根据file.conf中vgroupMapping对应的值找到对应的service,根据规范修改该配置。默认情况下查找到是${spring.applicaiton.name}-fescar-service-group..._若依 nettyclientchannelmanager

UIScrollView用法_uiscrollview updateframe-程序员宅基地

文章浏览阅读3w次,点赞2次,收藏25次。UIScrollView是iphone中的一个重要的视图,它提供了一个方法,让你在一个界面中看到所有的内容,从而不必担心因为屏幕的大小有限,必须翻到下一页进行阅览。确实对于用户来说是一个很好的体验。但是又是如何把所有的内容都加入到scrollview,是简单的addsubView。假如是这样,岂不是scrollView界面上要放置很多的图形,图片。移动设备的显示设备肯定不如PC,怎么可能放得下如此_uiscrollview updateframe

推荐文章

热门文章

相关标签