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

基于正交设计的折射反向学习樽海鞘群算法

文章目录

  • 一、理论基础
    • 1、樽海鞘群算法
    • 2、正交反向学习樽海鞘群算法OOSSA
      • (1)正交反向学习策略
      • (2)惯性权重策略
      • (3)OOSSA算法
  • 二、仿真实验与结果分析
  • 三、参考文献

一、理论基础

1、樽海鞘群算法

请参考这里。

2、正交反向学习樽海鞘群算法OOSSA

(1)正交反向学习策略

为增强SSA算法跳出局部最优的能力,提出一种正交反向学习策略(Orthogonal lens opposition-based learning, OLOBL),并将其应用到领导者个体上产生新的个体。
将OLOBL策略嵌入SSA算法,优化问题的维度 D D D对应正交试验设计中的因素,个体与折射反向个体即为正交试验设计中的两个水平。构建部分反向解的具体描述过程为:对当前个体和其折射反向个体设计一个2水平 D D D因素的正交试验,产生 M M M个部分折射反向解, M M M按照式(1)进行计算。其中,根据正交试验表产生部分反向解时,若正交表的元素为1,试验解对应维上取当前个体的值;若正交表的元素为2,试验解对应维上取折射反向个体的值。 M = 2 ⌈ log ⁡ 2 ( D + 1 ) ⌉ (1) M=2^{\lceil\log_2(D+1)\rceil}\tag{1} M=2log2(D+1)⌉(1)根据正交试验特性,正交表中第一行的元素全为1,这就代表第一组试验解即为个体本身,不需要评估。另外 M − 1 M-1 M1组试验解是当前个体与其反向个体优势维度的结合,即部分折射反向解,需要评估。在使用正交试验设计时,需进行因素分析,找出一组不存在于正交表中的理论最优组合,需要评估。因此,执行一次OLOBL策略需要的函数评估次数为 M M M次。在进化迭代过程中,仅对领导者执行OLOBL策略,并从领导者和其正交折射反向个体中选择较优个体进入下一代,这样可以有效增强算法的全局探索能力,同时减少函数的评价次数,从而改善算法的整体性能。

(2)惯性权重策略

由追随者位置更新模型可知,基本SSA中追随者在保留自身特征的同时学习前一个个体,完成位置更新。其位置更新机制较为单一,一旦领导者陷入局部最优,追随者必然跟随至该局部极值区域。为增强跟随者位置更新机制的灵活性,引入一种非线性递减惯性权重来评价前一个个体对当前追随者的影响程度。新的追随者位置更新公式为: X j i = 1 2 ( X j i + ω X j i − 1 ) (2) X_j^i=\frac12(X_j^i+\omega X_j^{i-1})\tag{2} Xji=21(Xji+ωXji1)(2) ω = ω max ⁡ − ( ω max ⁡ − ω min ⁡ ) 2 2 + e ( 10 − 0.04 t ) (3) \omega=\omega_{\max}-(\omega_{\max}-\omega_{\min})\frac{2}{2+e^{(10-0.04t)}}\tag{3} ω=ωmax(ωmaxωmin)2+e(100.04t)2(3)其中, ω \omega ω为本文设计的惯性权重, ω max ⁡ \omega_{\max} ωmax ω min ⁡ \omega_{\min} ωmin分别为初始惯性权重和最终惯性权重。

(3)OOSSA算法

所提OOSSA算法的实现流程如下:
Step 1:设置算法参数:种群规模 N N N,最大函数评价次数 F max ⁡ F_{\max} Fmax,搜索维度 D D D,搜索区域上下边界 u b ub ub l b lb lb;在搜索空间中随机生成 N N N个樽海鞘个体构成初始种群;
Step 2:计算初始种群的适应度值并排序,首个个体定义为领导者,其余个体为追随者,并将适应值最优个体的位置作为当前食物源;
Step 3:判断樽海鞘个体角色:若为领导者则进入Step 4;若为跟随者则进入Step 5;
Step 4:根据基本SSA公式更新领导者位置,产生候选解1,同时执行OLOBL策略,产生候选解2,根据适应值保留候选解1和候选解2中的较优个体;
Step 5:根据式(2)更新追随者位置;
Step 6:比较食物源和当前最优个体的适应值,取较优者作为新的食物源;
Step 7:若函数评价次数达到最大函数评估次数 F max ⁡ F_{\max} Fmax,则输出食物源位置,即为最优解;否则,返回Step 3继续迭代。

二、仿真实验与结果分析

将OOSSA与MPA、EO、ArOA(算术优化算法)、AOA(阿基米德优化算法)、MFO和SSA进行对比,以文献[1]中表1的F1、F2、F4、F6、F8、F12(100维)为例,实验设置种群规模为30,最大迭代次数为300,每种算法独立运算30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
MPA:最差值: 1.0389e-18, 最优值: 1.347e-20, 平均值: 1.6402e-19, 标准差: 1.9731e-19, 秩和检验: 1.2118e-12
EO:最差值: 9.1051e-29, 最优值: 3.2576e-31, 平均值: 2.0947e-29, 标准差: 2.0875e-29, 秩和检验: 1.2118e-12
ArOA:最差值: 0.037967, 最优值: 0.0090435, 平均值: 0.022631, 标准差: 0.008513, 秩和检验: 1.2118e-12
AOA:最差值: 2.2064e-33, 最优值: 2.5425e-51, 平均值: 8.5856e-35, 标准差: 4.0438e-34, 秩和检验: 1.2118e-12
MFO:最差值: 91741.2436, 最优值: 30452.7793, 平均值: 65020.6665, 标准差: 14407.9622, 秩和检验: 1.2118e-12
SSA:最差值: 11309.3349, 最优值: 4819.1959, 平均值: 8495.8695, 标准差: 1559.4351, 秩和检验: 1.2118e-12
OOSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
MPA:最差值: 1.0167e-10, 最优值: 1.0607e-12, 平均值: 1.9106e-11, 标准差: 2.3996e-11, 秩和检验: 1.2118e-12
EO:最差值: 8.8858e-17, 最优值: 2.6117e-18, 平均值: 1.7836e-17, 标准差: 1.9233e-17, 秩和检验: 1.2118e-12
ArOA:最差值: 7.8247e-60, 最优值: 8.3627e-129, 平均值: 2.6174e-61, 标准差: 1.4284e-60, 秩和检验: 1.2118e-12
AOA:最差值: 5.7127e-17, 最优值: 3.2249e-30, 平均值: 3.8873e-18, 标准差: 1.1629e-17, 秩和检验: 1.2118e-12
MFO:最差值: 372.9246, 最优值: 158.168, 平均值: 242.7662, 标准差: 45.6328, 秩和检验: 1.2118e-12
SSA:最差值: 87.514, 最优值: 63.5896, 平均值: 74.3355, 标准差: 5.7419, 秩和检验: 1.2118e-12
OOSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F4
MPA:最差值: 3.9703e-07, 最优值: 6.659e-08, 平均值: 2.1535e-07, 标准差: 9.315e-08, 秩和检验: 1.2118e-12
EO:最差值: 65.6428, 最优值: 4.797e-05, 平均值: 2.1907, 标准差: 11.9842, 秩和检验: 1.2118e-12
ArOA:最差值: 0.1474, 最优值: 0.07352, 平均值: 0.096011, 标准差: 0.015302, 秩和检验: 1.2118e-12
AOA:最差值: 1.5145e-15, 最优值: 1.5443e-25, 平均值: 2.524e-16, 标准差: 4.3353e-16, 秩和检验: 1.2118e-12
MFO:最差值: 96.1135, 最优值: 87.1832, 平均值: 93.1344, 标准差: 1.8678, 秩和检验: 1.2118e-12
SSA:最差值: 29.2375, 最优值: 19.2051, 平均值: 23.8176, 标准差: 2.6315, 秩和检验: 1.2118e-12
OOSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F6
MPA:最差值: 8.0357e-13, 最优值: 7.7879e-15, 平均值: 2.561e-13, 标准差: 2.3581e-13, 秩和检验: 1.2118e-12
EO:最差值: 1.2979e-22, 最优值: 1.6461e-24, 平均值: 2.973e-23, 标准差: 3.3663e-23, 秩和检验: 1.2118e-12
ArOA:最差值: 34088.1059, 最优值: 6980.0791, 平均值: 21704.2177, 标准差: 8214.0129, 秩和检验: 1.2118e-12
AOA:最差值: 8.1932e-27, 最优值: 3.8307e-49, 平均值: 9.3697e-28, 标准差: 2.15e-27, 秩和检验: 1.2118e-12
MFO:最差值: 91864746802.0073, 最优值: 27782001843.8086, 平均值: 64891434522.0608, 标准差: 15332552108.6912, 秩和检验: 1.2118e-12
SSA:最差值: 11441607459.4016, 最优值: 6098806971.7523, 平均值: 8604286842.7058, 标准差: 1479596810.3065, 秩和检验: 1.2118e-12
OOSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F8
MPA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
EO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
ArOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
AOA:最差值: 743.6111, 最优值: 0, 平均值: 93.1808, 标准差: 242.1681, 秩和检验: 0.0055822
MFO:最差值: 1059.0993, 最优值: 696.516, 平均值: 877.0899, 标准差: 72.1299, 秩和检验: 1.2118e-12
SSA:最差值: 678.0174, 最优值: 485.7641, 平均值: 587.485, 标准差: 40.8396, 秩和检验: 1.2118e-12
OOSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F12
MPA:最差值: 0.23658, 最优值: 0.025183, 平均值: 0.078867, 标准差: 0.0468, 秩和检验: 1.2118e-12
EO:最差值: 0.14684, 最优值: 0.007797, 平均值: 0.047224, 标准差: 0.034686, 秩和检验: 1.2118e-12
ArOA:最差值: 0.0071276, 最优值: 1.037e-06, 平均值: 0.00091849, 标准差: 0.0016274, 秩和检验: 1.2118e-12
AOA:最差值: 383.2078, 最优值: 8.0877e-06, 平均值: 316.2719, 标准差: 143.9121, 秩和检验: 1.2118e-12
MFO:最差值: 322.3675, 最优值: 291.5968, 平均值: 305.5711, 标准差: 9.0848, 秩和检验: 1.2118e-12
SSA:最差值: 262.3197, 最优值: 231.2174, 平均值: 244.0848, 标准差: 8.2488, 秩和检验: 1.2118e-12
OOSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN

实验结果表明:OOSSA算法在求解精度和收敛速度方面表现出较大优势。

三、参考文献

[1] 王宗山, 丁洪伟, 王杰, 等. 基于正交设计的折射反向学习樽海鞘群算法[J]. 哈尔滨工业大学学报, 2022, 54(11): 122-136.
[2] 周凌云, 丁立新, 马懋德, 等. 一种正交反向学习萤火虫算法[J]. 电子与信息学报, 2019, 41(1): 202-209.
[3] 庞善起, 鹿姗姗. 正交表的构造方法及Matlab实现[J]. 中国卫生统计, 2017, 34(2): 364-367.

相关文章:

  • 国庆假期浏览了几十篇YOLO改进英文期刊,总结改进创新的一些相同点(期刊创新点持续更新)
  • 《计算机视觉基础知识蓝皮书》第5篇 目标检测基础
  • 提升能力和认知边界,最有效的方法是赚钱
  • Window下使用RegisterWindowMessage来实现消息通讯
  • Java 数组、排序和查找(1)
  • 你还没用过Mybatis-Plus?丝般顺滑,快速上手!
  • css3d动画:平移、旋转、缩放
  • 【英语:基础进阶_正式场景表达】F1.五步法搞定英文面试
  • SplitFS(SOSP‘19)
  • 【数据结构与算法】第十一篇:优先级队列
  • 【LeetCode】替换空格消失的数字分割链表除自身以外数组的乘积
  • 模糊控制之Sigmoidmf隶属度函数( PLC SCL代码)
  • atoi函数的初步实现到完美优化
  • 【云原生丨Kubernetes系列16】深入学习 ConfigMap 的使用
  • Python-字典,从基础到进阶用法大总结,进来查漏补缺
  • [case10]使用RSQL实现端到端的动态查询
  • [nginx文档翻译系列] 控制nginx
  • __proto__ 和 prototype的关系
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Flannel解读
  • gitlab-ci配置详解(一)
  • python学习笔记 - ThreadLocal
  • vue-loader 源码解析系列之 selector
  • 半理解系列--Promise的进化史
  • 编写符合Python风格的对象
  • 聚类分析——Kmeans
  • 浅谈web中前端模板引擎的使用
  • 软件开发学习的5大技巧,你知道吗?
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 问题之ssh中Host key verification failed的解决
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 湖北分布式智能数据采集方法有哪些?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (搬运以学习)flask 上下文的实现
  • (黑马C++)L06 重载与继承
  • (南京观海微电子)——COF介绍
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (轉)JSON.stringify 语法实例讲解
  • .NET Core 2.1路线图
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET中winform传递参数至Url并获得返回值或文件
  • @private @protected @public
  • [ C++ ] STL---仿函数与priority_queue
  • [C]整形提升(转载)
  • [C++]类和对象【下】
  • [CF407E]k-d-sequence
  • [CF494C]Helping People
  • [Docker]十.Docker Swarm讲解
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页