RBF数据预测:斑马优化算法ZOA优化RBF实现数据预测

一、RBF神经网络

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

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

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

RBF神经网络学习算法需要优化的参数有3个:基函数的中心、方差以及隐含层到输出层的权值。

基于高斯核的RBF神经网络拓扑结构:

第一层输入层:由信号源节点构成,仅起到数据信息的传递作用,对输入信息不做任何变换

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

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

在这里插入图片描述

二、斑马优化算法ZOA

斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovská等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。
在这里插入图片描述

斑马因身上有起保护作用的斑纹而得名。没有任何动物比斑马的皮毛更与众不同。斑马周身的条纹和人类的指纹一样——没有任何两头完全相同。斑马为非洲特产。非洲东部、中部和南部产平原斑马,由腿至蹄具条纹或腿部无条纹。东非还产一种格式斑马,体格最大,耳长(约20厘米)而宽,全身条纹窄而密,因而又名细纹斑马。南非洲产山斑马,与其它两种斑马不同的是,它有一对象驴似的大长耳朵。除腹部外,全身密布较宽的黑条纹,雄体喉部有垂肉。斑马是草食性动物。除了草之外,灌木、树枝、树叶甚至树皮也是它们的食物。适应能力较强的消化系统,令斑马可以在低营养条件下生存,比其他草食性动物优胜。斑马对非洲疾病的抗病力比马强,但斑马始终未能被驯化成家畜,也没有能和马进行杂交。
在这里插入图片描述

斑马优化算法包含两个阶段:
阶段一:觅食行为
在第一阶段,根据斑马在寻找饲料时的行为模拟来更新种群成员。斑马的主要食物主要是草和莎草,但如果它们喜欢的食物稀缺,它们也可能吃芽、水果、树皮、根和叶子。根据植被的质量和可用性,斑马可能会花费60-80%的时间进食。在斑马中,有一种斑马叫做平原斑马,它是一种先驱食草动物,通过吞噬上层和营养较少的草的树冠,为其他需要更短、更有营养的草的物种提供了条件。在 ZOA 中,种群中最好的成员被认为是先锋斑马,并引导其他种群成员走向其在搜索空间中的位置。因此,更新斑马在觅食阶段的位置可以使用下式进行数学建模:
x i , j n e w , P 1 = x i , j + r ⋅ ( P Z j − I ⋅ x i , j ) , X i = { X i n e w , P 1 , F i n e w , P 1 < F i X i ,  else  \begin{array}{l} x_{i, j}^{n e w, P 1}=x_{i, j}+r \cdot\left(P Z_{j}-I \cdot x_{i, j}\right), \\ X_{i}=\left\{\begin{array}{cl} X_{i}^{n e w, P 1}, & F_{i}^{n e w, P 1}<F_{i} \\ X_{i}, & \text { else } \end{array}\right. \end{array} xi,jnew,P1=xi,j+r(PZjIxi,j),Xi={ Xinew,P1,Xi,Finew,P1<Fi else 
阶段二:针对掠食者的防御行为
在第二阶段,模拟斑马对捕食者攻击的防御策略,以更新ZOA种群成员在搜索空间中的位置。斑马的主要捕食者是狮子;然而,它们受到猎豹、豹子、野狗、褐鬣狗和斑鬣狗的威胁。鳄鱼是斑马接近水时的另一种捕食者。斑马的防御策略因捕食者而异。斑马对狮子攻击的防御策略是以锯齿形模式和随机侧身转弯运动逃跑。斑马对鬣狗和狗等小型捕食者的攻击更具攻击性,这些捕食者通过聚集来迷惑和吓唬猎人。在 ZOA 设计中,假设以下两个条件之一以相同的概率发生:

(1)狮子攻击斑马,因此斑马选择了逃跑策略;

(2)其他捕食者攻击斑马,斑马会选择进攻策略。

在策略(1)中,当斑马受到狮子的攻击时,斑马在它们所在的情况附近逃离狮子的攻击。因此,在数学上,可以使用模式对这种策略进行建模S1 在下式第一项中。在第策略(2)中,当其他捕食者攻击其中一匹斑马时,群中的其他斑马会向被攻击的斑马移动,并试图通过创建防御结构来吓唬和迷惑捕食者。斑马的这种策略是使用模式进行数学建模的S2 在下式第一项中。在更新斑马的位置时,如果斑马的新位置对目标函数具有更好的值,则该斑马的新位置将被接受。此更新条件使用 下式第一二项建模。
x i , j n e w , P 2 = { S 1 : x i , j + R ⋅ ( 2 r − 1 ) ⋅ ( 1 − t T ) ⋅ x i , j , P s ≤ 0.5 ; S 2 : x i , j + r ⋅ ( A Z j − I ⋅ x i , j ) ,  else  , X i = { X i new  , P 2 , F i n e w , P 2 X i ,  else  , \begin{array}{l} x_{i, j}^{n e w, P 2} =\left\{\begin{array}{cc} S_{1}: x_{i, j}+R \cdot(2 r-1) \cdot\left(1-\frac{t}{T}\right) \cdot x_{i, j}, & P_{s} \leq 0.5 ; \\ S_{2}: x_{i, j}+r \cdot\left(A Z_{j}-I \cdot x_{i, j}\right), & \text { else }, \end{array}\right. \\ X_{i}=\left\{\begin{array}{cc} X_{i}^{\text {new }, P 2}, & F_{i}^{n e w}, P 2 \\ X_{i}, & \text { else }, \end{array}\right. \end{array} xi,jnew,P2={ S1:xi,j+R(2r1)(1Tt)xi,j,S2:xi,j+r(AZjIxi,j),Ps0.5; else ,Xi={ Xinew ,P2,Xi,Finew,P2 else ,
斑马优化算法的算法描述如下:
在这里插入图片描述
斑马优化算法的算法流程如下:
在这里插入图片描述

参考文献:
E Trojovská, M Dehghani, P Trojovský. Zebra Optimization Algorithm: A New Bio-Inspired Optimization Algorithm for Solving Optimization Algorithm[J]. IEEE Access, 2022,10:49445-49473.

三、斑马优化算法ZOA优化RBF神经网络

斑马优化算法ZOA中每个个体由基函数的中心、方差以及隐含层到输出层的权值构成,目标函数为样本真实值与预测值的均方误差(MSE)。训练数据集为5个输入,2个输出,共200个样例,前150个作为训练集,后50个作为测试。构建结构为5-8-2的RBF神经网络,其中隐藏层神经元数目可以修改。

部分样例如下:(前5列为输入,后2列为输出)

0.319092913309319	0.481187352372713	0.806946793185885	0.446710413339954	0.135069357093368	0.814916913929440	2.18900682930124
0.805490885620493	0.511329091919603	0.665885374485020	0.124243309808503	0.0622595403048927	0.826231296361042	2.16920820213851
0.643511806008414	0.398174756770190	0.241493045846128	0.502882183320845	0.459275006919147	0.780994026463518	2.24533679886472
0.901271248588548	0.549231662834719	0.703023694829230	0.908927249219787	0.739639418839036	-0.613512261607837	3.80209327431132
0.681505947565831	0.266233154577239	0.598418592249671	0.317167144217078	0.609254396829780	0.620212380716577	2.47257923543960
0.816569860102527	0.683944831227131	0.521367561118003	0.870221958193913	0.600511717735747	-0.343858864178209	3.49261592837732
0.772509673236830	0.0274391471182466	0.687829827801033	0.452380982873335	0.981559485726264	0.218106206255082	2.92171911675571
0.160185200114371	0.0795172296614494	0.620546519003247	0.999332632912895	0.250782059014371	0.857931060559171	2.11036364070633
0.0402959156622391	0.509270610965360	0.852477631133460	0.452687896323640	0.724261360734026	0.533386619417532	2.57899341481873
0.735334088804208	0.710668590958176	0.974963589747738	0.574329891684942	0.436600601180894	-0.286243622259437	3.43189676237596
0.466467678049791	0.166288513494538	0.488391088956297	0.634290143142006	0.926667090747635	0.443489394679368	2.68210451439027
0.464121551505859	0.455196914999633	0.553823865918665	0.609545414679817	0.563690666139306	0.475220165169104	2.64637841324328
0.601420215398734	0.369480057052477	0.763314435959030	0.425637578889505	0.745658842046165	0.233894646967457	2.90551112934591
0.620754102929979	0.888757283156443	0.690781994520698	0.195819380573510	0.253404766159063	0.472455825641103	2.64951752733969
0.0905835553696127	0.774495264922404	0.667743447213650	0.343905618276708	0.00161447207556698	0.953079306094570	1.87834235785794
0.936158467746128	0.625113598671965	0.883561786386136	0.984244186352477	0.673258834569808	-0.819618166523854	4.10233687372651
0.648833647439350	0.328612115417025	0.174165206993631	0.850426232098539	0.114871165935286	0.854550259941185	2.11690836788383
0.648659397116181	0.625285723910437	0.955318794092425	0.920544300669473	0.504611207492369	-0.490642340899827	3.65441942328089
0.896170593348607	0.911621786781762	0.569410717046772	0.150546106498604	0.806143037966217	-0.191116598839852	3.33389224164196
0.00630474459277053	0.892428774292225	0.466825651982977	0.544818690368394	0.491436059320132	0.674124496425226	2.40181392055650

部分代码

close all
clear
clc
full code link: https://mbd.pub/o/bread/mbd-ZJebm5tt
完整代码添加博主微信:djpcNLP123
global inputnum hiddennum outputnum TrainNum 
inputnum=5;%神经网络输入层神经元个数(输入样本维度)
hiddennum=8;%神经网络隐藏层神经元个数(可以自己修改) 
outputnum=2;%神经网络输出层神经元个数(输出样本维度)
TrainNum=150;%训练集数目 (数据集data中前TrainNum个为训练集,剩余数据为测试集)
%% ZOA 优化RBF神经网络,目标函数是均方误差MSE
SearchAgents_no=100; %  种群大小(可以修改)
Function_name='F1'; 
Max_iteration=500; % 最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
[fMin,bestX,curve]=ZOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);  %算法优化RBF神经网络的参数
save bestX bestX %保留算法优化RBF神经网络得到的最优参数
save curve curve
figure
semilogy(curve,'Color','k','linewidth',2)
xlabel('迭代次数');
ylabel('均方差');
grid on
box on
legend('ZOA')
Predata;%预测
%%
display(['The best solution obtained is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton  is : ', num2str(fMin)]);%fMin越小说明算法优化RBF神经网络效果越好

部分结果
在这里插入图片描述

训练集结果:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

测试集结果:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、参考代码

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

猜你喜欢

转载自blog.csdn.net/weixin_46204734/article/details/130238078
今日推荐