单目标应用:蜣螂优化算法DBO优化RBF神经网络实现数据预测(提供MATLAB代码)

news/2024/5/6 19:17:55/文章来源:https://blog.csdn.net/weixin_46204734/article/details/129277742

一、RBF神经网络

1988年,Broomhead和Lowc根据生物神经元具有局部响应这一特点,将RBF引入神经网络设计中,产生了RBF(Radical Basis Function)。1989年,Jackson论证了RBF神经网络对非线性连续函数的一致逼近性能。

RBF的基本思想是:用RBF作为隐单元的“基”构成隐藏层空间,隐含层对输入矢量进行变换,将低维的模式输入数据变换到高维空间内,使得在低维空间内的线性不可分的问题在高维空间内线性可分。

RBF神经网络结构简单、训练简洁而且学习收敛速度快,能够逼近任意非线性函数,因此已被广泛应用于时间序列分析、模式识别、非线性控制和图形处理等领域。

RBF神经网络学习算法需要优化的参数有3个:基函数的中心方差以及隐含层到输出层的权值
基于高斯核的RBF神经网络拓扑结构:
第一层输入层:由信号源节点构成,仅起到数据信息的传递作用,对输入信息不做任何变换

第二层隐含层:节点数视需要而定。隐含层神经元核函数(作用函数)是高斯函数,对输入信息进行空间映射的变换。

第三层输出层,对输入模式做出响应。输出层神经元的作用函数为线性函数,对隐含层神经元输出的信息进行线性加权后输出,作为整个神经网络的输出结果。

在这里插入图片描述

二、蜣螂优化算法

蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。
在这里插入图片描述

2.1蜣螂滚球

(1)当蜣螂前行无障碍时,蜣螂在滚粪球过程中会利用太阳进行导航,下图中红色箭头表示滚动方向
在这里插入图片描述
本文假设光源的强度会影响蜣螂的位置,蜣螂在滚粪球过程中位置更新如下:

xi(t+1)=xi(t)+α×k×xi(t−1)+b×Δx,Δx=∣xi(t)−Xw∣\begin{aligned} x_{i}(t+1) &=x_{i}(t)+\alpha \times k \times x_{i}(t-1)+b \times \Delta x, \\ \Delta x &=\left|x_{i}(t)-X^{w}\right| \end{aligned}xi(t+1)Δx=xi(t)+α×k×xi(t1)+b×Δx,=xi(t)Xw
其中,ttt表示当前迭代次数,xi(t)x_{i}(t)xi(t)表示第iii次蜣螂在第t次迭代中的位置信息,k∈(0,0.2]k∈(0,0.2]k(0,0.2]为扰动系数,bbb(0,1)(0,1)(0,1) 之间的随机数,α\alphaα取 -1 或 1 ,XwX^{w}Xw表示全局最差位置,Δx\Delta xΔx用于模拟光的强度变化。
其中,α\alphaα的取值采用算法1:
在这里插入图片描述

(2)当蜣螂遇到障碍物无法前进时,它需要通过跳舞来重新调整自己,以获得新的路线。本文使用切线函数来模仿跳舞行为,以此获得新的滚动方向,滚动方向仅考虑为[0,π][0,π][0,π]之间。
在这里插入图片描述
蜣螂一旦成功确定新的方向,它应该继续向后滚动球。蜣螂的位置更新如下:
xi(t+1)=xi(t)+tan⁡(θ)∣xi(t)−xi(t−1)∣x_{i}(t+1)=x_{i}(t)+\tan (\theta)\left|x_{i}(t)-x_{i}(t-1)\right|xi(t+1)=xi(t)+tan(θ)xi(t)xi(t1)
其中,θ\thetaθ为偏转角,其取值为[0,π][0,π][0,π],采用算法2:
在这里插入图片描述

2.2蜣螂繁殖

在这里插入图片描述

在自然界中,雌性蜣螂将粪球被滚到适合产卵的安全地方并将其隐藏起来,以此为后代提供一个安全的环境。受此启发,因而提出了一种边界选择策略以此模拟雌性蜣螂产卵的区域:
Lb∗=max⁡(X∗×(1−R),Lb)Ub∗=min⁡(X∗×(1+R),Ub)\begin{array}{l} L b^{*}=\max \left(X^{*} \times(1-R), L b\right) \\ U b^{*}=\min \left(X^{*} \times(1+R), U b\right) \end{array}Lb=max(X×(1R),Lb)Ub=min(X×(1+R),Ub)
其中,X∗X^{*}X表示当前最优位置,Lb∗L b^{*}LbUb∗U b^{*}Ub分别表示产卵区的下限和上限,R=1−t/TmaxR=1−t/T_{max}R=1t/TmaxTmaxT_{max}Tmax表示最大迭代次数,LbLbLbUbUbUb分别表示优化问题的下限和上限。
雌性蜣螂一旦确定了产卵区,就会选择在该区域育雏球产卵。每只雌性蜣螂在每次迭代中只产生一个卵,可以看出,产卵区的边界范围是动态变化的,主要由R值决定。因此,育雏球的位置在迭代过程中也是动态的,其定义如下:
Bi(t+1)=X∗+b1×(Bi(t)−Lb∗)+b2×(Bi(t)−Ub∗)B_{i}(t+1)=X^{*}+b_{1} \times\left(B_{i}(t)-L b^{*}\right)+b_{2} \times\left(B_{i}(t)-U b^{*}\right)Bi(t+1)=X+b1×(Bi(t)Lb)+b2×(Bi(t)Ub)
其中,Bi(t)B_{i}(t)Bi(t)表示第t次迭代中第 i个育雏球的位置信息,b1b_{1}b1b2b_{2}b2均为1×D的随机向量,D表示优化问题的维度。
产卵区的选择如算法3所示:
在这里插入图片描述

2.3蜣螂觅食

在这里插入图片描述
雌性蜣螂所产的卵会逐渐长大,一些已经成熟的小蜣螂会从地下出来寻找食物,小蜣螂的最佳觅食区建模如下:
Lbb=max⁡(Xb×(1−R),Lb)Ubb=min⁡(Xb×(1+R),Ub)\begin{array}{l} L b^{b}=\max \left(X^{b} \times(1-R), L b\right) \\ U b^{b}=\min \left(X^{b} \times(1+R), U b\right) \end{array}Lbb=max(Xb×(1R),Lb)Ubb=min(Xb×(1+R),Ub)
其中,XbX^{b}Xb表示全局最优位置,LbbL b^{b}LbbUbbU b^{b}Ubb分别表示最佳觅食区的下限和上限。
在这里插入图片描述

小蜣螂的位置更新如下:
xi(t+1)=xi(t)+C1×(xi(t)−Lbb)+C2×(xi(t)−Ubb)x_{i}(t+1)=x_{i}(t)+C_{1} \times\left(x_{i}(t)-L b^{b}\right)+C_{2} \times\left(x_{i}(t)-U b^{b}\right)xi(t+1)=xi(t)+C1×(xi(t)Lbb)+C2×(xi(t)Ubb)
其中,xi(t)x_{i}(t)xi(t)表示第t次迭代中第i只小蜣螂在的位置,C1C_{1}C1是服从正态分布的随机数,C2C_{2}C2为(0,1)的随机向量。

2.4蜣螂偷窃

在这里插入图片描述

另一方面,一些蜣螂从其他蜣螂那里偷粪球,盗贼蜣螂的位置更新如下:

xi(t+1)=Xb+S×g×(∣xi(t)−X∗∣+∣xi(t)−Xb∣)x_{i}(t+1)=X^{b}+S \times g \times\left(\left|x_{i}(t)-X^{*}\right|+\left|x_{i}(t)-X^{b}\right|\right)xi(t+1)=Xb+S×g×(xi(t)X+xi(t)Xb)
其中,xi(t)x_{i}(t)xi(t)表示在第t次迭代中第i个盗贼蜣螂的位置,g为服从正态分布的1×D随机向量,S为常数。

2.5DBO描述

滚球蜣螂、繁殖蜣螂、觅食蜣螂和偷窃蜣螂的比例分布如下:
在这里插入图片描述
DBO算法描述如下:
在这里插入图片描述
参考文献:Xue, J., Shen, B. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization. J Supercomput (2022). https://doi.org/10.1007/s11227-022-04959-6

三、蜣螂优化算法DBO优化RBF神经网络

蜣螂优化算法DBO中每个个体由基函数的中心方差以及隐含层到输出层的权值构成,目标函数为样本真实值与预测值的均方误差(MSE)。训练数据集为5个输入,2个输出,共100个样例。构建结构为5-8-2的RBF神经网络,其中隐藏层神经元数目可以修改。
部分样例如下:(前5列为输入,后2列为输出)

0.231275469013250	0.819206722779840	0.845110449594525	0.184086789965809	0.785385668685064	0.273016775596421	-0.525289339305860
0.361541209457843	0.841205431876524	0.980374803793902	0.0859900940578461	0.688836587017380	0.182614021784274	-0.359086617897261
0.922688287491720	0.699812576279511	0.899786340304967	0.432450528880324	0.569301647632306	-0.373191545730696	0.692460134226641
0.299227234437514	0.0816091519448512	0.740899022326946	0.650897340325028	0.209324055396846	0.916657628162626	-0.732727263933928
0.0248021181709812	0.374796074923082	0.570315333727928	0.253772503915307	0.338256777364241	0.999960807859380	0.0177061120929101
0.646658961616975	0.0423161385647169	0.106104935388092	0.212179497735250	0.830057126375891	0.964693196398184	-0.508154508099431
0.808360466940075	0.399056561751923	0.821081939935231	0.663473595114130	0.521205398088936	-0.0715241846059059	0.142682003141748
0.996036904340983	0.177590010319259	0.498978760642987	0.535374820095270	0.273972088775787	0.612832469899295	-0.968536197268834
0.254095375608645	0.123643543287013	0.375547648543273	0.342271860252468	0.636914688527762	0.986958752561837	-0.317748121586226
0.489511345316060	0.858764063567839	0.672506934004802	0.416889604050640	0.875802154076831	-0.171036374456662	0.337032209465389
0.185278746013332	0.114882179349929	0.0249815105218890	0.540278515239829	0.336848910688767	0.932859186232019	0.672108668047313
0.909681828009080	0.102232107111248	0.656246980781499	0.654864043388290	0.956710552046541	-0.137703903094583	0.272784117161094
0.408456363651882	0.938823058283146	0.685665490425611	0.930210090681512	0.623586971563434	-0.430592654242920	0.777259681757975
0.269585875402607	0.271008875302077	0.507953142985896	0.229313997464057	0.344293696020832	0.998681403071495	-0.102537983893846
0.643025332315473	0.468703980190812	0.459677634270965	0.401146013642205	0.967774844146207	0.199908807799238	-0.391747100006622
0.595097567588796	0.309882133224413	0.0578735749039524	0.896085328764512	0.507751211966913	0.699646656853784	-0.999779704342388
0.832789921454823	0.502400345281531	0.225858041623964	0.657301469048430	0.245308474084980	0.627185531149164	-0.976991854507143

部分代码如下:(完整代码可以私聊博主或添加博主微信

close all
clear
clc
global inputnum hiddennum outputnum TrainNum 
inputnum=5;%神经网络输入层神经元个数(输入样本维度)
hiddennum=8;%神经网络隐藏层神经元个数(可以自己修改) 
outputnum=2;%神经网络输出层神经元个数(输出样本维度)
TrainNum=100;%训练集数目 
%% DBO优化RBF神经网络,目标函数是均方误差MSE
SearchAgents_no=50; %  种群大小(可以修改)
Function_name='F1'; 
Max_iteration=500000; % 最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
[fMin,bestX,curve]=DBO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  %DBO优化RBF神经网络的参数
save bestX bestX %保留DBO优化RBF神经网络得到的最优参数
figure
semilogy(curve,'Color','g')
title('Objective space')
xlabel('Iteration');
ylabel('MSE');
grid on
box on
legend('DBO')
Predata;%预测
%%
display(['The best solution obtained by FA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by FA is : ', num2str(fMin)]);%fMin越小说明DBO优化RBF神经网络效果越好

四、预测结果

在第一个目标上的真实值与预测值:
在这里插入图片描述

在第二个目标上的真实值与预测值:
在这里插入图片描述

两个目标的真实值与预测值的误差MAE:
在这里插入图片描述

五、参考代码

完整代码添加博客下方博主微信:djpcNLP123

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_75829.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis二级缓存

目录 二级缓存的定义 二级缓存扩展性需求 二级缓存的结构 SynchronizedCache线程同步缓存区 LoggingCache统计命中率以及打印日志 ScheduledCache过期清理缓存区 LruCache(最近最少使用)防溢出缓存区 FifoCache(先进先出)防溢出缓存区 二级缓存的使用(命中条件) 二级…

使用netlify实现自动化部署前端项目(无服务器版本)

介绍 本文以 github仓库进行介绍关联netlify的无服务前端自动化部署。用途:个人网站设计、小游戏等当然这只是让你入门~具体细节等待你自己去探索 实现 打开官方网站 如果没有注册过的账户,你需要使用 github 去进行登录。注册完成后会自动给你提示填…

866363-70-4,N3-C5-NHS ester,叠氮-C5-NHS 主要物理性质分享

●外观以及性质:Azido-Aca-NHS淡黄色或无色油状,叠氮化物可以与炔烃、DBCO和BCN进行铜催化的点击化学反应。NHS酯可以与胺基反应,形成稳定的酰胺键。●中文名:叠氮-C5-NHS ester,6-叠氮己酸活性酯●英文名:…

阶乘后的零[挖掘规律+动态规划]

挖掘规律 动态规划前言一、阶乘后的零二、挖掘规律1、动态规划2、直接寻找5的个数总结参考资料前言 想要计算阶乘后的0有多少,可以直接算出阶乘值,再不断对10取余。但是如果n比较大,这种方法是根本行不通的,只能挖掘规律。 一、…

数据挖掘1/13

文章目录教材,考核,软件现在数据是ZB时代数据挖掘公司3类数据挖掘数据挖掘技术(5个)分类:找因变量y无监督聚类数据分析 数据挖掘教材,考核,软件 教材 考核 软件:jupyter 和spss mod…

十四、MyBatis的逆向工程

逆向工程: 根据数据库表逆向生成Java的pojo类,SqlMapper.xml文件,以及Mapper接口类等。 借助别人写好的逆向工程插件。 使用这个插件的话,需要给这个插件配置哪些信息? pojo类名、包名以及生成位置。SqlMapper.xml文…

EPICS motor模块

一、概要 1) 在EPICS motor模块中的是什么并且它为了什么? 2) 支持的电机控制器和模型 3)电机记录特性 4)配置示例 5)反馈 6) 重试 7) 回程差矫正 8)发行 二、术…

webrtc拥塞控制算法对比-GCC vs BBR vs PCC

1.前言现有集成在webrtc中的拥塞控制算法有三种, 分别是: 谷歌自研发的gcc, 谷歌自研发的BBR算法, 斯坦福大学提出的基于机器学习凸优化的PCC算法. 本文将探讨一下三个算法的区别和优缺点。2.背景迈聆会议从17年到现在, 一直使用的是基于谷歌的gcc算法自研的Omcc算法(optimizat…

[软件测试]如何使用Eclipse导入项目并打开

🧑‍🎓个人介绍:大二软件生,现学JAVA、Linux、MySQL、算法 💻博客主页:渡过晚枫渡过晚枫 👓系列专栏:[编程神域 C语言],[java/初学者],[蓝桥杯] &#x1f4d…

数据结构与算法基础-学习-14-线性表之串

一、串的定义由0-n个字符组成的有限序列。(n>0)二、串的相关术语1、子串串中任意个连续字符组成的子序列成为该串的子串。2、主串包含子串的串成为主串。3、字符位置字符在序列中的序号为该字符在串中的位置。4、子串位置子串第一个字符在主串中的位置…

[Java·算法·中等]LeetCode17. 电话号码的字母组合

每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。…

CSS简单使用

凡是html中的标签都可以进行选中&#xff0c;p代表标签中所有的p标签都遵从以上格式。<!DOCTYPE html> <html lang"en"> <head><style type"text/css">p{background-color: red;font-size: 40px;}.p1{font-family:楷体;}</styl…

爆品分析第4期 | 从周销12件到3700+件,这款收腰裤热度和口碑都爆了!

衣食住行&#xff0c;衣是排在第一位的&#xff0c;作为复购率最高的类目之一&#xff0c;服饰一直是TikTok上电商选品的风向标&#xff0c;是衡量电商发展情况的重要参考指标。随着疫情的结束和经济的日渐好转&#xff0c;消费者对服装类的需求上升。除了时装、T恤等日常消费的…

关于PPP-RTK技术优势的一些思考与总结

文章目录一、前言二、SSR修正与PPP三、RTK与PPP-RTK的对比四、PPP-RTK的技术优势五、总结参考文章欢迎关注个人公众号&#xff1a;导航员学习札记 一、前言 感觉近几年PPP和PPP-RTK一直都是GNSS比较火的方向&#xff0c;也有越来越多的国内外厂商提供相关服务&#xff0c;播发…

HTTP2.0协议学习

背景 在优化页面加载速度的时候&#xff0c;发现了HTTP1.1并发数的限制&#xff0c;为了解除这个限制&#xff0c;准备把网站协议升级到HTTP2.0. 之前在学习《趣谈网络协议》的时候&#xff0c;有学习过HTTP2.0协议&#xff0c;但是没有输出成文档&#xff0c;因此借这个机会&…

DIY-BETAFPV和DIY(ESP-01F+E19-900M20S2模块)915MHz信号测试对比

DIY-BETAFPV和DIY&#xff08;ESP-01FE19-900M20S2模块&#xff09;915MHz信号测试对比1. 前提条件2. 实测效果2.1 起点附近&#xff08;距离3m左右&#xff09;2.2 30m米距离&#xff08;树梢&#xff09;2.3 80米距离3. 整体比较4. PCBA分析4.1 DIY-BETAFPV4.2 DIY&#xff0…

阿里云服务器ECS的功能特性有哪些?

本文介绍云服务器ECS的功能特性&#xff0c;帮助您更好地了解和使用云服务器ECS。 1、实例 实例是云上的虚拟计算服务器&#xff0c;内含vCPU、内存、操作系统、网络、磁盘等基础组件。您可以使用阿里云提供的控制台、API等管理工具创建和管理ECS实例&#xff0c;像使用本地服…

Java-封装、继承、多态

封装 访问控制权限又成为“封装”&#xff0c;是面向对象三大特征中的一种。核心是&#xff0c;只对需要的类可见。 继承 继承是所有OOP&#xff08;Object Oriented Programming&#xff09;语言和Java语言都不可或缺的一部分。 只要创建一个类&#xff0c;就隐式继承自Obje…

openpnp - configure - 矫正里程碑

文章目录openpnp - configure - 矫正里程碑概述备注ENDopenpnp - configure - 矫正里程碑 概述 进入矫正里程碑了 查找问题 现在第一个问题是X轴的齿隙矫正 根据提示, 将顶部相机移动到主基准点上, 选择容差(就选用默认的0.025), 开始矫正. 正好开机后, 使能了视觉原点归零. …

Puppeteer项目结构梳理

最近接触了一个个人感觉很奈斯的项目&#xff0c;故记录思路如下&#xff1a; puppeteer项目梳理&#xff1a; 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey…