模型介绍见这里。
%% 清空环境 clc clear %读取数据 load data z=data'; n=length(z); for i=1:6; sample(i,:)=z(i:i+n-6); end %训练数据和预测数据 input_train=sample(1:5,1:1400); output_train=sample(6,1:1400); input_test=sample(1:5,1401:1483); output_test=sample(6,1401:1483); %节点个数 inputnum=5; hiddennum=3; outputnum=1; %选连样本输入输出数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %构建网络 net=newff(inputn,outputn,hiddennum); d=22; Lb=zeros(1,d); % 萤火虫活动范围的下限 Ub=2*ones(1,d); % 萤火虫活动范围的上限 u0=Lb+(Ub-Lb).*rand(1,d);%u0相当于cs的nest(i,:) para=[20 20 0.25 0.20 1]; [nbest]=ffa_mincon(u0,Lb,Ub,para,inputnum,hiddennum,outputnum,net,inputn,outputn); x=nbest; %网络进化参数 net.trainParam.epochs=100; net.trainParam.lr=0.1; %net.trainParam.goal=0.00001; %网络训练 [net,per2]=train(net,inputn,outputn); %% BP网络预测 %数据归一化 inputn_test=mapminmax('apply',input_test,inputps); an=sim(net,inputn_test); test_simu=mapminmax('reverse',an,outputps); error=test_simu-output_test; E=mean(abs(error./output_test)) plot(output_test,'b*') hold on; plot(test_simu,'-o') title('结果','fontsize',12) legend('实际值','预测值') xlabel('时间') ylabel('比较')
[1]郭晨霞,刘佑祺,杨瑞峰.基于萤火虫算法优化BP神经网络的光强度补偿方法[J].电子测量技术,2021,44(13):6-10.