%% this code for regression based on fa-bp
%% initiate
clc
clear
close all
tic
load maydata.mat
input = bx(28::,1:4);
output = bx(:,5);
%% normlization
[inputn,inputps] = mapminmax(input',-1,1);
[outputn,outputps]=mapminmax(output',-1,1);
n = randperm(length(inputn));
m = 70;
Pn_train=inputn(:,n(1:m));
Tn_train=outputn(:,n(1:m));
Pn_test=inputn(:,n(m+1:end));
T_test=outputn(:,n(m+1:end));
% number of node
inputnum=size(Pn_train,1);
hiddennum=10;
outputnum=1;
% net=newff(Pn_train,Tn_train,hiddennum);
net=newff(minmax(Pn_train),[10,1],{'logsig','tansig'},'traingdx');%tansig
net.trainParam.epochs=200;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00001;
[net]=train(net,Pn_train,Tn_train);
an=sim(net,Pn_test);
test_simu=mapminmax('reverse',an,outputps);
figure
plot(test_simu,'b-o');
hold on;
plot(output(n(m+1:end)),'k-*');
legend('预测数据','期望数据');
title('优化前')
%%
d=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;%
Lb=zeros(1,d); % lower
Ub=ones(1,d); % upper
u0=Lb+(Ub-Lb).*rand(1,d);
para=[20 50 0.25 0.20 1];
% n=para(1); % number of fireflies
% MaxGeneration=para(2); %number of pseudo time steps
% ------------------------------------------------
% alpha=para(3); % Randomness 0--1 (highly random)
% betamn=para(4); % minimum value of beta
% gamma=para(5); % Absorption coefficient
[nbest,trace]=ffa_mincon(u0,Lb,Ub,para,inputnum,hiddennum,outputnum,net,inputn,outputn);
figure
plot(trace)
xlabel('迭代次数')
ylabel('适应度值')
title('萤火虫优化BP适应度曲线')
x=nbest;
%%
net=newff(minmax(Pn_train),[10,1],{'logsig','purelin'},'traingdx');%
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=B2;
net.trainParam.epochs=2000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.001;
[net,per2]=train(net,Pn_train,Tn_train);
% 反归一化
an=sim(net,Pn_test);
test_simu=mapminmax('reverse',an,outputps);
T_test=mapminmax('reverse',T_test,outputps);
error=test_simu-T_test;
E=mean(abs(error./T_test))
figure
plot(test_simu,'r-s')
hold on;
plot(T_test,'k-*')
title('萤火虫优化bp后的结果','fontsize',12)
legend('预测数据','期望数据')
xlabel('样本')
ylabel('y')
toc
萤火虫算法优化BP神经网络正交实验回归拟合,fa-bp神经网络正交实验回归拟合
版权申诉
180 浏览量
2023-07-26
13:15:28
上传
评论 1
收藏 7KB ZIP 举报
神经网络机器学习智能算法画图绘图
- 粉丝: 2433
- 资源: 597
最新资源
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
- python-leetcode面试题解之第165比较版本号-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈