📄 tanersimu9.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 + -