一、麻雀搜索算法SSA
二、RBF神经网络
1988年,Broomhead和Lowc根据生物神经元具有局部响应的特点RBF神经网络设计的引入产生了RBF(Radical Basis Function)。1989年,Jackson论证了RBF神经网络一致接近非线性连续函数的性能。
RBF基本思想是:用RBF作为隐藏单元的基础,它构成了隐藏层空间。隐含层改变输入矢量,将低维模式输入数据转换为高维空间,使低维空间中的线性问题在高维空间中线性分离。
RBF神经网络结构简单,训练简单,学习收敛快,能接近任何非线性函数,已广泛应用于时间序列分析、模式识别、非线性控制和图形处理。
RBF有三个参数需要优化:、以及。 以高斯核为基础RBF神经网络拓扑结构: 第一层输入层:由信号源节点构成,仅起到数据信息的传递作用,对输入信息不做任何变换
第二层隐含层:节点数取决于需要。隐含层神经元核函数(功能函数)是高斯函数,用于空间映射输入信息的转换。
第三层输出层响应输入模式。输出层神经元的功能函数为线性函数,线性加权后输出隐含层神经元输出的信息,作为整个神经网络的输出结果。
三、SSA优化RBF神经网络
麻雀搜索算法中的每个个体、以及目标函数是样本真实值和预测值之间的平均误差(MSE)。训练数据集有5个输入,2个输出,共100个样本。结构为5-8-2RBF可以修改隐藏层神经元的数量。 例如:(前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;%训练集数目
%% 麻雀搜索算法SSA优化RBF神经网络,目标函数是均方误差MSE
SearchAgents_no=50; % 种群大小(可以修改)
Function_name='F1';
Max_iteration=50000; % 最大迭代次数(可以修改)
[lb,ub,dim,fobj]=fun_info(Function_name);% 在fun_info.m中可以查看上下限及目标函数
[fMin,bestX,SSA_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %SSA优化RBF神经网络的参数 bestX是最优参数
save bestX bestX %保留SSA优化RBF神经网络得到的最优参数
%% 画出SSA优化RBF神经网络的均方误差随迭代次数的图
figure
semilogy(SSA_curve,'Color','g')
title('Objective space')
xlabel('Iteration');
ylabel('MSE');
grid on
box on
legend('SSA')
Predata;%预测
%%
display(['The best solution obtained by SSA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by SSA is : ', num2str(fMin)]);%fMin越小说明SSA优化BP神经网络效果越好
四、预测结果
在第一个目标上的真实值与预测值: 在第二个目标上的真实值与预测值:
两个目标的真实值与预测值的误差MAE: