当前位置: 首页 > news >正文

基于阶梯式Tent混沌和模拟退火的樽海鞘群算法

文章目录

  • 一、理论基础
    • 1、樽海鞘群算法
    • 2、基于阶梯式Tent混沌的模拟退火樽海鞘群算法
      • (1)Tent混沌映射序列
      • (2)“阶梯式”惯性权值
      • (3)模拟退火算法
      • (4)STSA-SSA算法实现步骤
  • 二、仿真实验与结果分析
  • 三、参考文献

一、理论基础

1、樽海鞘群算法

请参考这里。

2、基于阶梯式Tent混沌的模拟退火樽海鞘群算法

(1)Tent混沌映射序列

请参考这里。

(2)“阶梯式”惯性权值

针对SSA算法容易陷入局部最优的缺陷,本文提出“阶梯式”惯性权值调整策略,惯性权值在算法前期取固定最大值用于提高算法的全局探索能力,在算法后期取固定最小值用来提高算法的局部开发能力,其表达式为: x j i = 1 2 ( x j i + ω ( t ) x j i − 1 ) (1) x_j^i=\frac12\left(x_j^i+\omega(t)x_j^{i-1}\right)\tag{1} xji=21(xji+ω(t)xji1)(1) ω ( t ) = { ω max ⁡ , t / T max ⁡ ≤ λ ω min ⁡ ,   t / T max ⁡ > λ (2) \omega(t)=\begin{dcases}\omega_{\max},\quad t/T_{\max}\leq\lambda\\[2ex]\omega_{\min},\quad\, t/T_{\max}>\lambda\end{dcases}\tag{2} ω(t)= ωmax,t/Tmaxλωmin,t/Tmax>λ(2)其中, ω max ⁡ \omega_{\max} ωmax为最大惯性权值, ω min ⁡ \omega_{\min} ωmin为到最小惯性权值, t t t为当前迭代次数, T max ⁡ T_{\max} Tmax为最大迭代次数。 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ(0,1)表示迭代前期时间占整个周期的比例:取 λ > 0.5 \lambda>0.5 λ>0.5时,算法前期分配了更多的时间比例进行全局搜索,进而扩大寻优范围;取 λ > 0.5 \lambda>0.5 λ>0.5时,算法后期占用更多的时间进行局部开发,进而寻求更高的收敛精度。这样,通过调整 λ \lambda λ,可有效地兼顾算法的全局探索能力和局部开发能力。通过多次尝试 ( 0 , 1 ) (0,1) (0,1)范围内不同的 λ \lambda λ的取值,观察对比寻优效果,最终确定 λ \lambda λ的取值。

(3)模拟退火算法

模拟退火算法的特点为在一定的概率情况下保留劣质群体,增加种群的多样性,在一定程度上提高了跳出局部最优的能力。在全局寻优方面,本文采取模拟退火算法与SSA算法结合的方式,在SSA算法求出食物源位置之后再进行模拟退火处理,对食物源位置进行调整,其接受劣质群体概率的公式为: P = { 1 , f new ( X j ) < f ( X j ) exp ⁡ ( − ( f new ( X j ) − f ( X j ) ) / T ) ,   f new ( X j ) ≥ f ( X j ) (3) P=\begin{dcases}1,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad f_{\text{new}}(X_j)<f(X_j)\\[2ex]\exp\left(-\left(f_{\text{new}}(X_j)- f(X_j)\right)/T\right),\quad\, f_{\text{new}}(X_j)\geq f(X_j)\end{dcases}\tag{3} P= 1,fnew(Xj)<f(Xj)exp((fnew(Xj)f(Xj))/T),fnew(Xj)f(Xj)(3)其中, f new ( X j ) f_{\text{new}}(X_j) fnew(Xj)是模拟退火阶段产生的新种群中第 j j j个樽海鞘个体的适应度值, T T T表示第 j j j次迭代温度, f new ( X j ) f_{\text{new}}(X_j) fnew(Xj)的值越小,表示适应度值越好,当 f new ( X j ) < f ( X j ) f_{\text{new}}(X_j)<f(X_j) fnew(Xj)<f(Xj)时,完全接受 f new ( X j f_{\text{new}}(X_j fnew(Xj(替换概率 P P P为1),否则以概率 P P P接受劣质解 X j X_j Xj。引入模拟退火算法后的SSA算法,在食物源位置周围范围内初始化新的种群,以一定概率下接受劣质解来更新食物源位置,增加了领导者和追随者个体的多样性。

(4)STSA-SSA算法实现步骤

改进的SSA算法(STSA-SSA)具体实现步骤如下:
(1)设置算法参数并初始化种群:种群个数 N N N,最大迭代次数 T max ⁡ T_{\max} Tmax,可调参数 λ \lambda λ,惯性权值 ω max ⁡ \omega_{\max} ωmax ω min ⁡ \omega_{\min} ωmin;引入Tent混沌映射序列初始化种群,生成一个 N × d N\times d N×d维的矩阵。
(2)计算适应度值:计算每个樽海鞘个体的适应度值,选取适应度值最小的个体位置作为食物源位置。
(3)领导者和追随者位置更新:选取一半的樽海鞘个体更新领导者位置,可调参数 λ \lambda λ的变化,选定不同的惯性权值根据式(1)更新追随者位置。
(4)食物源位置更新:根据更新后的樽海鞘群个体计算适应度值,若小于原食物源位置的适应度值,则更新食物源位置。
(5)引入模拟退火算法:在原食物源位置周围随机产生一个新的种群,计算新种群个体的适应度值 .若新种群中樽海鞘个体适应度值小于食物源适应度值,则更新食物源位置,否则以式(3)中的概率 P P P接受新种群中樽海鞘个体的位置,进行退温操作 t = t × 0.99 t=t\times0.99 t=t×0.99,记录下整个迭代过程中适应度值最小的食物源位置及其适应度值。
(6)若当前迭代次数小于最大迭代次数,重复步骤3~5的迭代过程,直到达到设定的精度要求或最大迭代次数,输出最优个体位置及其适应度值。

二、仿真实验与结果分析

将STSA-SSA与MVO、MFO和SSA进行对比,以文献[1]中表1和表2的F1、F2、F3(单峰函数/30维)、F10、F11、F12(多峰函数/30维)为例,实验设置种群规模为100,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
MVO:最差值: 0.16708, 最优值: 0.029536, 平均值: 0.10159, 标准差: 0.025637
MFO:最差值: 10000, 最优值: 2.6301e-06, 平均值: 1333.3333, 标准差: 3457.459
SSA:最差值: 9.5666e-09, 最优值: 4.4115e-09, 平均值: 6.5361e-09, 标准差: 1.4628e-09
STSA-SSA:最差值: 2.6884e-92, 最优值: 1.2088e-98, 平均值: 9.0129e-94, 标准差: 4.9075e-93
函数:F2
MVO:最差值: 0.035861, 最优值: 0.006563, 平均值: 0.011629, 标准差: 0.0055055
MFO:最差值: 1.2383e-18, 最优值: 4.235e-21, 平均值: 2.3603e-19, 标准差: 3.1721e-19
SSA:最差值: 1.5893e-05, 最优值: 4.4389e-06, 平均值: 6.5287e-06, 标准差: 2.214e-06
STSA-SSA:最差值: 8.9203e-15, 最优值: 4.6592e-21, 平均值: 3.6398e-16, 标准差: 1.6493e-15
函数:F3
MVO:最差值: 15.0338, 最优值: 1.855, 平均值: 6.0894, 标准差: 2.7983
MFO:最差值: 38335.8903, 最优值: 171.7988, 平均值: 17000.3493, 标准差: 10693.5973
SSA:最差值: 4.8528, 最优值: 0.0021096, 平均值: 1.1182, 标准差: 1.2449
STSA-SSA:最差值: 5.045e-97, 最优值: 1.4767e-98, 平均值: 8.6227e-98, 标准差: 9.4178e-98
函数:F10
MVO:最差值: 0.050032, 最优值: 0.0044728, 平均值: 0.025348, 标准差: 0.012522
MFO:最差值: 5.4708, 最优值: 9.2939e-08, 平均值: 0.31057, 标准差: 1.1632
SSA:最差值: 0.049064, 最优值: 3.2022e-10, 平均值: 0.0082862, 标准差: 0.01157
STSA-SSA:最差值: 6.1288e-09, 最优值: 0, 平均值: 3.3234e-10, 标准差: 1.2586e-09
函数:F11
MVO:最差值: 2.7289, 最优值: 0.0017116, 平均值: 1.0302, 标准差: 0.93786
MFO:最差值: 1.7121, 最优值: 3.5278e-06, 平均值: 0.18911, 标准差: 0.35454
SSA:最差值: 10.749, 最优值: 6.4423e-11, 平均值: 3.3794, 标准差: 2.7545
STSA-SSA:最差值: 1.9876e-10, 最优值: 7.5058e-11, 平均值: 1.157e-10, 标准差: 2.9888e-11
函数:F12
MVO:最差值: 0.019505, 最优值: 0.0013189, 平均值: 0.006964, 标准差: 0.0058636
MFO:最差值: 1.5975, 最优值: 1.0127e-06, 平均值: 0.058764, 标准差: 0.29075
SSA:最差值: 0.021024, 最优值: 7.8156e-11, 平均值: 0.0068636, 标准差: 0.007149
STSA-SSA:最差值: 2.9661, 最优值: 8.1418e-11, 平均值: 0.39841, 标准差: 1.0244

实验结果表明:对于单峰和多峰测试函数,改进后的樽海鞘群算法具有更快的收敛速度和更强的全局寻优能力。

三、参考文献

[1] 周鹏, 董朝轶, 陈晓艳, 等. 基于阶梯式Tent混沌和模拟退火的樽海鞘群算法[J]. 电子学报, 2021, 49(9): 1724-1735.

相关文章:

  • 【Linux 基础笔记】(二)
  • 关于gdb调试: 你的问题可能会在这里找到答案
  • J9数字论:什么是Web3.0概念?
  • MediaCodec_Analyze-1-create
  • vue3中<script setup> 和 setup函数的区别
  • c语言进阶 数据的存储(上)
  • A8.2022年全国数学建模竞赛 B题-赛题分析与讨论
  • Vue指令总结
  • 离开二线城市石家庄(勉强算二线吧)去北漂,入职外包测试岗一个月想辞职了~
  • 瑞康医药与亚马逊云科技达成战略合作,全国上百家子公司业务上云
  • 内存取证工具Volatility学习
  • MySQL 中的排序在底层是怎样实现的呢?
  • HID 异步访问和同步访问
  • 吊打面试官系列之:我这样回答 “如何更高效的进行接口测试“,面试官果然跪了。
  • 云资源管理
  • php的引用
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 03Go 类型总结
  • 2019.2.20 c++ 知识梳理
  • 30秒的PHP代码片段(1)数组 - Array
  • Apache的80端口被占用以及访问时报错403
  • CAP 一致性协议及应用解析
  • HashMap ConcurrentHashMap
  • HTTP那些事
  • Linux链接文件
  • nodejs实现webservice问题总结
  • php面试题 汇集2
  • scrapy学习之路4(itemloder的使用)
  • SQLServer之索引简介
  • Terraform入门 - 1. 安装Terraform
  • vue--为什么data属性必须是一个函数
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 记一次删除Git记录中的大文件的过程
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 我从编程教室毕业
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云移动端播放器高级功能介绍
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 昨天1024程序员节,我故意写了个死循环~
  • ​iOS安全加固方法及实现
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)JAVA使用POI操作excel
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十)c52学习之旅-定时器实验
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四)linux文件内容查看
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .java 9 找不到符号_java找不到符号