📄 xiaobo.txt
字号:
%bp网络的第一阶段学习期(训练加权系数wki,wij)
%初始化
clear
disp('小波神经网络建立轧制力模型')
lr=input('学习速率lr=');
err_goal=input('目标误差平方err_goal=');
im=input('学习速率增长系数im=');
dm=input('学习速率减小系数dm=');
er=input('最大误差率er=');
dx=input('动量常数dx=');
max_epoch=input('最大循环次数max_epoch=');
q=input('隐节点数目q=');
tic
Oi=0;Ok=0;e=0;eee=0;rrr=0;s=0;
x=[0.16 0.24 0.49 0.017 0.012 1288 1104 845 9 40.7 399.5 1010 3.5 0.77 60.4 0.02
0.16 0.23 0.5 0.022 0.012 1289 1094 848 9 40.7 399.5 1002.5 4 0.76 59.8 0.02
0.16 0.24 0.49 0.017 0.012 1290 1104 846 9 40.7 399.5 1012 4 0.77 60.2 0.02
0.16 0.23 0.5 0.022 0.012 1288 1106 850 9 40.7 399.5 1013.2 4 0.76 59.2 0.02
0.14 0.21 0.53 0.019 0.013 1286 1114 870 8.7 40.7 399.5 1028.7 3.5 0.81 57.2 0.02
0.16 0.24 0.49 0.017 0.012 1285 1108 848 9 40.7 399.5 1014.4 4 0.76 59.3 0.02
0.16 0.24 0.49 0.017 0.012 1282 1117 865 8.7 40.7 399.5 1028.8 3.5 0.8 56.7 0.02
0.15 0.25 0.42 0.016 0.02 1290 1099 867 8.7 40.7 399.5 1013.5 3.5 0.8 56.5 0.02
0.16 0.23 0.5 0.022 0.012 1288 1090 859 9 40.7 399.5 1003 3.5 0.78 56.4 0.02
0.16 0.26 0.48 0.015 0.011 1287 1105 883 8.5 40.7 399.5 1024.5 3.5 0.82 53.1 0.02
0.16 0.26 0.48 0.015 0.011 1289 1087 878 8.5 40.7 399.5 1010 3.5 0.81 53.5 0.02
0.15 0.25 0.42 0.016 0.02 1290 1097 870 8.7 40.7 399.5 1015.5 3.5 0.81 56.6 0.02
0.15 0.25 0.42 0.016 0.02 1290 1102 870 8.7 40.7 399.5 1016 3.5 0.8 56.6 0.02
0.14 0.21 0.53 0.019 0.013 1288 1105 875 8.7 40.7 399.5 1020.8 3 0.81 56.7 0.02
0.2 0.22 0.48 0.023 0.012 1293 1121 885 8.5 40.7 398.9 1035.6 3.5 0.91 58.5 0.025
0.14 0.22 0.45 0.022 0.013 1287 1119 886 8.5 40.7 398.9 1034.7 3.5 0.87 55.8 0.025
0.14 0.21 0.53 0.019 0.013 1288 1107 873 8.7 40.7 399.5 1019.5 3.5 0.8 56 0.02
0.2 0.22 0.48 0.023 0.012 1287 1123 886 8.5 40.7 398.9 1037.4 3.5 0.88 57.1 0.025
0.18 0.25 0.46 0.017 0.019 1287 1131 873 8.8 40.7 398.9 1039.5 3.5 0.88 59.5 0.025
0.14 0.22 0.45 0.022 0.013 1287 1125 893 8.5 40.7 398.9 1041.2 3.5 0.88 57.3 0.025
0.18 0.24 0.5 0.012 0.018 1286 1042 902 7.56 42.7 399.5 986.6 3 0.81 40.1 0.035
0.2 0.24 0.48 0.022 0.024 1288 1095 900 6.65 42.7 399.5 1021.2 3 0.73 47.5 0.0238
0.17 0.24 0.47 0.014 0.014 1290 1084 877 6.86 40.7 399.5 1007.6 3.5 0.63 43.1 0.0241
0.17 0.26 0.46 0.02 0.017 1290 1070 900 7.33 42.7 399.5 1006.1 3.5 0.74 41.7 0.0295
0.18 0.25 0.46 0.017 0.019 1289 1126 876 8.8 40.7 398.9 1036.3 3.5 0.89 59.9 0.025
0.17 0.26 0.46 0.02 0.017 1289 1068 900 7.38 42.7 399.5 1004.6 3 0.74 41.4 0.0299
0.18 0.25 0.46 0.017 0.019 1287 1133 876 8.8 40.7 398.9 1042.3 3.5 0.88 60.3 0.025
0.17 0.26 0.46 0.02 0.017 1289 1066 901 7.71 42.7 399.5 1003.8 3 0.77 41.4 0.0322
0.17 0.26 0.46 0.02 0.017 1290 1068 901 7.47 42.7 399.5 1005.6 3 0.75 42.1 0.0311
0.14 0.22 0.45 0.022 0.013 1285 1112 882 7.63 40.7 398.9 1031.4 3.5 0.75 46.6 0.0285
0.21 0.27 0.47 0.01 0.015 1282 1111 879 6.63 40.7 398.9 1028.7 3.5 0.68 46.1 0.0241
0.22 0.26 0.48 0.013 0.01 1281 1099 900 6.39 42.7 398.9 1026.7 3 0.75 45.6 0.0257
0.18 0.24 0.5 0.012 0.018 1286 1042 903 8.27 42.7 399.5 987.7 3 0.89 39.2 0.0394
0.21 0.27 0.47 0.01 0.015 1281 1117 880 6.55 40.7 398.9 1033.1 3.5 0.68 46.6 0.0234
0.2 0.24 0.48 0.022 0.024 1288 1117 899 6.19 42.7 399.5 1036.8 3 0.67 46.7 0.0205
0.2 0.26 0.51 0.016 0.011 1282 1111 900 6.74 42.7 398.9 1036 3 0.74 47.1 0.0262
0.17 0.06 0.43 0.009 0.012 1288 1089 879 6.61 40.7 399.5 1012.7 3.5 0.65 42.7 0.0243
0.21 0.27 0.47 0.01 0.015 1284 1124 880 6.51 40.7 398.9 1038.2 3.5 0.67 46.3 0.023
0.2 0.22 0.48 0.023 0.012 1288 1122 885 7.48 40.7 398.9 1038.7 3.5 0.73 46.5 0.0273
0.22 0.21 0.43 0.017 0.019 1288 1014 899 6.28 45.7 398.9 966.4 1.9 0.88 35.8 0.0331
0.2 0.26 0.51 0.016 0.011 1284 1119 901 6.61 42.7 398.9 1041.4 3 0.73 47.1 0.0253
0.19 0.22 0.44 0.018 0.019 1289 1033 900 5.73 45.7 398.9 981.2 1.9 0.82 36.4 0.0283
0.22 0.26 0.48 0.013 0.01 1283 1113 900 6.14 42.7 398.9 1037.5 3 0.72 45.8 0.024
0.21 0.27 0.47 0.01 0.015 1285 1113 882 6.71 40.7 398.9 1030.8 3.5 0.68 45.1 0.0245
0.17 0.24 0.47 0.014 0.014 1290 1082 881 7.44 40.7 399.5 1007.8 3.5 0.67 41.2 0.0271
0.19 0.22 0.44 0.018 0.019 1290 1028 901 6.2 45.7 398.9 977.6 1.9 0.88 36.1 0.0322
0.17 0.06 0.43 0.009 0.012 1288 1073 881 7.34 40.7 399.5 1002.9 3.5 0.69 40.7 0.0295
0.19 0.22 0.44 0.018 0.019 1285 1051 902 5.3 45.7 398.9 994.4 1.9 0.76 36.9 0.0261
0.17 0.06 0.43 0.009 0.012 1287 1072 882 7.36 40.7 399.5 1000.3 3.5 0.69 41.8 0.0284
0.19 0.22 0.44 0.018 0.019 1285 1072 901 5.17 45.7 398.9 1010.7 1.8 0.75 36.8 0.0238
0.2 0.17 0.43 0.021 0.009 1285 1068 899 4.06 45.7 398.9 1006.1 1.8 0.66 33.1 0.0185
0.2 0.17 0.43 0.021 0.009 1288 1078 900 4.17 45.8 398.9 1014.6 1.8 0.68 32.7 0.0189
0.19 0.21 0.39 0.019 0.021 1290 1076 900 4.27 45.8 398.9 1013.6 1.8 0.69 31.7 0.02
0.2 0.28 0.52 0.02 0.014 1285 1083 900 3.92 45.8 398.9 1020.4 1.9 0.66 31.6 0.0184
0.2 0.28 0.52 0.02 0.014 1284 1092 899 3.58 45.8 398.9 1025.7 1.8 0.61 31.9 0.0158
0.19 0.21 0.39 0.019 0.021 1288 1079 899 4.17 45.8 398.9 1015.3 1.8 0.67 32.3 0.0188
0.2 0.17 0.43 0.021 0.009 1289 1088 898 3.94 45.8 398.9 1021.9 1.8 0.64 31.9 0.0173
0.19 0.21 0.39 0.019 0.021 1290 1088 899 3.9 45.8 398.9 1020.9 1.8 0.64 33.9 0.0169
0.21 0.23 0.39 0.019 0.017 1288 1059 901 4.59 45.7 398.9 1001.7 1.8 0.72 31 0.023
0.2 0.17 0.43 0.021 0.009 1290 1085 899 3.85 45.8 398.9 1018.5 1.8 0.63 33.3 0.0167
]';
t=[22979.9
22925.2
22875.3
22764
22435.1
22037.5
21951.3
21646.7
21439.9
21320.8
21180.1
21115.6
20790.5
20434.7
20362.9
20313.5
20273
19935.7
19831.9
19822.3
19607.3
19261
19100.2
19091.4
19005.2
19001.2
18900.2
18732
18621.8
18467.4
18452.4
18416.4
18269.4
18103.2
18010.5
17922.7
17778.8
17764.7
17699.4
17569.4
17470.1
17316.1
17204.5
17156.3
17077.7
16991.7
16832
16783.1
16622.8
16042.6
14889.7
14649.1
14254.8
13666.2
13591
13583.6
13515.9
13481.9
13418.8
13263.9
]';
%设定需要归一化的行序列号
a=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21];
X=x;
%对输入向量归一化处理
for u=1:21
X(a(1),:)=x(a(1),:)*1.0e-2;X(a(2),:)=x(a(2),:)*1.0e-1;X(a(3),:)=x(a(3),:)*1.0e-2;X(a(4),:)=x(a(4),:)*1.0e-3;X(a(5),:)=x(a(5),:)*1.0e-1;X(a(6),:)=x(a(6),:)*1.0e-3;
X(a(7),:)=x(a(7),:)*1.0e-1;X(a(11),:)=x(a(11),:)*1.0e+1;X(a(12),:)=x(a(12),:)*1.0e+1;X(a(13),:)=x(a(13),:)*1.0e-4;X(a(14),:)=x(a(14),:)*1.0e-2;
end
T=t*1.0e-5;
%初始化wki,wij(M为输入节点j的数量;q为隐含层节点i的数量;L为输出节点k的数量)
[M,N]=size(X);[L,N]=size(T);
wij=rands(q,M);wki=rands(L,q);bi=rands(q,1);bt=rands(L,1);ai=rands(q,1);
wij0=zeros(size(wij));wki0=zeros(size(wki));
for epoch=1:max_epoch
%计算隐含层各神经元输出
for j=1:N
Bi(:,j)=bi;
end
for i=1:N
Ai(:,i)=ai;
end
NETi=(wij*X+Bi).*Ai;
for j=1:N
for i=1:q
Oi(i,j)=cos(5*(NETi(i,j))).*exp(-(NETi(i,j)).^2/2);
end
end
%计算输出层各神经元输出
for i=1:N
Bt(:,i)=bt;
end
NETk=wki*Oi;
for i=1:N
for k=1:L
Ok(k,i)=1/(1+exp(-NETk(k,i)));
end
end
Bi0=zeros(size(Bi));Bt0=zeros(size(Bt));Ai0=zeros(size(Ai));
% 计算误差函数
E=((T-Ok)*(T-Ok)')/2/N;
eee=[eee;E];
s=[s;epoch];
rrr=[rrr;lr];
h=(Ok-T)./T;
h=abs(h);
if(h<err_goal)
break;
end
%调整输出层加权系数
deltak=Ok.*(1-Ok).*(T-Ok);
w=wki;
wki=wki+lr*deltak*Oi'+dx*(wki-wki0);
wki0=w;
%调整输出层阈值
w=Bt;
Bt=Bt+lr*deltak+dx*(Bt-Bt0);
Bt0=w;
%调整隐含层加权系数
deltai=(-5*sin(5*NETi)-cos(5*NETi).*NETi).*exp(-NETi.^2/2).*Ai.*(deltak'*wki)';
w=wij;
wij=wij+lr*deltai*X'+dx*(wij-wij0);
wij0=w;
%调整伸缩系数
w=Bi;
Bi=Bi+lr*deltai+dx*(Bi-Bi0);
Bi0=w;
%调整伸缩系数
w=Ai;
Ai=Ai-lr*deltai./Ai+dx*(Ai-Ai0);
Ai0=w;
if E>e*er
lr=lr*dm;
dx=0;
else if E<e
lr=lr*im;
else
lr=lr;
end
end
e=E;
end
epoch
wij
wki
bi=Bi(:,1)
bt=Bt(:,1)
ai=Ai(:,1)
%bp网络的第二阶段检验期(计算训练好的wki,wij 和给定的输入计算输出)
x1=[0.16 0.24 0.49 0.017 0.012 1286 1104 847 9 40.7 399.5 1012.2 4 0.77 59.8 0.02
0.14 0.21 0.53 0.019 0.013 1286 1088 866 8.7 40.7 399.5 1003.6 3.5 0.8 57.5 0.02
0.16 0.23 0.5 0.022 0.012 1287 1115 852 9 40.7 399.5 1021.3 4 0.77 59.2 0.02
0.16 0.26 0.48 0.015 0.011 1286 1085 876 8.5 40.7 399.5 1006.8 3.5 0.81 53.8 0.02
0.18 0.25 0.46 0.017 0.019 1286 1125 875 8.8 40.7 398.9 1035.5 3.5 0.89 59.1 0.025
0.18 0.25 0.46 0.017 0.019 1287 1138 881 8.8 40.7 398.9 1044.9 3.5 0.88 59.4 0.025
0.21 0.27 0.47 0.01 0.015 1286 1114 881 6.98 40.7 398.9 1032.2 3.5 0.72 45.7 0.0257
0.18 0.24 0.5 0.012 0.018 1287 1062 901 7.24 42.7 399.5 1001.6 3 0.77 40.1 0.0315
0.2 0.26 0.51 0.016 0.011 1284 1100 902 7.27 42.7 398.9 1028.9 3 0.78 45.3 0.0291
0.22 0.26 0.48 0.013 0.01 1282 1105 902 6.56 42.7 398.9 1032.4 3 0.76 45.2 0.0262
0.22 0.21 0.43 0.017 0.019 1288 1038 901 5.89 45.7 398.9 984.7 1.9 0.83 35.5 0.0281
0.21 0.23 0.39 0.019 0.017 1287 1072 900 4.25 45.7 398.9 1010.4 1.8 0.69 32.4 0.0195
0.21 0.23 0.39 0.019 0.017 1288 1063 896 4.02 45.7 398.9 1002.7 1.8 0.65 32.5 0.0188
0.19 0.21 0.39 0.019 0.021 1289 1076 900 4.3 45.8 398.9 1014.4 1.8 0.69 32.3 0.0202
0.21 0.23 0.39 0.019 0.017 1289 1078 899 3.83 45.8 398.9 1013.6 1.8 0.62 32.8 0.017
]';%给定输入
%设定需要归一化的行序列号
a=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21];
X1=x1;
%对输入向量归一化处理
for u=1:21
X1(a(1),:)=x1(a(1),:)*1.0e-2;X1(a(2),:)=x1(a(2),:)*1.0e-1;X1(a(3),:)=x1(a(3),:)*1.0e-2;X1(a(4),:)=x1(a(4),:)*1.0e-3;X1(a(5),:)=x1(a(5),:)*1.0e-1;X1(a(6),:)=x1(a(6),:)*1.0e-3;
X1(a(7),:)=x1(a(7),:)*1.0e-1;X1(a(11),:)=x1(a(11),:)*1.0e+1;X1(a(12),:)=x1(a(12),:)*1.0e+1;X1(a(13),:)=x1(a(13),:)*1.0e-4;X1(a(14),:)=x1(a(14),:)*1.0e-2;
end
%计算隐含层各神经元输出
[M,p]=size(X1);
for j=1:p
Bi1(:,j)=bi;
end
for j=1:p
Ai1(:,j)=ai;
end
NETi=(wij*X+Bi).*Ai;
NETi1=(wij*X1+Bi1).*Ai1;
for j=1:N
for i=1:q
Oi(i,j)=cos(5*NETi(i,j)).*exp(-NETi(i,j).^2/2);
end
end
for j=1:p
for i=1:q
Oi1(i,j)=cos(5*NETi1(i,j)).*exp(-NETi1(i,j).^2/2);
end
end
%计算输出层各神经元输出
for i=1:p
Bt1(:,i)=bt;
end
NETk=wki*Oi;
NETk1=wki*Oi1;
for i=1:N
for k=1:L
Ok(k,i)=1/(1+exp(-NETk(k,i)));
end
end
for i=1:p
for k=1:L
Ok1(k,i)=1/(1+exp(-NETk1(k,i)));
end
end
t1=[22859.9
22396.9
22665.8
21131.9
19696
18994
18221.3
18055.8
17719.3
17213.9
16583.8
14607.3
14450.4
13472.4
13424.5
]';
T1=t1*1.0e-5;
h=h'
h1=(Ok1-T1)./T1;
h1=abs(h1);
h1=h1'
E
lr
toc
subplot(2,1,1):plot(s,eee);
axis([0,epoch,0,0.1]);xlabel('epoch');ylabel('E')
subplot(2,1,2):plot(s,rrr);
axis([0,epoch,0,1]);xlabel('epoch');ylabel('lr')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -