智能优化算法:黏菌优化算法 - 附代码
智能优化算法:黏菌优化算法
文章目录
- 智能优化算法:黏菌优化算法
- 1.算法原理
- 2.实验结果
- 3.参考文献
- 4.Matlab代码
- 5.python代码
摘要:黏菌优化算法(Slime mould algorithm,SMA)由 Li等于 2020 年提出,其灵感来自于黏菌的扩散和觅食行为,属于元启发算法。具有收敛速度快,寻优能力强的特点。
1.算法原理
该算法主要模拟了黏菌在觅食过程中的行为和形态变化,而未对其完整生命周期进行建模。通过权值指标模拟黏菌静脉状管的形态变化和收缩模式之间的三种相关性。
黏菌觅食过程,首先根据空气中气味接近食物,食物浓度越高,生物振荡器波越强,细胞质流动越快,黏菌静脉状管越粗。通过函数表达模拟该其逼近行为,其位置更新公式如下:
Xnew={rand.(UB−LB)+LB,rand<zXb(t)+vb.(W.XA(t)−XB(t)),r<pvc.X(t),r≥p(1)X_{new}=\begin{cases} rand.(UB-LB)+LB,rand<z \\ X_b(t)+vb.(W.X_A(t)-X_B(t)),r<p\\ vc.X(t),r\geq p \end{cases}\tag{1} Xnew=⎩⎪⎨⎪⎧rand.(UB−LB)+LB,rand<zXb(t)+vb.(W.XA(t)−XB(t)),r<pvc.X(t),r≥p(1)
p=tanh∣S(i)−DF∣(2)p=tanh|S(i)-DF| \tag{2} p=tanh∣S(i)−DF∣(2)
其中 LBLBLB 与 UBUBUB 表示搜索范围的上下边界,vbvbvb的参数
取值范围是[−a,a][-a,a][−a,a], vcvcvc 从1线性减少至0. ttt 表示当前迭代,XbX_bXb表示当前发现食物气味浓度最高位置, XXX 表示黏菌当前位置,XAX_AXA 和XBX_BXB表示随机选取的两个黏菌位置,WWW表示黏菌重量,S(i)S(i)S(i)表示 XXX 的适应度,而 DFDFDF 表示所有迭代中的最佳适应度。其中,参数 aaa 的函数函数表达为:
a=arctanh(−1maxT+1)(3)a = arctanh(-\frac{1}{maxT}+1)\tag{3} a=arctanh(−maxT1+1)(3)
其中, maxTmaxTmaxT表示最大迭代次数。而WWW的表达式为:
W(SmellIndex(i))={1+r.log(bF−S(i)bF−wF+1),condition1−r.log(bF−S(i)bF−wF+1),others(4)W(SmellIndex(i)) = \begin{cases} 1+r.log(\frac{bF-S(i)}{bF-wF}+1),condition\\ 1-r.log(\frac{bF-S(i)}{bF-wF}+1),others \end{cases}\tag{4} W(SmellIndex(i))={1+r.log(bF−wFbF−S(i)+1),condition1−r.log(bF−wFbF−S(i)+1),others(4)
smellIndex=sort(S)(5)smellIndex =sort(S)\tag{5} smellIndex=sort(S)(5)
其中conditionconditioncondition表示S(i)S(i)S(i)排在前一半的种群,rrr表示[0,1]区间内的随机值,bFbFbF表示在当前迭代过程中获得的最优适应度,wFwFwF,表示当前迭代过程中得到的最差适应度值,smellIndexsmellIndexsmellIndex表示适应度序列(最小值问题中为递增序列)
公式(1)表示的黏菌逼近食物行为,搜索黏菌个体位置 X 可以根据目前获得的XBX_BXB最佳位置进行更新,同时vbvbvb 、 vcvcvc 和 WWW参数的微调可以改变黏菌位置。黏菌搜索个体在三维空间中的位置变化,可通过randrandrand函数使个体形成任意角度的搜索向量,此概念同样可扩展至更高维空间.
算法流程:
Step1.初始化种群,设定相应参数。
Step2.计算适应度值,并且排序。
Step3.利用式(1),更新种群位置。
Step4.计算适应度值,并且更新全家最优位置,当前最优位置。
Step5.是否达到结束条件,如果达到则输出最优结果,否则重复执行步骤2-5.
2.实验结果
3.参考文献
[1] Li S, Chen H, Wang M, et al. Slime mould algorithm: A newmethod for stochastic optimization[J]. Future Generation Computer Systems. 2020, 111(1): 300-323.
[1]高铖铖,陈锡程,张瑞,宋秋月,易东,伍亚舟.三种新型智能算法在疫情预警模型中的应用——基于百度搜索指数的COVID-19疫情预警[J/OL].计算机工程与应用:1-11[2021-02-05].http://kns.cnki.net/kcms/detail/11.2127.tp.20210204.1030.002.html.
4.Matlab代码
改进算法matlab代码
名称 | 说明或者参考文献 |
---|---|
精英反向与二次插值改进的黏菌算法(ISMA) | [1]郭雨鑫,刘升,张磊,黄倩.精英反向与二次插值改进的黏菌算法[J/OL].计算机应用研究:1-7[2021-11-10].https://doi.org/10.19734/j.issn.1001-3695.2021.02.0175. |
混沌精英黏菌算法(CESMA) | [1]肖亚宁,孙雪,李三平,姚金言.基于混沌精英黏菌算法的无刷直流电机转速控制[J].科学技术与工程,2021,21(28):12130-12138. |
5.python代码
上述代码见个人资料介绍
智能优化算法:黏菌优化算法 - 附代码相关推荐
- 国家发明专利:基于改进型黏菌优化算法的业务资源分配方法
国家发明专利:基于改进型黏菌优化算法的业务资源分配方法 摘要 本发明公开了一种基于改进型黏菌优化算法的业务资源分配方法,其步骤包括:1将生产任务分成若干个环节,构建有向环状分配网络:2构建工厂参数矩阵 ...
- 精英反向学习与二次插值改进的黏菌优化算法ISMA(学习笔记_13)
1.理论分析 1.SMA 优点:较强的全局探索能力 缺点:后期迭代震荡作用较弱,易陷入局部最优:收缩机制不强,收敛速度较慢:初始种群质量低,探索和开发过程难以平衡. 2.精英反向学习机制 反向学习OB ...
- 黏菌优化算法SMA与算术优化算法AOA及其联合改进
0.简介 黏菌优化算法(Smile Mould Algorithm, SMA)和算术优化算法(Arithmetic Optimization Algorithm,AOA)是最近提出的新型元启发式优化算 ...
- 介绍一种新的群智能算法---黏菌算法
一种新的群智能算法-黏菌算法 介绍一种新的群智能算法-黏菌算法 近些年群智能算法由于其效率较高,使用方便的优点引起了广大科研者的关注与兴趣.最近看文献,温州大学的李世民(现在去复旦读研究生了)提出了一 ...
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于海鸥算法优化的Elman神经网络数据预测-附代码
基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
最新文章
- Windows 7运行命令大全
- Java基础之Comparable接口和Comparator接口的比较
- java关闭当前窗口打开另一窗口
- linux 下安装nginx
- pytorch神经网络因素预测_实战:使用PyTorch构建神经网络进行房价预测
- Fortinet SIEM 设备被曝存在硬编码 SSH 公钥
- python - Flask 基础(1)
- github note
- 专题九:Simulink系统仿真
- 大漠软件c语言教程,大漠万能脚本编辑器无需写代码,截图可以制作脚本附视频教程...
- 三菱FX3SA PLC连接威纶通MT6071iE触摸屏+计数器使用+循环执行N次+暂停+触摸屏软件安装包
- F检验临界值表(Frideman检验表)
- ShareX:一款你值得拥有的截图识别工具ShareX
- 动漫人物各种角度的画法大合集
- Chapter4.4:综合实例
- 前端javascript 实现导出excel 支持分页
- 不跟你谈“五险一金”的老板,都是在耍流氓
- BSides Noida CTF 2021 web题wowooofreepoint writeup(两道反序列化)
- 微软为Windows8平板所配备的键鼠套装
- ENVI无法打开landsat level2级产品的解决办法
热门文章
- java kettle job,kettle java job
- java文件中注释出现乱码解决办法
- (day 39 - 动态规划) 剑指 Offer 47. 礼物的最大价值
- mysql安装 linux rpm_linux MySQL5.7 rpm安装
- 服务器mysql_本地如何操作服务器的mysql,详细教程
- SQL:MySQL创建、删除事件
- SpringBoot:java.lang.NullPointerException
- LeetCode:每日一题(2020.4.10)
- 前端一键复制粘贴插件——clipboard.js的使用
- 解决磁盘IO紧张的一种方法