单目标应用:蜣螂优化算法DBO优化RBF神经网络实现数据预测(提供MATLAB代码)
一、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(t−1)+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(t−1)∣
其中,θ\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∗×(1−R),Lb)Ub∗=min(X∗×(1+R),Ub)
其中,X∗X^{*}X∗表示当前最优位置,Lb∗L b^{*}Lb∗和Ub∗U b^{*}Ub∗分别表示产卵区的下限和上限,R=1−t/TmaxR=1−t/T_{max}R=1−t/Tmax,TmaxT_{max}Tmax表示最大迭代次数,LbLbLb和UbUbUb分别表示优化问题的下限和上限。
雌性蜣螂一旦确定了产卵区,就会选择在该区域育雏球产卵。每只雌性蜣螂在每次迭代中只产生一个卵,可以看出,产卵区的边界范围是动态变化的,主要由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}b1和b2b_{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×(1−R),Lb)Ubb=min(Xb×(1+R),Ub)
其中,XbX^{b}Xb表示全局最优位置,LbbL b^{b}Lbb和UbbU 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
相关文章:
单目标应用:蜣螂优化算法DBO优化RBF神经网络实现数据预测(提供MATLAB代码)
一、RBF神经网络 1988年,Broomhead和Lowc根据生物神经元具有局部响应这一特点,将RBF引入神经网络设计中,产生了RBF(Radical Basis Function)。1989年,Jackson论证了RBF神经网络对非线性连续函数的一致逼近性能。 RBF的基本思想是…...
MTK平台开发入门到精通(Thermal篇)热管理介绍
文章目录 一、热管理组成二、Linux Thermal Framework2.1、thermal_zone 节点2.2、cooling_device 节点三、Thermal zones沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍MTK平台的热管理机制,热管理机制是为了防止模组在高温下工作导致硬件损坏而存在的…...
最好的 QML 教程,让你的代码飞起来!
想必大家都知道,亮哥一直深耕于 CSDN,坚持了好很多年,目前为止,原创已经 500 多篇了,一路走来相当不易。当然了,中间有段时间比较忙,没怎么更新。就拿 QML 来说,最早的一篇文章还是 …...
笔记(六)——stack容器的基础理论知识
stack是堆栈容器,元素遵循先进后出的顺序。头文件:#include<stack>一、stack容器的对象构造方法stack采用模板类实现默认构造例如stack<T> vecT;#include<iostream> #include<stack> using namespace std; int main(…...
Web前端学习:四 - 练习
三九–四一:百度页面制作 1、左右居中: text-align: center; 2、去掉li默认的状态 list-style: none; li中有的有点,有的有序,此代码去掉默认状态 3、伪类:hovar 一般显示为color: #0f0e0f, 当鼠标接触时…...
odoo15 标题栏自定义
odoo15 标题栏自定义 如何显示为自定义呢 效果如下: 代码分析: export class WebClient extends Component {setup() {this.menuService = useService("menu");this.actionService = useService("action");this.title = useService("title&…...
视觉SLAM十四讲 ch3 (三维空间刚体运动)笔记
本讲目标 ●理解三维空间的刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角。 ●学握Eigen库的矩阵、几何模块使用方法。 旋转矩阵、变换矩阵 向量外积 向量外积(又称叉积或向量积)是一种重要的向量运算,它表示两个向量所形成的平行…...
问题解决:java.net.SocketTimeoutException: Read timed out
简单了解Sockets Sockets:两个计算机应用程序之间逻辑链接的一个端点,是应用程序用来通过网络发送和接收数据的逻辑接口 是IP地址和端口号的组合每个Socket都被分配了一个用于标识服务的特定端口号基于连接的服务使用基于tcp的流Sockets Java为客户端…...
前端代码优化方法
1.封装的css样式,增加样式复用性。如果页面加载10个css文件,每个文件1k,那么也要比只加载一个100k的css文件慢 2.减少css嵌套,最好不要嵌套三层以上 3.不要在ID选择器前面进行嵌套,ID本来就是唯一的而且权限值大,嵌套完…...
【批处理脚本】-1.16-文件内字符串查找增强命令findstr
"><--点击返回「批处理BAT从入门到精通」总目录--> 共9页精讲(列举了所有findstr的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中…...
三天吃透Redis面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
数据湖架构Hudi(三)Hudi核心概念
三、Apache Hudi核心概念 3.1 基本概念 Hudi 提供了Hudi 表的概念, 这些表支持CRUD操作, 可以利用现有的大数据集群比如HDFS做数据文件存储, 然后使用SparkSQL或Hive等分析引擎进行数据分析查询。 Hudi表的三个主要组件: 有序的…...
在数字优先的世界中打击知识产权盗窃
在当今数据驱动的世界中,全球许多组织所面临的期望和需求正在达到前所未有的水平。 为了迎接挑战,数据驱动的方法是必要的,需要有效的数字化转型来提高运营效率、简化流程并从遗留技术中获得更多收益。 但是,虽然数字优先方法可…...
机器学习算法原理——逻辑斯谛回归
文章目录逻辑斯谛回归二项逻辑斯谛回归模型极大似然估计多项逻辑斯谛回归模型总结归纳逻辑斯谛回归 写在前面:逻辑斯谛回归最初是数学家 Verhulst 用来研究人口增长是所发现的,是一个非常有趣的发现过程, b 站有更详细的背景及过程推导&…...
【华为OD机试 】最优资源分配/芯片资源占用(C++ Java JavaScript Python)
文章目录 题目描述输入描述输出描述备注用例题目解析C++JavaScriptJavaPython题目描述 某块业务芯片最小容量单位为1.25G,总容量为M*1.25G,对该芯片资源编号为1,2,…,M。该芯片支持3种不同的配置,分别为A、B、C。 配置A:占用容量为 1.25 * 1 = 1.25G配置B:占用容量为 …...
600 条最强 Linux 命令总结
1、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器…...
python自学之《21天学通Python》(15)——第18章 数据结构基础
数据结构是用来描述一种或多种数据元素之间的特定关系,算法是程序设计中对数据操作的描述,数据结构和算法组成了程序。对于简单的任务,只要使用编程语言提供的基本数据类型就足够了。而对于较复杂的任务,就需要使用比基本的数据类…...
从功能到自动化,熬夜3天整理出这一份2000字学习指南~
学习自动化这个想法,其实自己在心里已经琢磨了很久,就是一直没付诸实践,觉得现在手工测试已经能满足当前的工作需要,不想浪费时间去学习新的东西,有点时间还不如刷刷视频、看看小说等。 第一次有学习Selenium的冲动是…...
客户端攻击(溯源攻击,获取客户端信息)
目录 背景 为什么 示例 探索HTML应用程序 HTA攻击行为(Powershell代码) 背景 如果创建的文件扩展名为.hta而不是.html,Internet Explorer将自动将其解释为html应用程序,并提供使...
visual studio 2022 社区版 c# 环境搭建及安装使用【图文解析-小白版】
visual studio 2022 社区版 c# 环境搭建及安装使用【图文解析-小白版】visual studio 安装 C# 环境安装流程创建c#窗体应用程序visual studio 安装 C# 环境 首先,进入其官网下载对应的visual studio社区版本,官网链接: https://visualstudio.microsoft…...
21- 神经网络模型_超参数搜索 (TensorFlow系列) (深度学习)
知识要点 fetch_california_housing:加利福尼亚的房价数据,总计20640个样本,每个样本8个属性表示,以及房价作为target 超参数搜索的方式: 网格搜索, 随机搜索, 遗传算法搜索, 启发式搜索 超参数训练后用: gv.estimat…...
《NFL橄榄球》:芝加哥熊·橄榄1号位
芝加哥熊(英语:Chicago Bears)是一支职业美式橄榄球球队。位于伊利诺伊州的芝加哥。现时为全国橄榄球联盟的国家联盟北区的球队。他们曾经赢出九次美式橄榄球比赛的冠军,分别为八次旧制全国橄榄球联盟和一次超级碗冠军(…...
【ES】Elasticsearch核心基础概念:文档与索引
es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 RESTful APIs 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Documen…...
实时手势识别(C++与python都可实现)
一、前提配置: Windows,visual studio 2019,opencv,python10,opencv-python,numpy,tensorflow,mediapipe,math 1.安装python环境 这里我个人使用的安装python10&#…...
15个Spring扩展点,一般人知道的不超过5个!
Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Spring Boot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个…...
Elasticsearch:以 “Painless” 方式保护你的映射
Elasticsearch 是一个很棒的工具,可以从各种来源收集日志和指标。 它为我们提供了许多默认处理,以便提供最佳用户体验。 但是,在某些情况下,默认处理可能不是最佳的(尤其是在生产环境中); 因此&…...
js几种对象创建方式
适用于不确定对象内部数据方式一:var p new Object(); p.name TOM; p.age 12 p.setName function(name) {this.name name; }// 测试 p.setName(jack) console.log(p.name,p.age)方式二: 对象字面量模式套路:使用{}创建对象,同…...
阿里云服务器ECS适用于哪些应用场景?
云服务器ECS具有广泛的应用场景,既可以作为Web服务器或者应用服务器单独使用,又可以与其他阿里云服务集成提供丰富的解决方案。 云服务器ECS的典型应用场景包括但不限于本文描述,您可以在使用云服务器ECS的同时发现云计算带来的技术红利。 阿…...
Ajax学习笔记01
引入 翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。 AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 最大的优点…...
Jinja2----------过滤器的使用、控制语句
目录 1.过滤器的使用 1.过滤器和测试器 2.过滤器 templates/filter.html app.py 效果 3.自定义过滤器 app.py templates/filter.html 效果 2.控制语句 1.if app.py templates/control.html 2.for app.py templates/control.htm 1.过滤器的使用 1.过滤器和测…...
永安网站建设/百度移动点击排名软件
python 文件太多打不开文件夹,取样少量的文件, 建立同样的文件目录结构 python 文件太多打不开文件夹,取样少量的文件 - 无左无右 - 博客园 import os import shutil import randomroot_file "/media/algo/data_1/everyday/20230203-有…...
如何建设网站推广平台/搜索软件排行榜前十名
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时&am…...
党校网站建设栏目内容/怎么做一个网页
本篇文章的主要内容是用PHP实现插入排序,简单却经典的一道算法题,不知你是否记得了,快随小编一起回顾一下吧。插入排序基本思路:将数组分为两个区(已排序区和未排序区),假定数组的第一个元素处于已排序区, …...
江苏专业做网站的公司/数字营销网站
转自:http://blog.chinaunix.net/uid-9688646-id-3087625.html 一个由C/C编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量的值等。其操作方式类似于数据结构中…...
北京app制作开发/广东seo快速排名
看过openstack的安装脚本,但自己一直再用手动安装.在dashboard地方总是出现健全问题,检查keystone,nova总是定位不出来原因.不想拖得太久时间,也会采用脚本安装方式.这里收藏网友陈沙克的文章http://hi.baidu.com/chenshake/blog/item/4ed92d4e96768dd7d0c86a3e.html.供本人自己…...
外网专门做钙片的网站/百度一级代理商
html5获取手机GPS信息的示例代码function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition, showError); } else { alert("浏览器不支持地理定位。"); } } function showError(error) { switch (error.code) {…...