基于混沌搜索策略的鲸鱼优化算法-附代码

2023-11-10

基于混沌搜索策略的鲸鱼优化算法


摘要:针对鲸鱼优化算法存在探索和开发能力难以协调、易陷入局部最优的不足,提出一种基于混沌搜索策略的鲸鱼优化算法(CWOA). 首先,采用混沌反向学习策略产生初始种群,为全局搜索多样性奠定基础;其次,设计收敛因子和惯性权重的非线性混沌扰动协同更新策略以平衡全局探索和局部开发能力;最后,将种群进化更新与最优个体的混沌搜索机制相结合,以减小算法陷入局部最优的概率.

1.鲸鱼优化算法

基础鲸鱼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107559167

2. 改进鲸鱼优化算法

2.1 混沌反向学习初始化策略

研究表明 [ 13 ] { }^{[13]} [13], 初始种群的好坏影响着算法的求 解精度和收玫速度, 多样性较好的初始种群对提升算 法性能很有帮助. 然而, WOA算法在求解优化问题时 通常采用随机方法产生初始种群, 可能使得初始种群 分布不均, 导致初始种群多样性较差. 此外, 由于对优 化问题的全局最优解没有任何先验知识, 应尽可能使 种群均匀分布在搜索空间. 为了增强种群的多样性 并提高求解效率, 为算法进行全局搜索奠定多样性基 础, CWOA算法采用混沌反向学习初始化策略. 首先 利用混沌变量的随机性、遍历性和规律性特征, 产生 具有较好多样性的混沌初始种群; 其次通过对混沌 初始种群及其反向种群进行排序选择, 将适应度值较 优的解作为初始种群, 提高求解效率.
假设种群规模为 N N N, 采用具有较好遍历均匀性和 较快迭代速度的 Tent混沌映射在 D D D 维欧氏空间中生 成混沌序列 y = { y d , d = 1 , 2 , ⋯   , D } , y d = { y i d , i = y=\left\{y_{d}, d=1,2, \cdots, D\right\}, y_{d}=\left\{y_{i d}, i=\right. y={yd,d=1,2,,D},yd={yid,i= 1 , 2 , ⋯   , N } 1,2, \cdots, N\} 1,2,,N}, Tent混沌映射函数表达式 [ 14 ] { }^{[14]} [14]
y i + 1 , d = { 2 y i d , y i d < 0.5 2 ( 1 − y i d ) , y i d ⩾ 0.5. (8) y_{i+1, d}=\left\{\begin{array}{l} 2 y_{i d}, y_{i d}<0.5 \\ 2\left(1-y_{i d}\right), y_{i d} \geqslant 0.5 . \end{array}\right.\tag{8} yi+1,d={2yid,yid<0.52(1yid),yid0.5.(8)
将混沌序列映射到解空间中, 得到种群 X = X= X= { X i , i = 1 , 2 , ⋯   , N } , X i = { X i d , d = 1 , 2 , ⋯   , D } \left\{X_{i}, i=1,2, \cdots, N\right\}, X_{i}=\left\{X_{i d}, d=1,2, \cdots, D\right\} {Xi,i=1,2,,N},Xi={Xid,d=1,2,,D}, 种群个体 X i d X_{i d} Xid 表示为
X i d = X min ⁡ d + y i d ⋅ ( X max ⁡ d − X min ⁡ d ) . (9) X_{i d}=X_{\min d}+y_{i d} \cdot\left(X_{\max d}-X_{\min d}\right) . \tag{9} Xid=Xmind+yid(XmaxdXmind).(9)
其中: X i d X_{i d} Xid 为第 i i i 个种群个体的第 d d d 维码值, X min ⁡ d X_{\min d} Xmind X max ⁡ d X_{\max d} Xmaxd X i d X_{i d} Xid 的搜索上下界.
由种群 X X X 计算反向种群 O X = { O X i , i = 1 , 2 \mathrm{OX}=\left\{\mathrm{OX}_{i}, i=1,2\right. OX={OXi,i=1,2, ⋯   , N } , O X i = { O X i d , d = 1 , 2 , ⋯   , D } \cdots, N\}, \mathrm{OX}_{i}=\left\{\mathrm{OX}_{i d}, d=1,2, \cdots, D\right\} ,N},OXi={OXid,d=1,2,,D}, 反向种群 个体 O X i d \mathrm{OX}_{i d} OXid 表示为
O X i d = X min ⁡ d + X max ⁡ d − X i d . (10) \mathrm{OX}_{i d}=X_{\min d}+X_{\max d}-X_{i d} . \tag{10} OXid=Xmind+XmaxdXid.(10)
种群 X X X 与反向种群 O X \mathrm{OX} OX 合并, 得到新种群 { X \{X {X UOX}. 计算新种群的目标函数值并排序, 选取其中 适应度值最好的 N N N 个个体作为初始种群.

2.2 收敛因子和惯性权重混沌扰动协同更新策略

在WOA算法中,收敛因子a随迭代次数的增加由2线性减小到0,属于线性时变更新策略. 然而,收敛因子a的线性时变更新策略不能完全体现出实际WOA 算法的优化搜索过程. 文献 [11] 提出了一种非线性收敛因子,在搜索前期以较小的值随迭代次数增加而递增,当增大到一个较大值后,再快速递减到一个较小值,最后以较慢的速度再递增,属于非线性时变更新策略. 本文采用具有较好遍历性的逻辑自映射函数产生混沌序列 [ 15 ] { }^{[15]} [15], 进而对收玫因子进行混沌 扰动, 提出一种带混沌扰动的收敛因子非线性时变更 新策略, 收敛因子更新公式为
a = a initial  ⋅ ∣ y t ∣ − ( a initial  − a final  ) ⋅ tan ⁡ ( 0.875 ⋅ t t max ⁡ ) (11) a=a_{\text {initial }} \cdot\left|y^{t}\right|-\left(a_{\text {initial }}-a_{\text {final }}\right) \cdot \tan \left(0.875 \cdot \frac{t}{t_{\max }}\right) \tag{11} a=ainitial  yt (ainitial afinal )tan(0.875tmaxt)(11)
其中: a initial  a_{\text {initial }} ainitial  a final  a_{\text {final }} afinal  分别为收敛因子 a a a 的初值和终 值; y t = 1 − 2 ( y t − 1 ) 2 , y t ∈ ( − 1 , 1 ) y^{t}=1-2\left(y^{t-1}\right)^{2}, y^{t} \in(-1,1) yt=12(yt1)2,yt(1,1) 为自逻辑映射函数 产生的混沌序列.
通过施加带混沌扰动的收敛因子非线性时变更 新策略, 在一定程度上提升了算法性能. 然而, 当涉 及到时变更新策略时, 单独依靠收玫因子并不能在 种群全局探索能力与局部开发能力之间进行有效平 衡. 因此, CWOA算法借鉴PSO算法, 引入惯性权重配 合收敛因子共同调节种群全局探索能力和局部开发 能力, 惯性权重更新策略同样选择带混沌扰动的非线 性时变更新策略. 惯性权重更新公式为
ω = ω final  ⋅ ∣ y t ∣ + ( ω initial  − ω final  ) ⋅ ( t max ⁡ − t t max ⁡ ) 2 (12) \omega=\omega_{\text {final }} \cdot\left|y^{t}\right|+\left(\omega_{\text {initial }}-\omega_{\text {final }}\right) \cdot\left(\frac{t_{\max }-t}{t_{\max }}\right)^{2} \tag{12} ω=ωfinal  yt +(ωinitial ωfinal )(tmaxtmaxt)2(12)
其中 ω initial  \omega_{\text {initial }} ωinitial  ω final  \omega_{\text {final }} ωfinal  分别为惯性权重 ω \omega ω 的初值和终值.
通过收玫因子和惯性权重混沌扰动协同更新, 当 前个体的位置更新和螺旋更新位置公式分别为
X t + 1 = ω ⋅ X gbest  t − A ⋅ ∣ C ⋅ X gbest  t − X t ∣ (13) X^{t+1}=\omega \cdot X_{\text {gbest }}^{t}-A \cdot\left|C \cdot X_{\text {gbest }}^{t}-X^{t}\right| \tag{13} Xt+1=ωXgbest tA CXgbest tXt (13)

X t + 1 = ω ⋅ X gbest  t + D ⋅ e b l ⋅ cos ⁡ ( 2 π l ) (14) \begin{aligned} &X^{t+1}=\omega \cdot X_{\text {gbest }}^{t}+D \cdot \mathrm{e}^{b l} \cdot \cos (2 \pi l) \end{aligned}\tag{14} Xt+1=ωXgbest t+Deblcos(2πl)(14)

2.3最优个体混沌搜索策略

WOA算法迭代后期, 由于群体中所有鲸鱼个体 均向最优个体位置聚集, 从而导致群体内多样性缺 失, 算法过早收敛到一种非全局最优状态, 出现早 熟收玫现象. 为了减少 WOA 算法出现早熟收敛现 象的概率, CWOA算法通过对当前最优鲸鱼个体施 加混沌搜索策略, 以当前搜索到最优个体位置向量 X gbest  t = ( X gbest  1 t , X gbest  2 t , ⋯   , X gbest  D t ) X_{\text {gbest }}^{t}=\left(X_{\text {gbest } 1}^{t}, X_{\text {gbest } 2}^{t}, \cdots, X_{\text {gbest } D}^{t}\right) Xgbest t=(Xgbest 1t,Xgbest 2t,,Xgbest Dt) 为基础, 将 当前最优个体位置向量线性映射到混沌变量的取值 区间,利用混沌变量的随机性、遍历性和规律性等内 在特性进行混沌优化搜索, 最终将获得的混沌优化解 线性转换到优化空间, 此时的混沌优化本质上是一种 深度局部搜索方法. 混沌搜索主要步骤如下.

Step 1: 按照 y gbest  d = 2 ( X gbest  d − X min ⁡ d ) X max ⁡ d − X min ⁡ d − 1 y_{\text {gbest } d}=\frac{2\left(X_{\text {gbest } d}-X_{\min d}\right)}{X_{\max d}-X_{\min d}}-1 ygbest d=XmaxdXmind2(Xgbest dXmind)1 将当前最优个体位置向量的每一维映射到区间 ( − 1 (-1 (1, 1).

Step 2: 将混沌变量加载于待搜索的个体变量 y gbest  d y_{\text {gbest } d} ygbest d, 即将 y gbest  d y_{\text {gbest } d} ygbest d 代入逻辑自 映射函数 y gbest  d t c = y_{\text {gbest } d}^{t_{c}}= ygbest dtc= 1 − 2 ( y gbest  d t c − 1 ) 2 1-2\left(y_{\text {gbest } d}^{t_{c}-1}\right)^{2} 12(ygbest dtc1)2 进行迭代, 产生混沌序列 y gbest  d t c ( t c = y_{\text {gbest } d}^{t_{c}}\left(t_{c}=\right. ygbest dtc(tc=

1 , 2 , ⋯   , t c max ⁡ ) \left.1,2, \cdots, t_{c \max }\right) 1,2,,tcmax). 其中: t c max ⁡ t_{c \max } tcmax 为混沌搜索的最大迭代 次数, y gbest  d t c ∈ ( − 1 , 1 ) y_{\text {gbest } d}^{t_{c}} \in(-1,1) ygbest dtc(1,1).

Step 3: 利用式 X gbest  d ′ = 1 2 ( X max ⁡ d − X min ⁡ d ) × X_{\text {gbest } d}^{\prime}=\frac{1}{2}\left(X_{\max d}-X_{\min d}\right) \times Xgbest d=21(XmaxdXmind)× y gbest  d + 1 2 ( X max ⁡ d − X min ⁡ d ) y_{\text {gbest } d}+\frac{1}{2}\left(X_{\max d}-X_{\min d}\right) ygbest d+21(XmaxdXmind) y gbest  d y_{\text {gbest } d} ygbest d 载波到原搜索 空间邻域内以产生新最优个体位置向量 X gbest  ′ X_{\text {gbest }}^{\prime} Xgbest .

Step 4: 对 X gbest  X_{\text {gbest }} Xgbest  X gbest  ′ X_{\text {gbest }}^{\prime} Xgbest  进行适应度函数值评 价,更新当前最优个体位置.

Step 5: 判断是否达到最大混沌搜索次数, 如果 是, 则终止混沌搜索, 否则转入 Step 2 .

综上所述, CWOA算法步骤的伪代码表示如下:
begin
初始化算法参数, 按照 2.1 2.1 2.1 节所述的混沌反向学 习初始化策略产生初始化鲸鱼种群 { X i , i = 1 , 2 \left\{X_{i}, i=1,2\right. {Xi,i=1,2, ⋯   , N } \cdots, N\} ,N}
计算群体中每个个体的适应度值 { F ( X i ) , i = 1 \left\{F\left(X_{i}\right), i=1\right. {F(Xi),i=1, 2 , ⋯   , N } 2, \cdots, N\} 2,,N}, 记录当前最优个体位置.
while ( t < t max ⁡ ) \left(t<t_{\max }\right) (t<tmax) do
for i = 1 i=1 i=1 to N N N do
根据式 (11) 计算收敛因子 a a a 的值;
根据式 (12) 计算惯性权重 ω \omega ω 的值.

if (p < 0.5) do
if (|A| < 1) do
按照式(13)更新当前个体位置.
else if (|A| ⩾ 1) do
按照式(7)更新当前个体位置.
end if
else if (p ⩾ 0.5) do
按照式(14)更新当前个体位置.
end if
end for
按照2.3节所述策略执行最优个体混沌搜索;
更新当前最优个体位置.
t = t + 1.
end while
end

3.实验结果

请添加图片描述

4.参考文献

[1]王坚浩,张亮,史超,车飞,丁刚,武杰.基于混沌搜索策略的鲸鱼优化算法[J].控制与决策,2019,34(09):1893-1900.

5.Matlab代码

6.Python代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于混沌搜索策略的鲸鱼优化算法-附代码 的相关文章

随机推荐

  • Linux - quota的举例说明

    实作 Quota 流程 1 文件系统支持 root www df h home Filesystem Size Used Avail Use Mounted on dev hda3 4 8G 740M 3 8G 17 home lt 鸟哥主
  • 【STM32】工程配置,存储空间分别情况,常用操作

    STM32的程序和数据存储分布 存储域 意义 存储介质 Code 代码域 ROM RO data 只读数据域 ROM RW data 可读可写数据域 指初始化为非0值的可读写数据 不运行的时候ROM 运行的时候RAM ZI data 可读可
  • informatica简易教程

    一 环境配置1 informatica的元数据 账号 密码 信息保存在Oracle上面2 Linux下在infa bin里有informatica的启动脚本startup infa sh3 修改windows主机的hosts 地址C Win
  • Android Studio远程主机强迫关闭了一个现有的连接

    只要android studio一编译项目 就报 远程主机强迫关闭了一个现有的连接 An Existing Connection was Forcibly Closed by the Remote Host 原因 打开了 win10 的热点
  • 【JVM】内存快照分析工具Jprofiler

    OOM了 怎么办 最好能够快速找到代码第几行出错 内存快照分析工具 MAT Jprofiler MAT Jprofiler 作用 分析Dump内存文件 快速定位内存泄漏 获得堆中的数据 获得大的对象 Jprofiler安装 IDEA插件中搜
  • 高性能RTL仿真器ESEENT专题2:firrtl编译和安装

    由于essent使用的是firrtl工具生成的中间表达式文件 fir 所以要使用和测试essent首先要编译和安装firrtl 因此本节将介绍firrtl的编译和安装 前期准备 安装varilator 参考 verilator安装 安装yo
  • django向前端填充HTML标签,防止django自动转义为字符串

    在外面嵌套一个autoescape即可 autoescape on 填充的内容 endautoescape 官方文档请参考 https docs djangoproject com zh hans 4 0 ref templates bui
  • USB过压保护芯片,高输入电压充电器(OVP)

    PW2606B是一种前端过电压和过电流保护装置 它实现了广泛的输入电压范围从2 5VDC到40VDC 过电压阈值可在外部或外部编程设置为内部默认设置 集成功率路径nFET开关的低电阻确保了更好的性能电池充电系统应用的性能 它可以提供高达1A
  • 02链路预测

    什么是链路预测 链路预测是一个利用图网络做预测的经典任务 所谓链路 Link 指节点与节点之间的连接 也就是图论中的边 如上图所示 所谓链路预测就是预测原本不相连的两个节点之间是否有边存在 若是在有权图中 那就顺便还预测下相邻边的权重 如果
  • 微信小程序——image图片组件宽高自适应方法(可详细了!)

    前言 第一次做小程序的时候使用了image图片组件 src引用一张图片后 给图片的样式设置了width 100 发现图片变形了 我想要的效果是 图片在父级中的宽是占据父级元素的100 高度自动适应 按照html中的图片在浏览器中默认显示逻辑
  • 如何解决Linux删除文件但是磁盘空间大小并没有释放的问题?

    一句话解释是因为删除的文件正在使用 关键词 文件已删除 但是df没有正确显示磁盘剩余容量 lsof grep deleted 磁盘剩余空间明显不符合预期 删除一个大文件 但还是提示磁盘空间已满 No space left on device
  • 从0写bootloader — 最简单的bootloader和App

    地址空间划分 对于空间划分是人为定义的 bootloader编写 启动文件start s PRESERVE8 instruct is aligned by 8 bytes 指令集8字节对齐 THUMB use Thumb instructi
  • CISCN2022全国初赛题解WriteUp-MapleLeaves

    MapleLeaves WriteUp 队员 Do1phln b477ery sfc9982 0HB Web Ezpop thinkphp 6 0 12lts 存在反序列化漏洞 https www freebuf com vuls 3215
  • Unity销毁对象的问题

    最近踩了一点坑 对象有时立即销毁比较好 不然有奇怪的错误发生 比如新旧同名骨骼替换 之前的最好parent null 然后Destroy obj 如果只写Destroy的话 由于Destroy是延迟销毁对象 那么新骨骼Instantiate
  • stm32 IO输出举例

    以控制有源蜂鸣器为例 有源蜂鸣器是自带震动源的器件 无源蜂鸣器则需要方波来模拟震动源 1 硬件连接 我们可以看到蜂鸣器接在PB8 而且不是直接使用IO驱动蜂鸣器 蜂鸣器功率比较大 一般都会使用三极管作为输出控制 我们可以看到黄色部分说明了P
  • zookeeper配置

    基本事件单元 以毫秒为单位 必须 tickTime 2000 监听客户端连接的端口 必须 clientPort 2181 存储快照的目录 必须 dataDir F server0 zookeeper 3 4 6 dataTmp log目录
  • C语言—总结2—数组,字符数组与字符串的关系,字符串操作函数,输入输出函数

    一 数组 1 一维数组的创建 数组是一组同类型元素的集合 类型符 数组名 常量表达式 lt 1 gt 一般方法 lt 2 gt 宏定义 数组创建时 内必须是一个常量 2 数组的初始化 数组的初始化是指在创建数组的同时 给数组一些对应的初始化
  • 嵌入式Linux系统上的GCC编译器——编译过程.c .i .s .o

    开发板上没有GCC编译器需要安装 sudo apt install gcc 查看gcc版本 gcc v 下图内为gcc版本 基本语法 o 指定生成的可执行文件的名字 o 后面直接跟输出的名字就可以 E 只进行预处理 S 只编译 c 编译并汇
  • JDK8新特性-Stream流

    一 介绍 Java 8 API添加了一个新的抽象称为流Stream 可以让你以一种声明的方式处理数据 Stream 主要用于集合操作 极大的简化了代码 同时支持链式编程 Stream API可以极大提高Java程序员的生产力 让程序员写出高
  • 基于混沌搜索策略的鲸鱼优化算法-附代码

    基于混沌搜索策略的鲸鱼优化算法 文章目录 基于混沌搜索策略的鲸鱼优化算法 1 鲸鱼优化算法 2 改进鲸鱼优化算法 2 1 混沌反向学习初始化策略 2 2 收敛因子和惯性权重混沌扰动协同更新策略 2 3最优个体混沌搜索策略 3 实验结果 4