基于黏菌算法的函数寻优算法
文章目录
- 一、理论基础
- 1、黏菌算法
- (1)接近食物
- (2)包裹食物
- (3)获取食物
- 2、SMA算法伪代码
- 二、仿真实验与分析
- 三、参考文献
一、理论基础
1、黏菌算法
黏菌算法(Slime Mould Algorithm, SMA)是根据黏菌的规食行为得到的一种优化算法。黏菌在规食过程中发现食物时,会有振荡收缩的特性。同时,在多个食物源之间会形成粗细不一的静脉网络,并且静脉网络的粗细与食物源的质量有关。此外,黏菌在获取食物源时,仍会有一定的概率对未知区域进行搜索。
黏菌主要有三种行为:接近食物、包裹食物和获取食物。
(1)接近食物
为了将黏菌的趋近行为建模为一个数学方程,提出了以下规则来模拟黏菌的收缩模式:X(t+1)={Xb(t)+vb×(W×XA(t)−XB(t)),r<pvc×X(t),r≥p(1)X(t+1)=\begin{dcases}X_b(t)+vb×(W×X_A(t)-X_B(t)),r<p\\vc×X(t),\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\,\,r≥p\end{dcases}\tag{1}X(t+1)={Xb(t)+vb×(W×XA(t)−XB(t)),r<pvc×X(t),r≥p(1)其中,vbvbvb为[−a,a][-a,a][−a,a]之间的随机数,vcvcvc是在[−1,1][-1,1][−1,1]之间振荡并最终趋于零的参数,ttt为当前迭代次数,Xb(t)X_b(t)Xb(t)表示目前适应度最优的个体位置,X(t)X(t)X(t)表示当前黏菌个体的位置,XA(t)X_A(t)XA(t)和XB(t)X_B(t)XB(t)为两个随机个体位置,WWW表示黏菌的权重系数。
控制参数ppp、参数vbvbvb、参数aaa与权重系数WWW的更新公式如下:p=tanh∣S(i)−DF∣(2)p=\tanh|S(i)-DF|\tag{2}p=tanh∣S(i)−DF∣(2)其中,i∈1,2,⋯,ni\in1,2,\cdots,ni∈1,2,⋯,n,S(i)S(i)S(i)表示第iii个黏菌个体的适应度值,DFDFDF为当前取得的最优适应度值。vb=[−a,a](3)vb=[-a,a]\tag{3}vb=[−a,a](3)a=arctanh(−(tT)+1)(4)a=\text{arctanh}(-\left(\frac tT\right)+1)\tag{4}a=arctanh(−(Tt)+1)(4)W(SmellIndex(i))={1+r⋅log(bF−S(i)bF−wF+1),condition1−r⋅log(bF−S(i)bF−wF+1),others(5)W(SmellIndex(i))=\begin{dcases}1+r\cdot log\left(\frac{bF-S(i)}{bF-wF}+1\right),\quad condition\\1-r\cdot log\left(\frac{bF-S(i)}{bF-wF}+1\right),\quad others\end{dcases}\tag{5}W(SmellIndex(i))=⎩⎪⎪⎨⎪⎪⎧1+r⋅log(bF−wFbF−S(i)+1),condition1−r⋅log(bF−wFbF−S(i)+1),others(5)SmellIndex=sort(S)(6)SmellIndex=sort(S)\tag{6}SmellIndex=sort(S)(6)其中,conditionconditioncondition表示种群中适应度排在前一半个体,othersothersothers表示剩下的个体,rrr表示[0,1][0,1][0,1]之间的随机数,bFbFbF表示当前迭代获取的最佳适应度值,wFwFwF表示当前迭代最差适应度值。SmellIndex(i)SmellIndex(i)SmellIndex(i)为适应度值序列(求极小值问题为递增序列)。
(2)包裹食物
黏菌个体的位置更新公式如下:X(t+1)={rand⋅(UB−LB)+LB,rand<zXb(t)+vb×(W×XA(t)−XB(t)),r<pvc×X(t),r≥p(7)X(t+1)=\begin{dcases}rand\cdot(UB-LB)+LB,\quad\quad \quad \quad \,rand<z\\X_b(t)+vb×(W×X_A(t)-X_B(t)),r<p\\vc×X(t),\quad \quad\quad \quad \quad\quad \quad\quad \quad \quad \,\,\,\,\,r≥p\end{dcases}\tag{7}X(t+1)=⎩⎪⎨⎪⎧rand⋅(UB−LB)+LB,rand<zXb(t)+vb×(W×XA(t)−XB(t)),r<pvc×X(t),r≥p(7)其中,UBUBUB与LBLBLB为上下界,randrandrand为均匀分布在0到1之间的随机数,zzz为自定义参数(值为0.03)。
(3)获取食物
vbvbvb的值在[−a,a][-a,a][−a,a]之间随机振荡,并且随着迭代次数的增加逐渐接近零。vcvcvc的值在[−1,1][-1,1][−1,1]之间振荡,最终趋于零,计算公式如下:vc=[−b,b](8)vc=[-b,b]\tag{8}vc=[−b,b](8)b=1−t/T(9)b=1-t/T\tag{9}b=1−t/T(9)vbvbvb和vcvcvc随迭代次数的变化情况如图1所示,vbvbvb和vcvcvc之间的协同作用模拟了黏菌的选择行为。
图1 vb和vc的变化情况
2、SMA算法伪代码
图2 SMA算法伪代码
二、仿真实验与分析
将SMA算法与GWO、SCA和WOA算法进行对比,以文献[1]中30维的F1~F5为例。种群规模设置为N=30N=30N=30,最大迭代次数T=1000T=1000T=1000,每个算法独立运算30次。
结果显示如下:
函数:F1
GWO:best: 0,worst:0,mean:0,std:0
SCA:best: 1.2074e-07,worst:0.78621,mean:0.064539,std:0.18886
WOA:best: 7.9181e-169,worst:3.2697e-149,mean:1.148e-150,std:5.9669e-150
SMA:best: 0,worst:0,mean:0,std:0
函数:F2
GWO:best: 2.0369e-315,worst:1.2641e-189,mean:4.2135e-191,std:0
SCA:best: 9.6861e-08,worst:7.9582e-05,mean:9.8167e-06,std:1.5905e-05
WOA:best: 9.0857e-114,worst:6.2747e-104,mean:4.2066e-105,std:1.3224e-104
SMA:best: 0,worst:1.4897e-193,mean:4.9658e-195,std:0
函数:F3
GWO:best: 0,worst:0,mean:0,std:0
SCA:best: 28.0204,worst:12658.1217,mean:3151.4432,std:2934.3648
WOA:best: 754.6686,worst:42890.8096,mean:22061.4708,std:11158.2669
SMA:best: 0,worst:0,mean:0,std:0
函数:F4
GWO:best: 0,worst:3.2301e-181,mean:1.0767e-182,std:0
SCA:best: 1.479,worst:45.1446,mean:17.743,std:11.2051
WOA:best: 0.50087,worst:88.8509,mean:45.5944,std:30.4244
SMA:best: 0,worst:1.0959e-180,mean:3.6529e-182,std:0
函数:F5
GWO:best: 0.002612,worst:27.6362,mean:5.7737,std:10.8871
SCA:best: 28.0899,worst:3588.5641,mean:261.7717,std:718.9743
WOA:best: 26.5473,worst:28.5326,mean:27.1689,std:0.46015
SMA:best: 0.0010161,worst:27.287,mean:5.6596,std:10.9604
结果表明,SMA算法具有良好的鲁棒性以及寻优精度。
三、参考文献
[1] Shimin Li, Huiling Chen, Mingjing Wang, et al. Slime mould algorithm: A new method for stochastic optimization[J]. Future Generation Computer Systems, 2020, 111: 300-323.
基于黏菌算法的函数寻优算法相关推荐
- 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法
<MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...
- 基于蚁群算法的函数寻优算法
文章目录 一.理论基础 二.案例背景 1.问题描述 2.解题思路及步骤 三.MATLAB程序实现 1.清空环境变量 2.初始化参数 3.构建解空间和目标函数 4.迭代寻优 5.结果显示 6.绘图 四. ...
- 基于沙猫群优化算法的函数寻优算法
文章目录 一.理论基础 1.沙猫群优化算法 (1)初始化种群 (2)搜索猎物(探索) (3)攻击猎物(开发) (4)探索和开发 2.SCSO算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基 ...
- 基于改进正弦余弦算法的函数寻优算法
文章目录 一.理论基础 1.基本正弦余弦算法 2.改进正弦余弦算法 (1)基于双曲正弦调节因子和动态余弦波权重的位置更新 (2)基于拉普拉斯分布和高斯分布的动态混合变异 二.算法流程图 三.仿真实验与 ...
- 基于蜉蝣优化算法的函数寻优算法
文章目录 一.理论基础 1.蜉蝣优化算法 (1)雄性蜉蝣的更新 (2)雌性蜉蝣的更新 (3)蜉蝣的交配过程 2.MA算法伪代码 二.仿真实验与结果分析 1.函数测试与数值分析 2.WSN三维覆盖优化 ...
- 基于金豺优化算法的函数寻优算法
文章目录 一.理论基础 1.金豺优化算法 (1)搜索空间公式 (2)探索阶段或搜索猎物 (3)开发阶段或围捕和突袭猎物 (4)从探索转向开发 2.GJO伪代码 二.仿真实验与结果分析 三.参考文献 一 ...
- 基于果蝇优化算法的函数寻优算法
文章目录 一.理论基础 二.算法步骤 1.启发 2.方向和距离 3.气味浓度判断值 4.适应度评估 5.寻找最优个体 6.飞行 7.迭代优化 三.案例背景 问题描述 四.MATLAB程序实现 1.清空 ...
- 基于蜂鸟优化算法的函数寻优算法
文章目录 一.理论基础 1.自搜索阶段 2.引导搜索阶段 3.HOA伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 蜂鸟优化算法(Hummingbirds optimization algor ...
- 基于藤壶交配优化算法的函数寻优算法
文章目录 一.理论基础 1.藤壶交配优化算法 1.1 哈迪-温伯格(Hardy-Weinberg)法则 1.2 BMO 1.2.1 初始化 1.2.2 选择过程 1.2.3 繁殖 2.BMO算法伪代码 ...
最新文章
- [Android问答] 开发环境问题集锦
- Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】
- python 从入门到跑路
- scada系统集成_MES/MOM与WMS系统集成应用案例-系统接口、交互数据分析
- 生产环境mysql主主同步主键冲突处理
- 软件测试成熟度与自动化测试
- ROST情感分析的语法规则_从词法分析角度聊 Go 代码组成
- C# 使用VS建立数据库并使用
- n1进入recovery模式_斐讯N1盒子刷机救砖教程
- QLabel setText 标红 加粗
- mac 更新13.1后使用AccessClient.app 闪退
- 软件测试面试题:请详细介绍一下各种测试类型的含义?
- 在本地调试移动设备上的页面——神器weinre介绍
- 实用!!服务器监测邮箱报警
- 163相册批量下载程序
- 计算机替代手工记账的影响,计算机记账替代手工记账的条件
- 整理的AD/2000技巧
- seu校园网简易自动登陆教程
- java中集合的基础知识_javaSE基础知识之集合类
- 丹麦奥尔堡大学计算机系博士,关于选拔博士研究生攻读上海大学-丹麦奥尔堡大学双博士学位的通知...