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

📄 xiaobo.txt

📁 小波神经网络的MATLAB程序
💻 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 + -