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

📄 李春菊.m

📁 BP算法的程序
💻 M
字号:
p=[52 50 0.5;
   56 55 1;
   55 59 1; 
   57 55 1;
   35 33 0.1;
   32 34 0.1;
   57 56 1;
   58 56 1;
   59 58 1;
   59 58 1;
   56 55 1;
   58 57 1;
   59 57 1;
   59 58 1;
   55 56 1;
   51 50 0.5;
   52 53 0.5;
   51 50 0.5;
   60 59  1;
   55 54 1;
   57 57 1;
   35 31 0.1;
   58 59 1;
   56 56 1;
   59 59 1;
   30 30 0.1;
   50 49 0.5;
   53 50 0.5;
   57 56 1;
   58 58 1]';
t=[35 31 20 36 35 39 ;
   48 40 28 49 40 48 ;
   55 48 31 55 42 60;
   58 45 32 57 44 59 ;
   51 42 32 50 48 50 ;
   30 28 23 33 31 32 ;
   32 29 22 30 29 35 ;
   53 43 33 51 42 52;
   52 43 29 56 45 51 ;
   50 45 29 55 39 51 ;
   50 50 32 50 41 54 ;
   55 43 29 56 41 51 ;
   53 50 30 54 43 51 ;
   52 43 35 49 40 55 ;
   52 52 32 47 41 50 ;
   54 52 28 47 42 55;
   46 49 30 48 46 49 ;
   47 48 35 50 38 45 ;
   48 45 30 48 39 48 ;
   56 44 28 53 41 58 ;
   54 50 31 52 45 50 ;
   29 25 30 35 28 28 ;
   52 45 32 51 46 55 ;
   54 50 32 50 41 57;
   51  48 29 48 42 52;
   30 27 20 31 29 32 ;
   49 41 29 41 40 49 ;
   47 43 30 40 39 48 ;
   50 48 30 40 40 53;
   51 47 32 48 43 52 ]';


%归一化
u_test=[ t(:,28) t(:,29) t(:,30)];


for i=1:3
   p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
for i=1:6
   t(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));
end


%训练样本,P_train为输入向量,T_train为目标向量
P_train=[p(:,1) p(:,2) p(:,3) p(:,4) p(:,5) p(:,6) p(:,7) p(:,8) p(:,9) p(:,10) p(:,11) p(:,12) p(:,13)  p(:,14) p(:,15) p(:,16) p(:,17) p(:,18) p(:,19) p(:,20) p(:,21) p(:,22) p(:,23) p(:,24) p(:,25) p(:,26) p(:,27) ];
T_train=[t(:,1) t(:,2) t(:,3) t(:,4) t(:,5) t(:,6) t(:,7) t(:,8) t(:,9) t(:,10) t(:,11) t(:,12) t(:,13)  t(:,14) t(:,15) t(:,16) t(:,17) t(:,18) t(:,19) t(:,20) t(:,21) t(:,22) t(:,23) t(:,24) t(:,25) t(:,26) t(:,27)];


%测试样本
P_test=[p(:,28) p(:,29)  p(:,30)];
T_test=[ t(:,28) t(:,29) t(:,30)];
no=[7 8 9 10 11];


for i=1:5
net=newff(minmax(p),[no(i),6],{'tansig','logsig'},'trainlm');%建立网络
net.trainParam.epochs=1000;
net.trainParam.goal=0.01;%目标误差
LP.lr=0.1;%学习率
net.trainParam.show=50;
net=train(net,P_train,T_train);
temp=sim(net,P_test)%仿真预测
end



for i=1:5
j=6*i
 y(j-5,:)=temp(1,:);
 y(j-4,:)=temp(2,:);
 y(j-3,:)=temp(3,:);
 y(j-2,:)=temp(4,:);
 y(j-1,:)=temp(5,:);
 y(j,:)=temp(6,:);
end
y1=[y(1,:);y(2,:);y(3,:) ;y(4,:); y(5,:);y(6,:)];
y2=[y(7,:);y(8,:);y(9,:);y(10,:);y(11,:);y(12,:)];
y3=[y(13,:);y(14,:);y(15,:);y(16,:);y(17,:);y(18,:)];
y4=[y(19,:);y(20,:);y(21,:);y(22,:);y(23,:);y(24,:)];
y5=[y(25,:);y(26,:);y(27,:);y(28,:);y(29,:);y(30,:)];
%反归一化



for i=1:6
   predict(i,:)=temp(i,:)* (max(u_test(i,:))-min(u_test(i,:)))+ min(u_test(i,:));
end
predict




%计算预测误差
 for i=1:3
  error1(i)=norm(y1(:,i)-T_test(:,i));
  error2(i)=norm(y2(:,i)-T_test(:,i));
  error3(i)=norm(y3(:,i)-T_test(:,i));
  error4(i)=norm(y4(:,i)-T_test(:,i));
  error5(i)=norm(y5(:,i)-T_test(:,i));
  end


  
  
  %绘制预测误差曲线
figure;
plot(1:3,error1,'r-*');
hold on;
plot(1:3,error2,'m-+');
hold on;
plot(1:3,error3,'y-h');
hold on;
plot(1:3,error4,'g-d');
hold on;
plot(1:3,error5,'c-o');
hold off;

⌨️ 快捷键说明

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