多策略改进海鸥优化算法

2023-11-10 09:00

本文主要是介绍多策略改进海鸥优化算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、非线性参数A策略

二、翻筋斗觅食策略 


 

       基本 SOA 有一些局限性,例如容易陷入局部最优值、后期收敛缓慢、勘探与开发能力不平衡等,在求解复杂优化问题时尤甚。为了改善基本SOA的不足,提出一种基于翻筋斗觅食策略的改进 SOA(SFSOA)。需要强调的是,所提 SFSOA 不改变基本 SOA 的算法框架,仅通过引入两种新策略改善SOA的性能。

一、非线性参数A策略

       在SOA中,海鸥个体的迁移行为是算法的一种重要操作,通过引入一个参数A来控制海鸥个体位置,避免海鸥个体在飞行寻优过程中与其他相邻个体发生碰撞,不产生重复的位置。因此,参数A在SOA搜索过程中对平衡算法的勘探和开采能力起重要作用。然而,参数A的值随迭代次数增加从eq?f_%7Bc%7D线性递减到0。一般来说,fc的取值为2,即在SOA迭代过程中A的值由2线性减少至0。

       在利用SOA解决优化问题中,其搜索过程非常复杂且呈现出一个非线性下降趋势。同时,待求问题也需要算法的探索性和开发性行为发生非线性变化,以避免局部最优解。若控制参数A纯粹地以线性递减的方式模拟海鸥群体的迁移过程,就会降低SOA的寻优搜索能力。因此,本文提出一种基于倒S型函数的非线性递减控制参数A策略,其数学表达式为:

eq?A%3Df_%7Bc%2Cmin%7D+%28f_%7Bc%2Cmax%7D-f_%7Bc%2Cmin%7D%29e%5E%7B-%28%5Cfrac%7B1.5t%7D%7BT%7D%29%5E4%7D%20%2812%29

       其中: eq?f_%7Bc%2Cmax%7Deq?f_%7Bc%2Cmin%7D分别为频率控制参数eq?f_%7Bc%7D的最大值和最小值。从式(12)可知,在SOA的寻优过程中,参数A的值以非线性方式进行递减可增强算法的全局搜索能力,同时既能避开海鸥个体之间的位置重叠,也可在全局探索和局部开发能力上获得一个较好的平衡。图1给出了控制参数A的值随迭代次数增加以非线性递减方式变化的曲线。

20b1d9b4c9794ff3a31cdb220f0bd170.png

图1 控制参数A的值随迭代次数增加曲线

        从图1可以清晰地看出,与式(3)相比,式(12)有两个不同的特征:a)非线性变化参数A更符合海鸥群体的实际迁移过程,前后期递减缓慢和中期递减加快的特点能提高SOA的精度和加快收敛;b)非线性变化参数A在迭代过程中更趋向于局部开发搜索(约占最大迭代次数的60%)。 

二、翻筋斗觅食策略 

       在算法搜索后期,所有海鸥个体均向当前群体中最优个体所在区域靠拢;导致群体多样性会损失,如果当前最优个体不是全局最优解,则算法陷入局部最优,这是群体智能优化算法的固有的缺点。为了克服这个缺点,研究者在群体智能优化算法中引入许多策略如变异算子、反向学习、莱维飞行、透镜成像学习、小孔成像学习等。翻筋斗觅食是蝠鲼在捕食时最有效的一种方式,当找到食物源时,它们会做一系列向后翻筋斗动作,围绕浮游生物(猎物)旋转,将其吸引到自己身边。原理实现如下:在这种策略中,猎物的位置被视为一个支点,每只蝠鲼都倾向于围绕枢轴和翻筋斗来回游动到一个新的位置,其数学模型为:

eq?X%28t+1%29%3DX%28t%29+S%5Ccdot%20%28r_%7B1%7D%5Ccdot%20x_%7Bbest%7D-r_%7B2%7D%5Ccdot%20X%28t%29%29%20%2813%29

其中:eq?X为蝠鲼个体位置;eq?X_%7Bbest%7D是当前全局最优个体位置;eq?S称为空翻因子;eq?r_%7B1%7Deq?r_%7B2%7D分别是[0,1]的随机数。为了降低 SOA 在搜索后期陷入局部最优的概率,将蝠鲼翻筋斗觅食策略引入到 SOA中,其数学表达式为:

eq?P_%7Bs%7D%28t+1%29%3DP_%7Bs%7D%28t%29+S%5Ccdot%20%28r_%7B1%7D%5Ccdot%20p_%7Bbs%7D-r_%7B2%7D%5Ccdot%20P_%7Bs%7D%28t%29%29%20%2814%29

 其中,空翻因子eq?S%3D2,海鸥翻筋斗觅食示意图如图2所示。

f2e444f86f3c487ca5136e3352bc8b17.jpeg

图2 海鸥翻筋斗觅食示意图

        从图2和式(14)可以看出,在定义了翻筋斗范围后,每只海鸥都可以移动到新搜索域中的任何位置,该搜索域位于当前位置与其围绕目前找到的最佳海鸥位置的对称位置之间。随着当前海鸥个体位置与目前找到的最佳海鸥位置之间的距离减小,当前位置的扰动也会减小,所有个体逐渐逼近搜索空间中的最优解。因此,随着迭代次数的增加,翻筋斗觅食的范围自适应地减小,从而加速收敛。组合上述两个策略改进SOA,得到的ISOA流程如图3所示。

f0da0f9a5c8340aba28104e90ba863ec.jpeg

图3 ISOA流程图

 

 

 

 

这篇关于多策略改进海鸥优化算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

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