⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tanersimu9.m

📁 一个原始的BP网络的M程序
💻 M
字号:
clear all;
clc;
nntwarn off;

%clg;
%调入训练数据
data;

[l,s]=size(data);
%界定量程范围
%pmin=[50000 500 30  0];
%pmax=[70000 800 69  0.6];
pmin=[17 120 69 1.9 130 9.2];			
pmax=[50  157 138 15 167 32.1];
% pmin=[58000 600 55 2200 0];
% pmax=[69000 800 60 2300 0.5];  
%归一化数据
max1=1;
min1=-1;

for i=1:s-1
   for j=1:l
      unit_data(j,i)=(max1-min1)*(data(j,i)-pmin(i))/(pmax(i)-pmin(i))+min1;
   end
end

max=0.9;
min=0.1;
for j=1:l
      unit_data(j,s)=(max-min)*(data(j,s)-pmin(s))/(pmax(s)-pmin(s))+min;
end

%选取数据 
inputdata=unit_data(:,1:s-1)';
targetdata=unit_data(:,s)';

P=inputdata;
T=targetdata; 
%确定初始权值
S1=6;



[w1,b1,w2,b2]=initff([-1 1;-1 1;-1 1; -1 1; -1 1],S1,'logsig',T,'logsig');

%[w1,b1,w2,b2]=initff([-1 1;-1 1;-1 1; -1 1; -1 1],S1,'logsig',T,'logsig');
A=simuff(P,w1,b1,'logsig',w2,b2,'logsig');
AO=(A-min)*(pmax(s)-pmin(s))/(max-min)+pmin(s);%最初结果反归一化
plot(1:l,AO,'b-',1:l,data(:,s)','r:');grid;
title('软测量模型与实际值对比','fonts',10);
legend('软测量值','测量值');
%save init w1,w2,b1,b2;

pause;
clf;
%k=pickic;
%if k==2
%  load para;
%end

%训练BP参数
innerv=round(l/10*8);
%innerv=120;
traininpputdata=inputdata(:,1:innerv);
traintargetdata=targetdata(:,1:innerv);

df=100;    %学习过程显示频率
me=40000;  %最大训练步数
eg=0.001; 
lr=0.0005;%误差指标
%学习率

tp=[df me eg lr];

[w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,'logsig',w2,b2,'logsig',traininpputdata,traintargetdata,tp);

hold off;
A=simuff(traininpputdata,w1,b1,'logsig',w2,b2,'logsig');
AO=(A-min)*(pmax(s)-pmin(s))/(max-min)+pmin(s); %输出反归一化
subplot(2,1,1);
plot(1:innerv,AO,'b-',1:innerv,data(1:innerv,s)','r:');grid;
title('软测量模型与实际值对比','fonts',10);

%axis([0,innerv,0,1.8]);
%title('软测量模型与实际值对比','fonts',10);
%legend('网络训练值','实际测量值');

err=abs(AO-data(1:innerv,s)');       %./data(1:innerv,s)';
mse1=sumsqr(A-traintargetdata)/innerv;
[maxerr,ii]=max(abs(err));

subplot(2,1,2);
plot(1:innerv,err,'-');grid;
%legend('error');
%string1=['maxerr=',num2str(maxerr*100),'%'];
%string1=['maxerr=',num2str(maxerr)];
%text(10,0.1,string1,'fonts',10);
%pause;

%模型预测
hold off;
pause %键入任意键继续

testinputdata=inputdata(:,innerv+1:l);
testtargetdata=targetdata(:,innerv+1:l);

A1=simuff(testinputdata,w1,b1,'logsig',w2,b2,'logsig');
AO1=(A1-min)*(pmax(s)-pmin(s))/(max-min)+pmin(s);%输出反归一化
%
subplot(2,1,1);
plot(innerv+1:l,AO1,'b-',innerv+1:l,data(innerv+1:l,s)','r:');grid;
title('软测量模型与实际值对比','fonts',10);

%axis([91,l,0,11400]);
%title('软测量模型与实际值对比','fonts',10);
%legend('网络预测值','实际测量值');

err1=abs(AO1-data(innerv+1:l,s)');   %./data(innerv+1:l,s)';
mse11=mse(A1-testtargetdata);
[maxerr1,jj]=max(abs(err1));
subplot(2,1,2);
plot(innerv+1:l,err1,'-');grid;
%legend('相对误差');
string1=['maxerr=',num2str(maxerr1*100),'%'];
%text(innerv+10,0.2,string1,'fonts',15);
OK=testtargetdata-A1;
SSE1=sumsqr(OK);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -