T=1:1:137;
%输入样本和目标输出
p=[ 0.32196 0.24591 0.16613 0.088155 0.0196 -0.04695 -0.10237 -0.15076 -0.19321 -0.23058 -0.26353 -0.29257 -0.31803 -0.34018 -0.35918 -0.37519 -0.38828 -0.39853 -0.40598 -0.41068 -0.41266 -0.41198 -0.4087 -0.4029 -0.39469 -0.38422 -0.37166 -0.35725 -0.34126 -0.324 -0.30582 -0.28709 -0.2682 -0.24951 -0.23138 -0.21408 -0.19785 -0.18282 -0.16908 -0.15662 -0.14542 -0.13539 -0.123 -0.11842 -0.11125 -0.1048 -0.0983 -0.093702 -0.088879 -0.084448 -0.080352 -0.076545 -0.072988 -0.0699 -0.066502 -0.063526 -0.060702 -0.058018 -0.055461 -0.053021 -0.0506 -0.04846 -0.046326 -0.044283 -0.042326 -0.040452 -0.038656 -0.036935 -0.035286 -0.033707 -0.032195 -0.030747 -0.02936 -0.028034 -0.0267 -0.02555 -0.0243 -0.02328 -0.02222 -0.021208 -0.020241 -0.019319 -0.018439 -0.017599 -0.016799 -0.016036 -0.015309 -0.014617 -0.013959 -0.013332 -0.012735 -0.012168 -0.011628 -0.011116 -0.010628 -0.010628 -0.010166 -0.0097265 -0.0093096 -0.00139 -0.0085385 -0.0081825 -0.0078449 -0.007525 -0.0072219 -0.0069347 -0.0066627 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299;
-0.51781 -0.3674 -0.20883 -0.053316 0.090018 0.21728 0.32875 0.42639 0.51226 0.58808 0.65512 0.7143 0.76629 0.81155 0.85042 0.88311 0.90979 0.93056 0.9455 0.95468 0.95817 0.95606 0.94848 0.93561 0.91766 0.496 0.867 0.83691 0.8026 0.76561 0.72666 0.68651 0.597 0.6058 0.56669 0.52924 0.49392 0.46102 0.43071 0.40302 0.37787 0.35511 0.33453 0.31591 0.29903 0.28366 0.2696 0.25668 0.24474 0.23365 0.22329 0.21356 0.2044 0.19573 0.18751 0.17968 0.17221 0.16508 0.15826 0.15172 0.14546 0.13944 0.13367 0.12813 0.1228 0.11769 0.11278 0.10806 0.10352 0.099168 0.094987 0.090974 0.087122 0.083425 0.079879 0.0778 0.073217 0.070091 0.067096 0.0227 0.061479 0.058848 0.056329 0.05392 0.051615 0.04941 0.047303 0.0452 0.0433 0.041525 0.03977 0.038093 0.0393 0.034966 0.033509 0.033509 0.03212 0.030795 0.029532 0.028328 0.02718 0.026087 0.025046 0.024055 0.02311 0.022212 0.021356 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748;
-2.9024 -3.152 -3.192 -3.0144 -2.7059 -2.3718 -2.0688 -1.8102 -1.5912 -1.4028 -1.2371 -1.0879 -0.95071 -0.82207 -0.69957 -0.58143 -0.461 -0.35366 -0.24269 -0.13334 -0.025732 0.079713 0.1823 0.28105 0.37474 0.4619 0.54088 0.60993 0.66728 0.71133 0.74082 0.75502 0.75396 0.73848 0.71031 0.67184 0.62597 0.57567 0.52376 0.47261 0.42401 0.37915 0.33871 0.3029 0.271 0.24462 0.22143 0.20161 0.18468 0.1702 0.15777 0.14705 0.13773 0.12956 0.12234 0.11588 0.11006 0.10476 0.0991 0.095382 0.091176 0.087227 0.083499 0.079965 0.076601 0.0733 0.070316 0.067368 0.0537 0.061816 0.059197 0.056675 0.054247 0.051907 0.049653 0.047481 0.0453 0.043374 0.041434 0.039567 0.03777 0.036042 0.034381 0.032784 0.03125 0.029778 0.0283 0.027009 0.025709 0.024463 0.023269 0.022127 0.021033 0.019987 0.0187 0.0187 0.018032 0.017119 0.016247 0.015415 0.014622 0.013865 0.013143 0.012456 0.011802 0.011179 0.010586 1.0512e-010 1.0026e-010 9.5616e-011 9.1193e-011 8.6971e-011 8.2946e-011 7.9107e-011 7.5441e-011 7.1954e-011 6.862e-011 6.5437e-011 6.2412e-011 5.9522e-011 5.6766e-011 5.414e-011 5.163e-011 4.9239e-011 4.69e-011 4.4791e-011 4.2712e-011 4.0734e-011 3.8847e-011 3.705e-011 3.5335e-011 3.3705e-011 3.2149e-011 3.0654e-011 2.9233e-011 2.7884e-011 2.6593e-011;
5.7211 6.2514 6.35 6.0212 5.42 4.72 4.1677 3.6575 3.2241 2.8499 2.5192 2.2198 1.9425 1.6808 1.43 1.1866 0.94836 0.71371 0.4819 0.25282 0.026935 -0.19468 -0.41042 -0.61812 -0.81514 -0.9984 -1.15 -1.3097 -1.4307 -1.524 -1.5872 -1.619 -1.6193 -1.59 -1.5346 -1.458 -1.366 -1.27 -1.1598 -1.056 -0.95706 -0.86541 -0.7824 -0.70853 -0.366 -0.58721 -0.53837 -0.49624 -0.4599 -0.42846 -0.40115 -0.37727 -0.35623 -0.33754 -0.32077 -0.30558 -0.29171 -0.273 -0.26707 -0.25596 -0.24552 -0.235 -0.22625 -0.21729 -0.20872 -0.20051 -0.19261 -0.18502 -0.1777 -0.17065 -0.16385 -0.15728 -0.15094 -0.14482 -0.131 -0.13321 -0.1277 -0.12239 -0.11726 -0.11232 -0.10755 -0.10296 -0.098531 -0.094267 -0.090162 -0.086211 -0.08241 -0.078755 -0.075241 -0.071865 -0.068623 -0.065509 -0.062521 -0.059655 -0.056905 -0.056905 -0.05427 -0.051745 -0.049326 -0.047009 -0.044792 -0.04267 -0.0401 -0.0387 -0.036845 -0.035072 -0.033378 -5.5315e-010 -5.2754e-010 -5.0313e-010 -4.7985e-010 -4.5763e-010 -4.36e-010 -4.1626e-010 -3.9698e-010 -3.7862e-010 -3.6109e-010 -3.4436e-010 -3.2843e-010 -3.1323e-010 -2.9873e-010 -2.8491e-010 -2.7171e-010 -2.5913e-010 -2.4715e-010 -2.3571e-010 -2.2479e-010 -2.1439e-010 -2.0446e-010 -1.95e-010 -1.8597e-010 -1.7738e-010 -1.6918e-010 -1.6133e-010 -1.5386e-010 -1.4675e-010 -1.3996e-010];
t=[ 5.7406 1.5872 -1.5819 -3.3978 -4.1771 -4.5036 -4.75 -5.0459 -5.4062 -5.8125 -6.2426 -6.678 -7.1043 -7.5095 -7.8834 -8.21 -8.4991 -8.7221 -8.8761 -8.9522 -8.9427 -8.8412 -8.38 -8.3497 -7.9621 -7.4882 -6.9402 -6.3349 -5.693 -5.0382 -4.3953 -3.7881 -3.2373 -2.7579 -2.3583 -2.0396 -1.7966 -1.6195 -1.4958 -1.4128 -1.3584 -1.3226 -1.2977 -1.278 -1.2598 -1.2406 -1.2194 -1.1955 -1.169 -1.1401 -1.1092 -1.0767 -1.0431 -1.0088 -0.9741 -0.93938 -0.90487 -0.87078 -0.83727 -0.80447 -0.77246 -0.74132 -0.7111 -0.68183 -0.65351 -0.62617 -0.5998 -0.57439 -0.54992 -0.52639 -0.50378 -0.48205 -0.4612 -0.44119 -0.42201 -0.40362 -0.38601 -0.36914 -0.353 -0.33755 -0.32278 -0.30866 -0.29516 -0.28227 -0.26996 -0.25821 -0.24699 -0.23629 -0.22608 -0.21635 -0.20707 -0.19824 -0.182 -0.1818 -0.17416 -0.17416 -0.166 -0.15998 -0.15339 -0.14713 -0.14118 -0.13552 -0.13014 -0.12502 -0.12016 -0.11554 -0.11115 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145];
s1=4;s2=4;s3=1;%输入层,隐层以及输出层各层的神经元数
[R,Q]=size(p);
[S,Q]=size(t);
w1=[-13.2406 -8.8883 1.2111 -2.1919;0.4954 0.20729 0.21402 0.10116;-0.34757 -0.13691 -0.15081 -0.07379;-0.39188 -0.15828 -0.1692 -0.079797];%输入层到隐层的权值
b1=ones(4,137);%给输入层到隐层的阈值赋全一
[w2,b2]=rands(s3,s2);
b2=ones(1,137);%给隐层到输出层的阈值赋全一
n1=w1*p+b1;
a1=tansig(n1);%隐层的输出
n2=w2*a1+b2;
a2=purelin(n2);%输出层的输出
net = newff(minmax(p),[4,1],{'tansig' 'purelin'},'traingd');% 创建一个新的前向神经网络
% 设置训练参数
net.trainParam.lr= 0.15;
net.trainParam.show= 25;
net.trainParam.epochs=17000;
net.trainParam.goal=0.01;
% 对 BP 网络进行仿真
Y=sim(net,p);
% 调用 TRAINGD 算法训练 BP 网络
net = train(net,p,t);
% 计算仿真误差
E = t- Y;
MSE=mse(E)
plot(T,t,'r+');
grid on;
hold on
plot(T,Y);
grid on;
hold off;
pause
clc
p1=p(1,:);
p2=p(2,:);
p3=p(3,:);
p4=p(4,:);
plot(T,p1);
grid on;
pause
clc
plot(T,p2);
grid on;
pause
clc
plot(T,p3);
grid on;
pause
clc
plot(T,p4);
grid on;
pause
clc
plot(T,E);
2.动量BP算法程序:
T=1:1:137;
%输入样本和目标输出
p=[ 0.32196 0.24591 0.16613 0.088155 0.0196 -0.04695 -0.10237 -0.15076 -0.19321 -0.23058 -0.26353 -0.29257 -0.31803 -0.34018 -0.35918 -0.37519 -0.38828 -0.39853 -0.40598 -0.41068 -0.41266 -0.41198 -0.4087 -0.4029 -0.39469 -0.38422 -0.37166 -0.35725 -0.34126 -0.324 -0.30582 -0.28709 -0.2682 -0.24951 -0.23138 -0.21408 -0.19785 -0.18282 -0.16908 -0.15662 -0.14542 -0.13539 -0.123 -0.11842 -0.11125 -0.1048 -0.0983 -0.093702 -0.088879 -0.084448 -0.080352 -0.076545 -0.072988 -0.0699 -0.066502 -0.063526 -0.060702 -0.058018 -0.055461 -0.053021 -0.0506 -0.04846 -0.046326 -0.044283 -0.042326 -0.040452 -0.038656 -0.036935 -0.035286 -0.033707 -0.032195 -0.030747 -0.02936 -0.028034 -0.0267 -0.02555 -0.0243 -0.02328 -0.02222 -0.021208 -0.020241 -0.019319 -0.018439 -0.017599 -0.016799 -0.016036 -0.015309 -0.014617 -0.013959 -0.013332 -0.012735 -0.012168 -0.011628 -0.011116 -0.010628 -0.010628 -0.010166 -0.0097265 -0.0093096 -0.00139 -0.0085385 -0.0081825 -0.0078449 -0.007525 -0.0072219 -0.0069347 -0.0066627 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299;
-0.51781 -0.3674 -0.20883 -0.053316 0.090018 0.21728 0.32875 0.42639 0.51226 0.58808 0.65512 0.7143 0.76629 0.81155 0.85042 0.88311 0.90979 0.93056 0.9455 0.95468 0.95817 0.95606 0.94848 0.93561 0.91766 0.496 0.867 0.83691 0.8026 0.76561 0.72666 0.68651 0.597 0.6058 0.56669 0.52924 0.49392 0.46102 0.43071 0.40302 0.37787 0.35511 0.33453 0.31591 0.29903 0.28366 0.2696 0.25668 0.24474 0.23365 0.22329 0.21356 0.2044 0.19573 0.18751 0.17968 0.17221 0.16508 0.15826 0.15172 0.14546 0.13944 0.13367 0.12813 0.1228 0.11769 0.11278 0.10806 0.10352 0.099168 0.094987 0.090974 0.087122 0.083425 0.079879 0.0778 0.073217 0.070091 0.067096 0.0227 0.061479 0.058848 0.056329 0.05392 0.051615 0.04941 0.047303 0.0452 0.0433 0.041525 0.03977 0.038093 0.0393 0.034966 0.033509 0.033509 0.03212 0.030795 0.029532 0.028328 0.02718 0.026087 0.025046 0.024055 0.02311 0.022212 0.021356 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748;
-2.9024 -3.152 -3.192 -3.0144 -2.7059 -2.3718 -2.0688 -1.8102 -1.5912 -1.4028 -1.2371 -1.0879 -0.95071 -0.82207 -0.69957 -0.58143 -0.461 -0.35366 -0.24269 -0.13334 -0.025732 0.079713 0.1823 0.28105 0.37474 0.4619 0.54088 0.60993 0.66728 0.71133 0.74082 0.75502 0.75396 0.73848 0.71031 0.67184 0.62597 0.57567 0.52376 0.47261 0.42401 0.37915 0.33871 0.3029 0.271 0.24462 0.22143 0.20161 0.18468 0.1702 0.15777 0.14705 0.13773 0.12956 0.12234 0.11588 0.11006 0.10476 0.0991 0.095382 0.091176 0.087227 0.083499 0.079965 0.076601 0.0733 0.070316 0.067368 0.0537 0.061816 0.059197 0.056675 0.054247 0.051907 0.049653 0.047481 0.0453 0.043374 0.041434 0.039567 0.03777 0.036042 0.034381 0.032784 0.03125 0.029778 0.0283 0.027009 0.025709 0.024463 0.023269 0.022127 0.021033 0.019987 0.0187 0.0187 0.018032 0.017119 0.016247 0.015415 0.014622 0.013865 0.013143 0.012456 0.011802 0.011179 0.010586 1.0512e-010 1.0026e-010 9.5616e-011 9.1193e-011 8.6971e-011 8.2946e-011 7.9107e-011 7.5441e-011 7.1954e-011 6.862e-011 6.5437e-011 6.2412e-011 5.9522e-011 5.6766e-011 5.414e-011 5.163e-011 4.9239e-011 4.69e-011 4.4791e-011 4.2712e-011 4.0734e-011 3.8847e-011 3.705e-011 3.5335e-011 3.3705e-011 3.2149e-011 3.0654e-011 2.9233e-011 2.7884e-011 2.6593e-011;
5.7211 6.2514 6.35 6.0212 5.42 4.72 4.1677 3.6575 3.2241 2.8499 2.5192 2.2198 1.9425 1.6808 1.43 1.1866 0.94836 0.71371 0.4819 0.25282 0.026935 -0.19468 -0.41042 -0.61812 -0.81514 -0.9984 -1.15 -1.3097 -1.4307 -1.524 -1.5872 -1.619 -1.6193 -1.59 -1.5346 -1.458 -1.366 -1.27 -1.1598 -1.056 -0.95706 -0.86541 -0.7824 -0.70853 -0.366 -0.58721 -0.53837 -0.49624 -0.4599 -0.42846 -0.40115 -0.37727 -0.35623 -0.33754 -0.32077 -0.30558 -0.29171 -0.273 -0.26707 -0.25596 -0.24552 -0.235 -0.22625 -0.21729 -0.20872 -0.20051 -0.19261 -0.18502 -0.1777 -0.17065 -0.16385 -0.15728 -0.15094 -0.14482 -0.131 -0.13321 -0.1277 -0.12239 -0.11726 -0.11232 -0.10755 -0.10296 -0.098531 -0.094267 -0.090162 -0.086211 -0.08241 -0.078755 -0.075241 -0.071865 -0.068623 -0.065509 -0.062521 -0.059655 -0.056905 -0.056905 -0.05427 -0.051745 -0.049326 -0.047009 -0.044792 -0.04267 -0.0401 -0.0387 -0.036845 -0.035072 -0.033378 -5.5315e-010 -5.2754e-010 -5.0313e-010 -4.7985e-010 -4.5763e-010 -4.36e-010 -4.1626e-010 -3.9698e-010 -3.7862e-010 -3.6109e-010 -3.4436e-010 -3.2843e-010 -3.1323e-010 -2.9873e-010 -2.8491e-010 -2.7171e-010 -2.5913e-010 -2.4715e-010 -2.3571e-010 -2.2479e-010 -2.1439e-010 -2.0446e-010 -1.95e-010 -1.8597e-010 -1.7738e-010 -1.6918e-010 -1.6133e-010 -1.5386e-010 -1.4675e-010 -1.3996e-010];
t=[ 5.7406 1.5872 -1.5819 -3.3978 -4.1771 -4.5036 -4.75 -5.0459 -5.4062 -5.8125 -6.2426 -6.678 -7.1043 -7.5095 -7.8834 -8.21 -8.4991 -8.7221 -8.8761 -8.9522 -8.9427 -8.8412 -8.38 -8.3497 -7.9621 -7.4882 -6.9402 -6.3349 -5.693 -5.0382 -4.3953 -3.7881 -3.2373 -2.7579 -2.3583 -2.0396 -1.7966 -1.6195 -1.4958 -1.4128 -1.3584 -1.3226 -1.2977 -1.278 -1.2598 -1.2406 -1.2194 -1.1955 -1.169 -1.1401 -1.1092 -1.0767 -1.0431 -1.0088 -0.9741 -0.93938 -0.90487 -0.87078 -0.83727 -0.80447 -0.77246 -0.74132 -0.7111 -0.68183 -0.65351 -0.62617 -0.5998 -0.57439 -0.54992 -0.52639 -0.50378 -0.48205 -0.4612 -0.44119 -0.42201 -0.40362 -0.38601 -0.36914 -0.353 -0.33755 -0.32278 -0.30866 -0.29516 -0.28227 -0.26996 -0.25821 -0.24699 -0.23629 -0.22608 -0.21635 -0.20707 -0.19824 -0.182 -0.1818 -0.17416 -0.17416 -0.166 -0.15998 -0.15339 -0.14713 -0.14118 -0.13552 -0.13014 -0.12502 -0.12016 -0.11554 -0.11115 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145];
s1=4;s2=4;s3=1;%输入层,隐层以及输出层各层的神经元数
[R,Q]=size(p);
[S,Q]=size(t);5
w1=[-13.2406 -8.8883 1.2111 -2.1919;0.4954 0.20729 0.21402 0.10116;-0.34757 -0.13691 -0.15081 -0.07379;-0.39188 -0.15828 -0.1692 -0.079797];%输入层到隐层的权值
b1=ones(4,137);%给输入层到隐层的阈值赋全一
[w2,b2]=rands(s3,s2);
b2=ones(1,137);%给隐层到输出层的阈值赋全一
n1=w1*p+b1;
a1=tansig(n1);%隐层的输出
n2=w2*a1+b2;
a2=purelin(n2);%输出层的输出
net = newff(minmax(p),[4,1],{'tansig' 'purelin'},'traingdm');% 创建一个新的前向神经网络
% 设置训练参数
net.trainParam.show= 25;
net.trainParam.epochs=17000;
net.trainParam.goal=0.001;
lr=0.1;
% 调用 TRAINGDM 算法训练 BP 网络
net = train(net,p,t);
% 对 BP 网络进行仿真
Y=sim(net,p);
% 计算仿真误差
E = t- Y;
MSE=mse(E)
plot(T,t,'r+');
grid on;
hold on
plot(T,Y);
grid on;
hold off;
pause
clc
p1=p(1,:);
p2=p(2,:);
p3=p(3,:);
p4=p(4,:);
plot(T,p1);
grid on;
pause
clc
plot(T,p2);
grid on;
pause
clc
plot(T,p3);
grid on;
pause
clc
plot(T,p4);
grid on;
pause
clc
plot(T,E);
3.学习率可变的动量BP算法
T=1:1:137;
p=[ 0.32196 0.24591 0.16613 0.088155 0.0196 -0.04695 -0.10237 -0.15076 -0.19321 -0.23058 -0.26353 -0.29257 -0.31803 -0.34018 -0.35918 -0.37519 -0.38828 -0.39853 -0.40598 -0.41068 -0.41266 -0.41198 -0.4087 -0.4029 -0.39469 -0.38422 -0.37166 -0.35725 -0.34126 -0.324 -0.30582 -0.28709 -0.2682 -0.24951 -0.23138 -0.21408 -0.19785 -0.18282 -0.16908 -0.15662 -0.14542 -0.13539 -0.123 -0.11842 -0.11125 -0.1048 -0.0983 -0.093702 -0.088879 -0.084448 -0.080352 -0.076545 -0.072988 -0.0699 -0.066502 -0.063526 -0.060702 -0.058018 -0.055461 -0.053021 -0.0506 -0.04846 -0.046326 -0.044283 -0.042326 -0.040452 -0.038656 -0.036935 -0.035286 -0.033707 -0.032195 -0.030747 -0.02936 -0.028034 -0.0267 -0.02555 -0.0243 -0.02328 -0.02222 -0.021208 -0.020241 -0.019319 -0.018439 -0.017599 -0.016799 -0.016036 -0.015309 -0.014617 -0.013959 -0.013332 -0.012735 -0.012168 -0.011628 -0.011116 -0.010628 -0.010628 -0.010166 -0.0097265 -0.0093096 -0.00139 -0.0085385 -0.0081825 -0.0078449 -0.007525 -0.0072219 -0.0069347 -0.0066627 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299;
-0.51781 -0.3674 -0.20883 -0.053316 0.090018 0.21728 0.32875 0.42639 0.51226 0.58808 0.65512 0.7143 0.76629 0.81155 0.85042 0.88311 0.90979 0.93056 0.9455 0.95468 0.95817 0.95606 0.94848 0.93561 0.91766 0.496 0.867 0.83691 0.8026 0.76561 0.72666 0.68651 0.597 0.6058 0.56669 0.52924 0.49392 0.46102 0.43071 0.40302 0.37787 0.35511 0.33453 0.31591 0.29903 0.28366 0.2696 0.25668 0.24474 0.23365 0.22329 0.21356 0.2044 0.19573 0.18751 0.17968 0.17221 0.16508 0.15826 0.15172 0.14546 0.13944 0.13367 0.12813 0.1228 0.11769 0.11278 0.10806 0.10352 0.099168 0.094987 0.090974 0.087122 0.083425 0.079879 0.0778 0.073217 0.070091 0.067096 0.0227 0.061479 0.058848 0.056329 0.05392 0.051615 0.04941 0.047303 0.0452 0.0433 0.041525 0.03977 0.038093 0.0393 0.034966 0.033509 0.033509 0.03212 0.030795 0.029532 0.028328 0.02718 0.026087 0.025046 0.024055 0.02311 0.022212 0.021356 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748;
-2.9024 -3.152 -3.192 -3.0144 -2.7059 -2.3718 -2.0688 -1.8102 -1.5912 -1.4028 -1.2371 -1.0879 -0.95071 -0.82207 -0.69957 -0.58143 -0.461 -0.35366 -0.24269 -0.13334 -0.025732 0.079713 0.1823 0.28105 0.37474 0.4619 0.54088 0.60993 0.66728 0.71133 0.74082 0.75502 0.75396 0.73848 0.71031 0.67184 0.62597 0.57567 0.52376 0.47261 0.42401 0.37915 0.33871 0.3029 0.271 0.24462 0.22143 0.20161 0.18468 0.1702 0.15777 0.14705 0.13773 0.12956 0.12234 0.11588 0.11006 0.10476 0.0991 0.095382 0.091176 0.087227 0.083499 0.079965 0.076601 0.0733 0.070316 0.067368 0.0537 0.061816 0.059197 0.056675 0.054247 0.051907 0.049653 0.047481 0.0453 0.043374 0.041434 0.039567 0.03777 0.036042 0.034381 0.032784 0.03125 0.029778 0.0283 0.027009 0.025709 0.024463 0.023269 0.022127 0.021033 0.019987 0.0187 0.0187 0.018032 0.017119 0.016247 0.015415 0.014622 0.013865 0.013143 0.012456 0.011802 0.011179 0.010586 1.0512e-010 1.0026e-010 9.5616e-011 9.1193e-011 8.6971e-011 8.2946e-011 7.9107e-011 7.5441e-011 7.1954e-011 6.862e-011 6.5437e-011 6.2412e-011 5.9522e-011 5.6766e-011 5.414e-011 5.163e-011 4.9239e-011 4.69e-011 4.4791e-011 4.2712e-011 4.0734e-011 3.8847e-011 3.705e-011 3.5335e-011 3.3705e-011 3.2149e-011 3.0654e-011 2.9233e-011 2.7884e-011 2.6593e-011;
5.7211 6.2514 6.35 6.0212 5.42 4.72 4.1677 3.6575 3.2241 2.8499 2.5192 2.2198 1.9425 1.6808 1.43 1.1866 0.94836 0.71371 0.4819 0.25282 0.026935 -0.19468 -0.41042 -0.61812 -0.81514 -0.9984 -1.15 -1.3097 -1.4307 -1.524 -1.5872 -1.619 -1.6193 -1.59 -1.5346 -1.458 -1.366 -1.27 -1.1598 -1.056 -0.95706 -0.86541 -0.7824 -0.70853 -0.366 -0.58721 -0.53837 -0.49624 -0.4599 -0.42846 -0.40115 -0.37727 -0.35623 -0.33754 -0.32077 -0.30558 -0.29171 -0.273 -0.26707 -0.25596 -0.24552 -0.235 -0.22625 -0.21729 -0.20872 -0.20051 -0.19261 -0.18502 -0.1777 -0.17065 -0.16385 -0.15728 -0.15094 -0.14482 -0.131 -0.13321 -0.1277 -0.12239 -0.11726 -0.11232 -0.10755 -0.10296 -0.098531 -0.094267 -0.090162 -0.086211 -0.08241 -0.078755 -0.075241 -0.071865 -0.068623 -0.065509 -0.062521 -0.059655 -0.056905 -0.056905 -0.05427 -0.051745 -0.049326 -0.047009 -0.044792 -0.04267 -0.0401 -0.0387 -0.036845 -0.035072 -0.033378 -5.5315e-010 -5.2754e-010 -5.0313e-010 -4.7985e-010 -4.5763e-010 -4.36e-010 -4.1626e-010 -3.9698e-010 -3.7862e-010 -3.6109e-010 -3.4436e-010 -3.2843e-010 -3.1323e-010 -2.9873e-010 -2.8491e-010 -2.7171e-010 -2.5913e-010 -2.4715e-010 -2.3571e-010 -2.2479e-010 -2.1439e-010 -2.0446e-010 -1.95e-010 -1.8597e-010 -1.7738e-010 -1.6918e-010 -1.6133e-010 -1.5386e-010 -1.4675e-010 -1.3996e-010];
t=[ 5.7406 1.5872 -1.5819 -3.3978 -4.1771 -4.5036 -4.75 -5.0459 -5.4062 -5.8125 -6.2426 -6.678 -7.1043 -7.5095 -7.8834 -8.21 -8.4991 -8.7221 -8.8761 -8.9522 -8.9427 -8.8412 -8.38 -8.3497 -7.9621 -7.4882 -6.9402 -6.3349 -5.693 -5.0382 -4.3953 -3.7881 -3.2373 -2.7579 -2.3583 -2.0396 -1.7966 -1.6195 -1.4958 -1.4128 -1.3584 -1.3226 -1.2977 -1.278 -1.2598 -1.2406 -1.2194 -1.1955 -1.169 -1.1401 -1.1092 -1.0767 -1.0431 -1.0088 -0.9741 -0.93938 -0.90487 -0.87078 -0.83727 -0.80447 -0.77246 -0.74132 -0.7111 -0.68183 -0.65351 -0.62617 -0.5998 -0.57439 -0.54992 -0.52639 -0.50378 -0.48205 -0.4612 -0.44119 -0.42201 -0.40362 -0.38601 -0.36914 -0.353 -0.33755 -0.32278 -0.30866 -0.29516 -0.28227 -0.26996 -0.25821 -0.24699 -0.23629 -0.22608 -0.21635 -0.20707 -0.19824 -0.182 -0.1818 -0.17416 -0.17416 -0.166 -0.15998 -0.15339 -0.14713 -0.14118 -0.13552 -0.13014 -0.12502 -0.12016 -0.11554 -0.11115 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145];
s1=4;s2=4;s3=1;
[R,Q]=size(p);
[S,Q]=size(t);5
w1=[-13.2406 -8.8883 1.2111 -2.1919;0.4954 0.20729 0.21402 0.10116;-0.34757 -0.13691 -0.15081 -0.07379;-0.39188 -0.15828 -0.1692 -0.079797];
b1=ones(4,137);%给输入层到隐层的阈值赋全一
[w2,b2]=rands(s3,s2);
b2=ones(1,137);%给隐层到输出层的阈值赋全一
n1=w1*p+b1;
a1=tansig(n1);%隐层的输出
n2=w2*a1+b2;
a2=purelin(n2);%输出层的输出
net = newff(minmax(p),[4,1],{'tansig' 'purelin'},'traingdx');% 创建一个新的前向神经网络
% 设置训练参数
net.trainParam.show= 25;
net.trainParam.epochs=17000;
net.trainParam.goal=0.001;
lr=0.1;
% 调用 TRAINGDX 算法训练 BP 网络
net = train(net,p,t);
% 对 BP 网络进行仿真
Y=sim(net,p);
% 计算仿真误差
E = t- Y;
MSE=mse(E)
plot(T,t,'r+');
grid on;
hold on
plot(T,Y);
grid on;
hold off;
pause
clc
p1=p(1,:);
p2=p(2,:);
p3=p(3,:);
p4=p(4,:);
plot(T,p1);
grid on;
pause
clc
plot(T,p2);
grid on;
pause
clc
plot(T,p3);
grid on;
pause
clc
plot(T,p4);
grid on;
pause
clc
plot(T,E);
4.粒子群优化神经网络源程序
k=[-0.7412 -8.09 677.93 1184.1];
global k;
w2=k;
a=0.729;%惯性权值
b1=1.494;%加速系数
b2=1.494;
fitness=5.7;
Number_Particle = 30;%粒子群个数
Dimension =4;%维数
Generation = 10;%代数
Max_Velocity = 10;%最大速度
Max_Swarm = 20;%最大位置
Disturb = 5;
%初始化
Swarm = Max_Swarm*(rand(Number_Particle, Dimension)-0.5);
Velocity = Max_Velocity*(rand(Number_Particle, Dimension)-0.5);
Local_Best_Particle = Swarm;
k = Swarm(1,:);
Global_Best_Particle = k;
Global_Best_Fitness =fitness;
%输入样本进行网络训练
T=1:1:137;
p=[ 0.32196 0.24591 0.16613 0.088155 0.0196 -0.04695 -0.10237 -0.15076 -0.19321 -0.23058 -0.26353 -0.29257 -0.31803 -0.34018 -0.35918 -0.37519 -0.38828 -0.39853 -0.40598 -0.41068 -0.41266 -0.41198 -0.4087 -0.4029 -0.39469 -0.38422 -0.37166 -0.35725 -0.34126 -0.324 -0.30582 -0.28709 -0.2682 -0.24951 -0.23138 -0.21408 -0.19785 -0.18282 -0.16908 -0.15662 -0.14542 -0.13539 -0.123 -0.11842 -0.11125 -0.1048 -0.0983 -0.093702 -0.088879 -0.084448 -0.080352 -0.076545 -0.072988 -0.0699 -0.066502 -0.063526 -0.060702 -0.058018 -0.055461 -0.053021 -0.0506 -0.04846 -0.046326 -0.044283 -0.042326 -0.040452 -0.038656 -0.036935 -0.035286 -0.033707 -0.032195 -0.030747 -0.02936 -0.028034 -0.0267 -0.02555 -0.0243 -0.02328 -0.02222 -0.021208 -0.020241 -0.019319 -0.018439 -0.017599 -0.016799 -0.016036 -0.015309 -0.014617 -0.013959 -0.013332 -0.012735 -0.012168 -0.011628 -0.011116 -0.010628 -0.010628 -0.010166 -0.0097265 -0.0093096 -0.00139 -0.0085385 -0.0081825 -0.0078449 -0.007525 -0.0072219 -0.0069347 -0.0066627 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299 -0.0020299;
-0.51781 -0.3674 -0.20883 -0.053316 0.090018 0.21728 0.32875 0.42639 0.51226 0.58808 0.65512 0.7143 0.76629 0.81155 0.85042 0.88311 0.90979 0.93056 0.9455 0.95468 0.95817 0.95606 0.94848 0.93561 0.91766 0.496 0.867 0.83691 0.8026 0.76561 0.72666 0.68651 0.597 0.6058 0.56669 0.52924 0.49392 0.46102 0.43071 0.40302 0.37787 0.35511 0.33453 0.31591 0.29903 0.28366 0.2696 0.25668 0.24474 0.23365 0.22329 0.21356 0.2044 0.19573 0.18751 0.17968 0.17221 0.16508 0.15826 0.15172 0.14546 0.13944 0.13367 0.12813 0.1228 0.11769 0.11278 0.10806 0.10352 0.099168 0.094987 0.090974 0.087122 0.083425 0.079879 0.0778 0.073217 0.070091 0.067096 0.0227 0.061479 0.058848 0.056329 0.05392 0.051615 0.04941 0.047303 0.0452 0.0433 0.041525 0.03977 0.038093 0.0393 0.034966 0.033509 0.033509 0.03212 0.030795 0.029532 0.028328 0.02718 0.026087 0.025046 0.024055 0.02311 0.022212 0.021356 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748 0.0050748;
-2.9024 -3.152 -3.192 -3.0144 -2.7059 -2.3718 -2.0688 -1.8102 -1.5912 -1.4028 -1.2371 -1.0879 -0.95071 -0.82207 -0.69957 -0.58143 -0.461 -0.35366 -0.24269 -0.13334 -0.025732 0.079713 0.1823 0.28105 0.37474 0.4619 0.54088 0.60993 0.66728 0.71133 0.74082 0.75502 0.75396 0.73848 0.71031 0.67184 0.62597 0.57567 0.52376 0.47261 0.42401 0.37915 0.33871 0.3029 0.271 0.24462 0.22143 0.20161 0.18468 0.1702 0.15777 0.14705 0.13773 0.12956 0.12234 0.11588 0.11006 0.10476 0.0991 0.095382 0.091176 0.087227 0.083499 0.079965 0.076601 0.0733 0.070316 0.067368 0.0537 0.061816 0.059197 0.056675 0.054247 0.051907 0.049653 0.047481 0.0453 0.043374 0.041434 0.039567 0.03777 0.036042 0.034381 0.032784 0.03125 0.029778 0.0283 0.027009 0.025709 0.024463 0.023269 0.022127 0.021033 0.019987 0.0187 0.0187 0.018032 0.017119 0.016247 0.015415 0.014622 0.013865 0.013143 0.012456 0.011802 0.011179 0.010586 1.0512e-010 1.0026e-010 9.5616e-011 9.1193e-011 8.6971e-011 8.2946e-011 7.9107e-011 7.5441e-011 7.1954e-011 6.862e-011 6.5437e-011 6.2412e-011 5.9522e-011 5.6766e-011 5.414e-011 5.163e-011 4.9239e-011 4.69e-011 4.4791e-011 4.2712e-011 4.0734e-011 3.8847e-011 3.705e-011 3.5335e-011 3.3705e-011 3.2149e-011 3.0654e-011 2.9233e-011 2.7884e-011 2.6593e-011;
5.7211 6.2514 6.35 6.0212 5.42 4.72 4.1677 3.6575 3.2241 2.8499 2.5192 2.2198 1.9425 1.6808 1.43 1.1866 0.94836 0.71371 0.4819 0.25282 0.026935 -0.19468 -0.41042 -0.61812 -0.81514 -0.9984 -1.15 -1.3097 -1.4307 -1.524 -1.5872 -1.619 -1.6193 -1.59 -1.5346 -1.458 -1.366 -1.27 -1.1598 -1.056 -0.95706 -0.86541 -0.7824 -0.70853 -0.366 -0.58721 -0.53837 -0.49624 -0.4599 -0.42846 -0.40115 -0.37727 -0.35623 -0.33754 -0.32077 -0.30558 -0.29171 -0.273 -0.26707 -0.25596 -0.24552 -0.235 -0.22625 -0.21729 -0.20872 -0.20051 -0.19261 -0.18502 -0.1777 -0.17065 -0.16385 -0.15728 -0.15094 -0.14482 -0.131 -0.13321 -0.1277 -0.12239 -0.11726 -0.11232 -0.10755 -0.10296 -0.098531 -0.094267 -0.090162 -0.086211 -0.08241 -0.078755 -0.075241 -0.071865 -0.068623 -0.065509 -0.062521 -0.059655 -0.056905 -0.056905 -0.05427 -0.051745 -0.049326 -0.047009 -0.044792 -0.04267 -0.0401 -0.0387 -0.036845 -0.035072 -0.033378 -5.5315e-010 -5.2754e-010 -5.0313e-010 -4.7985e-010 -4.5763e-010 -4.36e-010 -4.1626e-010 -3.9698e-010 -3.7862e-010 -3.6109e-010 -3.4436e-010 -3.2843e-010 -3.1323e-010 -2.9873e-010 -2.8491e-010 -2.7171e-010 -2.5913e-010 -2.4715e-010 -2.3571e-010 -2.2479e-010 -2.1439e-010 -2.0446e-010 -1.95e-010 -1.8597e-010 -1.7738e-010 -1.6918e-010 -1.6133e-010 -1.5386e-010 -1.4675e-010 -1.3996e-010];
t=[ 5.7406 1.5872 -1.5819 -3.3978 -4.1771 -4.5036 -4.75 -5.0459 -5.4062 -5.8125 -6.2426 -6.678 -7.1043 -7.5095 -7.8834 -8.21 -8.4991 -8.7221 -8.8761 -8.9522 -8.9427 -8.8412 -8.38 -8.3497 -7.9621 -7.4882 -6.9402 -6.3349 -5.693 -5.0382 -4.3953 -3.7881 -3.2373 -2.7579 -2.3583 -2.0396 -1.7966 -1.6195 -1.4958 -1.4128 -1.3584 -1.3226 -1.2977 -1.278 -1.2598 -1.2406 -1.2194 -1.1955 -1.169 -1.1401 -1.1092 -1.0767 -1.0431 -1.0088 -0.9741 -0.93938 -0.90487 -0.87078 -0.83727 -0.80447 -0.77246 -0.74132 -0.7111 -0.68183 -0.65351 -0.62617 -0.5998 -0.57439 -0.54992 -0.52639 -0.50378 -0.48205 -0.4612 -0.44119 -0.42201 -0.40362 -0.38601 -0.36914 -0.353 -0.33755 -0.32278 -0.30866 -0.29516 -0.28227 -0.26996 -0.25821 -0.24699 -0.23629 -0.22608 -0.21635 -0.20707 -0.19824 -0.182 -0.1818 -0.17416 -0.17416 -0.166 -0.15998 -0.15339 -0.14713 -0.14118 -0.13552 -0.13014 -0.12502 -0.12016 -0.11554 -0.11115 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145 -0.030145];
p1=p(1,:);
p2=p(2,:);
p3=p(3,:);
p4=p(4,:);
plot(T,p1);
grid on;
pause
clc
plot(T,p2);
pause
clc
plot(T,p3);
pause
clc
plot(T,p4);
pause
clc
net = newff(minmax(p),[4,1],{'tansig' 'purelin'},'traingd');
p1=p(1,:);
p2=p(2,:);
p3=p(3,:);
p4=p(4,:);
%各微粒的初始适应值
for i = 1:Number_Particle
k = Swarm(i,:);
%计算适应度
u1=abs(p1);
mq1=sum(u1)/i;
u2=abs(p2);
mq2=sum(u2)/i;
u3=abs(p3);
mdq1=sum(u3)/i;
u4=abs(p4);
mdq2=sum(u4)/i;
w1=net.iw{1,1};
w2=net.iw{2,1};
W1=[w1];
W=W1;
S=[ mq1 mq2 mdq1 mdq2]';
fb=W*S;
Fitness =fb;
Local_Best_Particle(i,:) = k;
Local_Best_Fitness(i) = fitness;
if Fitness < Global_Best_Fitness
Best_Fitness = Fitness;
Global_Best_Particle = k;
end
end
for i = 1:Generation
Local_temp = Local_Best_Particle;
Global_temp = Global_Best_Particle;
Local_Fitness = Local_Best_Fitness;
Global_Fitness = Global_Best_Fitness;
for j = 1:Number_Particle
k = Swarm(j,:);
Y=sim(net,p);
net = train(net,p,t);
q=i+j;
u1=abs(p1);
mq1=sum(u1)/q;
u2=abs(p2);
mq2=sum(u2)/q;
u3=abs(p3);
mdq1=sum(u3)/q;
u4=abs(p4);
mdq2=sum(u4)/q;
w1=net.iw{1,1};
w2=net.iw{2,1};
W1=[w1];
W=W1;
S=[ mq1 mq2 mdq1 mdq2]';
fb=W*S;
Fitness = fb(2,1);
if Fitness < Local_Best_Fitness(j)
Local_Best_Fitness(j) = fitness;
Local_Best_Particle(j,:) = k;
if Fitness < Global_Best_Fitness
Global_Best_Fitness = Fitness;
Global_Best_Particle = k;
end
end
%速度更新
Velocity(j,:) = a*Velocity(j,:)+b1*rand(1)*(Local_temp(j,:)-Swarm(j,:))+b2*rand(1)*(Global_temp(1:Dimension)-Swarm(j,:))+Disturb*(rand(1, Dimension)-0.5);
for m = 1:Dimension
if abs(Velocity(j, m)) > Max_Velocity
Velocity(j, m) = sign(Velocity(j, m))*Max_Velocity*rand(1);
end
%位置更新
Swarm(j, m) = Swarm(j, m)+Velocity(j, m);
if abs(Swarm(j, m)) > Max_Swarm
Swarm(j, m) = sign( Swarm(j, m))*Max_Swarm*rand(1);
end
end
end
Progress_Of_Fitness(i) = Global_Best_Fitness;
end
plot(Progress_Of_Fitness);
grid on;
pause
clc
plot(T,t,'r+');
grid on;
hold on
plot(T,Y);
hold off;
pause
clc
E = t- Y;
MSE=mse(E)
plot(T,E);
grid on;
pause
clc
plot(T,p1);
grid on;
pause
clc
plot(T,p2);
pause
clc
plot(T,p3);
pause
clc
plot(T,p4);
pause
clc