%% 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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于MATLAB编程,萤火虫算法优化BP神经网络的权值阈值,并用改进的bp神经网络进行正交实验回归预测,并和BP神经网络回归预测进行对比,证明改进的效果比较好,代码完整可以运行,包含数据和运行结果,代码有注释,不懂的可以留言,
资源推荐
资源详情
资源评论
收起资源包目录
FA-BP.zip (8个子文件)
init_ffa.m 377B
data.m 1KB
ffa_move.m 650B
main.m 3KB
maydata.mat 3KB
fun.m 713B
findlimits.m 251B
ffa_mincon.m 2KB
共 8 条
- 1
资源评论
神经网络机器学习智能算法画图绘图
- 粉丝: 2798
- 资源: 659
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功