混合柯西变异和均匀分布的蝗虫优化算法

文章目录

  • 混合柯西变异和均匀分布的蝗虫优化算法
    • 1.蝗虫优化算法
    • 2. HCUGOA 算法
      • 2.1 服从均匀分布随机调整策略
      • 2.2 结合柯西算子和分段思想的更新策略
      • 2.3 融合柯西变异和反向学习策略
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:由于位置更新公式存在的局部开发能力较强而全局探索能力较弱的缺陷, 导致蝗虫优化算法 (GOA) 易陷入局部最优, 易早熟收敛. 因此提出混合柯西变异和均匀分布的蝗虫优化算法 (HCUGOA), 受柯西算子和粒子群算法的启发, 提出具有分段思想的位置更新方式以增加种群多样性, 增强全局探索能力; 将柯西变异算子和反向学习策略相融合, 对最优位置即目标值进行变异更新, 提高算法跳出局部最优的能力; 为了更好的平衡全局探索和局部开发, 将均匀分布函数引入到非线性控制参数 c, 构建新的随机调整策略.

1.蝗虫优化算法

基础蝗虫优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107694862

2. HCUGOA 算法

2.1 服从均匀分布随机调整策略

GOA 的控制参数 c 是协调探索和开发的关键,c 是随着迭代次数动态变化的, 且是线性递减函数, 在搜索过程中难以适应优化的实际情况: 在迭代前期参数 c 下降过快易导致蝗虫不能遍历更多搜索空间, 最终导致全局探索不足; 在迭代后期c 下降过慢, 会导致局部开发受限, 收敛速度慢. 为解决这一问题, 并重新构建新函数 c(t):
c(t)=δ(lg⁡(cmax⁡Tmax⁡)−20t+exp⁡(tTmax⁡)−20(cmax⁡−cmin⁡))(4)c(t)=\delta\left(\lg \left(\frac{c_{\max }}{T_{\max }}\right)^{-20 t}+\exp \left(\frac{t}{T_{\max }}\right)^{-20\left(c_{\max }-c_{\min }\right)}\right) \tag{4} c(t)=δ(lg(Tmax​cmax​​)−20t+exp(Tmax​t​)−20(cmax​−cmin​))(4)
其中 δδδ 是服从 [0,Tmax][0,T_{max} ][0,Tmax​] 之间均匀分布的随机数,且 δδδ的取值范围介于 0 到 1 之间.

由式 (4) 可知, c(t) 是非线性递减函数,c(t) 随迭代次数增加在迭代期间呈非线性状态减小, 具体表现为在前期函数下降缓慢, 给全局探索充分时间, 后期函数迅速下降收敛,加快算法收敛速度;同时,引入服从均匀分布随机数 δ, 前期让参数 c 有可能继续保持较大值, 一定程度上加强全局搜索; 后期参数 c 随着迭代次数增加而减小, 且变化比较缓慢, 此时服从均匀分布的随机数可能产生较大的值让参数 c 实现动态变化, 从而加快算法开发和收敛速度.

2.2 结合柯西算子和分段思想的更新策略

基本 GOA 位置更新由自身位置与其他所有蝗虫间交互力及目标位置决定, 因此GOA 具有很强的局部开发能力而全局探索能力不足. 为更好地提升算法性能, 本节对算法进行分段处理.

在算法搜索前半段, 受 PSO 对每代最优解进行记忆保存的思想启发, 对式 (2) 进行改进:
Xnew(t+1)=b1∗W+b2∗r1(Xbest(t)−Xi(t))+b2∗r2(Xj(t)−Xk(t))(5)\begin{aligned} X_{n e w}(t+1) &=b 1 * W+b 2 * r 1\left(X_{b e s t}(t)-X_{i}(t)\right)+b 2 * r 2\left(X_{j}(t)-X_{k}(t)\right) \end{aligned} \tag{5} Xnew​(t+1)​=b1∗W+b2∗r1(Xbest​(t)−Xi​(t))+b2∗r2(Xj​(t)−Xk​(t))​(5)
其中 Xnew(t+1)X_{n e w}(t+1)Xnew​(t+1) 是第 iii只蝗虫在第 t+1t + 1t+1 代的位置,Xbest(t)X_{b e s t}(t)Xbest​(t)是第 ttt 代最优位置,Xi(t)X_i(t)Xi​(t) 是第iii只蝗虫在第 ttt 代的位置,Xj(t)X_j (t)Xj​(t) 和 Xk(t)X_k (t)Xk​(t) 是第ttt 代两个随机位置,r1r_1r1​ 和 r2r_2r2​ 分别为区间 [0,1] 内产生的随机数,b1b_1b1​ 是记忆系数,b2b_2b2​ 是信息交流系数:
b1=exp⁡(c(t)−30tTmax⁡)−t(6)b 1=\exp \left(c(t)-30 \frac{t}{T_{\max }}\right)^{-t} \tag{6} b1=exp(c(t)−30Tmax​t​)−t(6)

b2=(Tmax⁡−tTmax⁡)N(7)b 2=\left(\frac{T_{\max }-t}{T_{\max }}\right)^{N} \tag{7} b2=(Tmax​Tmax​−t​)N(7)

其中 W 是与所有蝗虫相互联系决定位置更新的步长函数,
W=∑j=1,j≠iNc(t)ubd−lbd2s(∣xjd−xid∣)xj−xidj(8)W=\sum_{j=1,j\neq i}^Nc(t)\frac{ub_d-lb_d}{2}s(|x_j^d-x_i^d|)\frac{x_j-x_i}{d_j}\tag{8} W=j=1,j​=i∑N​c(t)2ubd​−lbd​​s(∣xjd​−xid​∣)dj​xj​−xi​​(8)
与式 (2) 相比, 式 (5) 分为 3 个部分:1) 利用除最优解外的全部位置信息, 有助于个体间进行信息交互, 增强全局探索能力;2) 由自身位置和最优位置决定, 加强算法开发能力和收敛速度;3) 通过随机选择两个个体引导位置更新, 增强全局探索能力.

在算法搜索后半段, 引入柯西算子作为变异步长, 当个体陷入局部最优时, 较大的步长可帮助个体跳出局部极值; 当个体接近收敛, 并在搜索最优解时,较小步长可加速个体的收敛, 公式如下:
Xid(t+1)=Xid(t)+Cauchy ⊕(Xbestd(t)−Xkd(t))(9)X_{i}^{d}(t+1)=X_{i}^{d}(t)+\text { Cauchy } \oplus\left(X_{b e s t}^{d}(t)-X_{k}^{d}(t)\right) \tag{9} Xid​(t+1)=Xid​(t)+ Cauchy ⊕(Xbestd​(t)−Xkd​(t))(9)
其中XkdX_{k}^{d}Xkd​是随机选择的第kkk只蝗虫在第ddd维的位置,Cauchy 是柯西算子, 一维标准的柯西分布的概率密度函数表达式如下:
f(x)=1π(1x2+1),−∞<x<∞(10)f(x)=\frac{1}{\pi}\left(\frac{1}{x^{2}+1}\right),-\infty<x<\infty \tag{10} f(x)=π1​(x2+11​),−∞<x<∞(10)
判断算法是进行前半段探索还是后半段开发由控制概率PcP_cPc​ 决定,PcP_cPc​ 的表示为:
Pc=12Tmax⁡(11)P_{c}=\frac{1}{2} \mathrm{~T}_{\max } \tag{11} Pc​=21​ Tmax​(11)
算法前期需进行大范围全局探索, 后期需进行小范围的局部开发并避免算法过早收敛, 所以对位置更新引入分段思想, 前期对最优解进行记忆保存,加强全局寻优能力, 并引入记忆系数和交流系数, 通过个体自身位置、最优位置及两个随机位置共同决定新位置; 后期引入柯西算子, 一定程度上降低算法陷入局部最优概率, 并加快算法的收敛速度.

算法 1 结合柯西算子和分段思想的策略
1)if rand< P c
2)根据式 (5)∼(8) 更新个体位置;
3)else
4)根据式 (9) 和 (10) 更新个体位置;
5)end

2.3 融合柯西变异和反向学习策略

基本 GOA 中, 目标位置更新依赖于每次迭代后的位置更新, 重新计算适应度, 选择最优位置对目标位置进行取代, 未对目标位置进行主动的扰动更新,导致算法易陷入局部最优. 所以, 本节融合柯西变异和反向学习策略, 依概率对目标位置进行随机扰动
更新, 避免算法陷入局部最优.
反向学习是 Tizhoosh 在 05 年提出的新技术,目的是基于当前解, 寻到其对应反向解, 通过评估选择保存更好的解. 为更好的引导个体寻到最优解, 将反向学习融入 GOA 中, 数学描述如下:
Xbest∗(t)=ub+r⊕(lb−Xbest(t))(12)X_{b e s t}^{*}(t)=u b+r \oplus\left(l b-X_{b e s t}(t)\right) \tag{12} Xbest∗​(t)=ub+r⊕(lb−Xbest​(t))(12)

Xnew(t+1)=b3⊕(Xbest(t)−Xbest∗(t))(13)X_{n e w}(t+1)=b 3 \oplus\left(X_{b e s t}(t)-X_{b e s t}^{*}(t)\right)\tag{13} Xnew​(t+1)=b3⊕(Xbest​(t)−Xbest∗​(t))(13)

其中 Xnew∗(t)X_{n e w}^*(t)Xnew∗​(t) 是第ttt 代目标解 XbestX_{best}Xbest​的反向解,Xnew(t+1)X_{n e w}(t+1)Xnew​(t+1)是第t+1t + 1t+1代目标解,ububub 和 lblblb 是上下界,rrr是服从 (0,1) 标准均匀分布 1×dim 的随机数矩阵(其中dim表算法搜索空间维数),b3b_3b3​是伪信息交流系数, 表达式如下:
b3=(Tmax⁡−tTmax⁡)t(14)b 3=\left(\frac{T_{\max }-t}{T_{\max }}\right)^{t} \tag{14} b3=(Tmax​Tmax​−t​)t(14)
将柯西算子引入目标位置更新, 发挥柯西算子的调节能力, 增强算法跳出局部最优的能力:
Xnew(t+1)=cauch⁡y⊕Xbest (t)(15)X_{n e w}(t+1)=\operatorname{cauch} y \oplus X_{\text {best }}(t) \tag{15} Xnew​(t+1)=cauchy⊕Xbest ​(t)(15)
为提高算法寻优性能, 将反向学习策略和柯西算子扰动策略在一定概率下交替执行, 动态的随机更新目标位置. 反向学习策略中, 通过一般反向学习策略得到反向解,增大算法搜索范围,同时,式(12)中的上下界 ub 和 lb 是动态变化的, 相对于固定边界的策略更利于算法优化; 柯西变异策略中运用变异算子对最优位置进行变异产生新解, 一定程度上改善算法易陷入局部最优的缺陷. 决定选择何种策略进行更新的选择概率 PsPsPs 定义如下:
Ps=−exp⁡(1−tTmax⁡)20+θ(16)P_{s}=-\exp \left(1-\frac{t}{T_{\max }}\right)^{20}+\theta \tag{16} Ps​=−exp(1−Tmax​t​)20+θ(16)
其中θ 为调节因子,经多次实验,θ 取值为0.05时函数优化结果最优.

算法 2 融合柯西变异和反向学习策略
1)if rand< P s
2)根据式 (12)∼(14) 反向学习策略更新目标位
置;
3)else
4)根据公式 (15) 柯西变异策略更新目标位置;
5)end
对目标位置进行扰动更新虽能让算法跳出局部最优, 但不能保证新位置优于原目标位置, 因此在扰动更新操作后加入贪婪机制, 通过比较新旧目标位置的适应度后再决定是否更新目标位置.
算法 3 贪婪算法
1)if f(Xnew)<f(Xbest)f(X_{new} ) < f(X_{best} )f(Xnew​)<f(Xbest​)

2)Xbest=XnewX_{best} = X_{new}Xbest​=Xnew​ ;
3)else
4)Xbest=XbestX_{best} = X_{best}Xbest​=Xbest​
5)end
基于贪婪选择策略促进算法向着期望寻找到的目标位置方向进化, 让目标位置能够充分发挥引导作用, 使算法获得更好的收敛速度和精度.

算法流程图如下:

3.实验结果

4.参考文献

[1]何庆,林杰,徐航.混合柯西变异和均匀分布的蝗虫优化算法[J/OL].控制与决策:1-10[2021-01-08].https://doi.org/10.13195/j.kzyjc.2019.1609.

5.Matlab代码

6.python代码

混合柯西变异和均匀分布的蝗虫优化算法-附代码相关推荐

  1. 【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码

    1 简介 传统蝗虫优化算法在处理优化问题时依然存在收敛速度慢,易陷入局部最优的不足.为此,提出了融合混沌映射和柯西变异机制的非线性蝗虫优化算法CCGOA.通过融合混沌Tent映射与反向学习机制,对种群 ...

  2. 基于曲线自适应和模拟退火的蝗虫优化算法-附代码

    基于曲线自适应和模拟退火的蝗虫优化算法 文章目录 基于曲线自适应和模拟退火的蝗虫优化算法 1.蝗虫优化算法 2. 基于曲线自适应和模拟退火的蝗虫优化算法(SA-CAGOA) 2.1 基于曲线自适应的蝗 ...

  3. 智能优化算法:蚁狮优化算法-附代码

    智能优化算法:蚁狮优化算法-附代码 文章目录 智能优化算法:蚁狮优化算法-附代码 1.算法原理 1.1 蚂蚁的随机游走 1.2蚁狮对蚂蚁随机游走的影响 1.3自适应机制 1.4 精英策略 2.算法步骤 ...

  4. 智能优化算法:多元宇宙优化算法-附代码

    智能优化算法:多元宇宙优化算法-附代码 文章目录 智能优化算法:多元宇宙优化算法-附代码 1.算法原理 2.算法流程图 3.算法结果 4.参考文献 5.MATLAB代码 6.python代码 摘要:多 ...

  5. 智能优化算法:正余弦优化算法-附代码

    智能优化算法:正余弦优化算法-附代码 文章目录 智能优化算法:正余弦优化算法-附代码 1.算法原理 2.算法流程 3.算法结果 4.参考文献 5.MATLAB代码 6.Python代码 摘要:正 余 ...

  6. 基于柯西变异的蚁狮优化算法 - 附代码

    基于柯西变异的蚁狮优化算法 文章目录 基于柯西变异的蚁狮优化算法 1.蚁狮优化算法 2. 改进蚁狮优化算法 2.1 基于柯西变异算子改进 3.实验结果 4.参考文献 5.Matlab代码 6.Pyth ...

  7. 混沌麻雀搜索优化算法-附代码

    混沌麻雀搜索算法 文章目录 混沌麻雀搜索算法 1.麻雀搜索算法 2.Tent 混沌及高斯变异 2.1 Tent 混沌 2.2 高斯变异 3.混沌麻雀搜索优化算法 4.实验结果 5.参考文献 6.Mat ...

  8. 一种改进的鲸鱼优化算法-附代码

    一种改进的鲸鱼优化算法 文章目录 一种改进的鲸鱼优化算法 1.鲸鱼优化算法 2. 改进鲸鱼优化算法 2.1 准反向学习初始化种群 2.2 非线性收敛因子 2.3 自适应权重策略与随机差分法变异策略 3 ...

  9. 基于Cat混沌与高斯变异的改进灰狼优化算法-附代码

    基于Cat混沌与高斯变异的改进灰狼优化算法 文章目录 基于Cat混沌与高斯变异的改进灰狼优化算法 1.灰狼优化算法 2. 改进灰狼优化算法 2.1 混沌反向学习策略的种群初始化 2. 2 引入个体记忆 ...

  10. 混合策略改进的蝴蝶优化算法-附代码

    混合策略改进的蝴蝶优化算法 文章目录 混合策略改进的蝴蝶优化算法 1.蝴蝶优化算法 2. 改进蝴蝶优化算法 2.1 混沌映射初始化 2.2 融合改进正弦余弦算法的局部搜索 2.3 自适应权重系数 2. ...

最新文章

  1. 清除vs2003-vs2008起始页最近打开项目
  2. 【密码学】CSP的概念
  3. Oracle配置管理
  4. duration java_Java Duration类| ofMinutes()方法与示例
  5. Code 0001: Wait rx completed
  6. 分配菜品类别: 展开 收起_运营技巧:让产品数据决定菜品的去与留
  7. TensorFlow tf.keras.layers.TimeDistributed
  8. WebSocket(1)---WebSocket介绍
  9. oracle like 前缀,algorithm – 在ORACLE中搜索最长前缀的最快方法
  10. Android获取系统ID(com.android.internal.R)
  11. IEC61850应用入门读书笔记
  12. 如何在vmware workstation 8下成功安装fedora 14
  13. 代码:Java实现大数据经典案例WordCount
  14. 物联网之卫星导航系统
  15. BJFU_数据结构习题_256病毒感染监测
  16. 【VUE项目】VUE+ElementUI电商后台管理系统
  17. C语言实现扫描文件下所有目录
  18. canvas-樱花飘落
  19. 一步一步学RMAN第五篇 RMAN基础知识补充 一
  20. linux中ftp服务器的搭建和配置

热门文章

  1. 使用 DiskMaker X 轻松制作 Yosemite 安装 U 盘(引)
  2. 多Excel文件内容查询工具
  3. 本机ip地址、本机DNS查询工具地址
  4. 读懂西瓜书 14 : 概率图模型
  5. 用户画像标签数据开发之标签权重计算
  6. oracle单引号和双引号用法
  7. 【统计学】数据描述方法(均值、中位数、众数、标准差、离差、四分位数)
  8. android locat
  9. 如何制作内网web服务器,内网搭建WEB服务器教程
  10. C语言-函数(一):函数的定义和调用