基于Tent映射的自适应鲸鱼优化算法

2024-01-28 13:30

本文主要是介绍基于Tent映射的自适应鲸鱼优化算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、理论基础
    • 1、标准鲸鱼优化算法(WOA)
    • 2、改进鲸鱼优化算法(IWOA)
      • (1)Tent映射
      • (2)引入自适应权重
      • (3)自适应阈值
      • (4)IWOA算法步骤
  • 二、函数测试与结果分析
  • 三、参考文献

一、理论基础

1、标准鲸鱼优化算法(WOA)

请参考这里。

2、改进鲸鱼优化算法(IWOA)

(1)Tent映射

混沌具有随机性和遍历性和初值敏感性,能使算法有更快的收敛速度。本文采用Tent映射来产生混沌序列,对种群进行初始化,使得初始解尽可能均匀的分布在解空间内。 z k + 1 = { 2 z k , 0 ≤ z ≤ 0.5 2 ( 1 − z k ) , 0.5 < z k ≤ 1 (1) z_{k+1}=\begin{dcases}2z_k,\quad\quad\,\,\,\quad 0≤z_≤0.5\\2(1-z_k),\quad 0.5<z_k≤1\end{dcases}\tag{1} zk+1={2zk,0z0.52(1zk),0.5<zk1(1)其中, k k k表示映射次数, z k z_k zk表示第 k k k次映射函数值。
经过伯努利移位变换后表示如下: x n + 1 = ( 2 x n ) mod 1 (2) x_{n+1}=(2x_n)\text{mod}\,1\tag{2} xn+1=(2xn)mod1(2)

(2)引入自适应权重

本文把惯性权重引入WOA中,作用于包围猎物和螺旋更新机制的位置更新中,权值 w w w随之迭代次数的增加而非线性递减,当算法在初期时的权重系数比较大时,此时具有较强的全局搜索能力,随着迭代次数的增加,权重系数在减小,算法可以在某一区域内进行精细搜索,防止陷入局部最优,提高求解的精度,鲸鱼位置更新公式如下: X ( t + 1 ) = w X ∗ ( t ) − A ⋅ D (3) X(t+1)=wX^*(t)-A\cdot D\tag{3} X(t+1)=wX(t)AD(3) X ( t + 1 ) = D ′ ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + w X ∗ ( t ) (4) X(t+1)=D'\cdot e^{bl}\cdot\cos(2\pi l)+wX^*(t)\tag{4} X(t+1)=Deblcos(2πl)+wX(t)(4)其中: w ( t ) = e − ( t M a x _ i t e r ) k (5) w(t)=e^{-\left(\frac{t}{Max\_iter}\right)^k}\tag{5} w(t)=e(Max_itert)k(5)其中, t t t为当前迭代次数, M a x _ i t e r Max\_iter Max_iter是最大迭代次数, k k k是调节系数,调节权重的大小。调节系数取不一样值权重变化如图1所示。
在这里插入图片描述

图1 权重变化曲线

本文取 k = 0.4 k=0.4 k=0.4,来平衡鲸鱼优化算法的全局和局部搜索能力。

(3)自适应阈值

标准鲸鱼优化算法设置概率阈值为0.5,来同步包围和螺旋过程。通过随机生成的 p p p值与概率阈值来选择不同的狩猎策略。但是随着迭代次数的增加,这种方式的捕食方式会导致算法陷入局部最优等问题,因此本文提出一个对数形式的自适应概率阈值 p ′ p' p来平衡全局搜索和局部开发的能力,表达式如下: p ′ = 1 − log ⁡ 10 ( 1 + 9 t M a x _ i t e r ) (6) p'=1-\log_{10}\left(1+\frac{9t}{Max\_iter}\right)\tag{6} p=1log10(1+Max_iter9t)(6)

(4)IWOA算法步骤

综上,本文提出的改进的鲸鱼优化算法的主要步骤如下:
步骤1:初始化鲸鱼算法基本参数,种群规模 N N N,最大迭代次数 M a x _ i t e r Max\_iter Max_iter,问题维数 D D D,对数螺线形状参数 b b b
步骤2:利用Tent混沌映射初始化鲸鱼位置;
步骤3:对目标函数进行求解,计算每个搜索个体的适应度,找到当前最优解;
步骤4:若 p < p ′ p<p' p<p ∣ A ∣ < 1 |A|<1 A<1,按式(3)进行更新;
步骤5:若 p < p ′ p<p' p<p ∣ A ∣ ≥ 1 |A|≥1 A1,按WOA对应公式进行螺旋运动的方式向猎物进行更新;
步骤6:若 p ≥ p ′ p≥p' pp,按式(4)进行全局搜索;
步骤7:位置更新完毕,计算每个个体的适应度值,与先前的最佳搜索代理位置进行比较,若优于 X ∗ X^* X,则替换 X ∗ X^* X
步骤8:判断是否达到最大迭代次数,若满足则终止迭代,同时输出最优解和适应度值,反之返回步骤4。

二、函数测试与结果分析

为验证改进鲸鱼优化算法的有效性,选用标准鲸鱼优化算法(WOA)、灰狼优化算法(GWO和粒子群优化算法(PSO)和其进行对比,算法参数设置如文献[1]中表1所示。设置种群规模为30,最大迭代次数为500,每个算法独立运算20次,以文献[1]中表2的6个30维的测试函数为例。结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
PSO:最差值: 147.8448,最优值:23.4933,平均值:63.9767,标准差:32.1388,秩和检验:6.7956e-08
GWO:最差值: 1.7889e-26,最优值:7.1869e-29,平均值:1.36e-27,标准差:3.9183e-27,秩和检验:6.7956e-08
WOA:最差值: 1.0992e-72,最优值:2.7991e-84,平均值:9.2059e-74,标准差:2.8764e-73,秩和检验:6.7956e-08
IWOA:最差值: 3.6756e-276,最优值:9.4649e-296,平均值:1.8382e-277,标准差:0,秩和检验:1
函数:F2
PSO:最差值: 13.6415,最优值:3.7539,平均值:8.1522,标准差:2.8786,秩和检验:6.7956e-08
GWO:最差值: 3.699e-16,最优值:7.9544e-18,平均值:8.2037e-17,标准差:8.5695e-17,秩和检验:6.7956e-08
WOA:最差值: 6.4078e-50,最优值:1.1677e-60,平均值:3.5018e-51,标准差:1.4268e-50,秩和检验:6.7956e-08
IWOA:最差值: 9.864e-142,最优值:6.1064e-152,平均值:5.4801e-143,标准差:2.2039e-142,秩和检验:1
函数:F3
PSO:最差值: 632.6858,最优值:100.3085,平均值:254.1884,标准差:144.4872,秩和检验:6.7956e-08
GWO:最差值: 28.7687,最优值:25.8787,平均值:27.0773,标准差:0.90809,秩和检验:1.8074e-05
WOA:最差值: 28.7457,最优值:27.1368,平均值:27.8405,标准差:0.4534,秩和检验:0.00083572
IWOA:最差值: 28.626,最优值:27.9667,平均值:28.2328,标准差:0.18107,秩和检验:1
函数:F4
PSO:最差值: 5.9211,最优值:3.6118,平均值:4.9672,标准差:0.6327,秩和检验:8.0065e-09
GWO:最差值: 1.3589e-13,最优值:6.4837e-14,平均值:1.0036e-13,标准差:1.9356e-14,秩和检验:7.3694e-09
WOA:最差值: 7.9936e-15,最优值:8.8818e-16,平均值:3.908e-15,标准差:2.6473e-15,秩和检验:2.1716e-05
IWOA:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0,秩和检验:NaN
函数:F5
PSO:最差值: 2.527,最优值:1.2815,平均值:1.6516,标准差:0.32439,秩和检验:8.0065e-09
GWO:最差值: 0.029495,最优值:0,平均值:0.0064644,标准差:0.010063,秩和检验:0.0045321
WOA:最差值: 0.15438,最优值:0,平均值:0.0077188,标准差:0.034519,秩和检验:0.34211
IWOA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F6
PSO:最差值: 78.0917,最优值:36.101,平均值:57.2082,标准差:13.0797,秩和检验:8.0065e-09
GWO:最差值: 9.4769,最优值:5.6843e-14,平均值:2.4972,标准差:3.4197,秩和检验:7.4242e-09
WOA:最差值: 5.6843e-14,最优值:0,平均值:2.8422e-15,标准差:1.2711e-14,秩和检验:0.34211
IWOA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN

实验结果表明,IWOA相比于其他三种算法求解精度更高,收敛速度更快,有更好的全局搜索能力。

三、参考文献

[1] 赵晶, 祝锡晶, 孟小玲, 等. 改进鲸鱼优化算法在机械臂时间最优轨迹规划的应用[J/OL]. 机械科学与技术: 1-10 [2021-11-08].

这篇关于基于Tent映射的自适应鲸鱼优化算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653760

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份