%晴天预测
clc;
clear;
%clear;
close all;
ptrain =
Columns 1 through 8
93.6908 115.1887 22.5978 96.1906 101.7901 101.1901 62.3939 5.7994
138.1865 212.8792 49.3952 204.3800 190.7814 189.0815 179.5825 15.3985
268.6737 338.6669 70.9931 293.0714 267.7738 297.6709 265.4741 23.0977
366.7642 379.9629 37.2964 384.9624 365.7643 367.7641 326.1681 34.3966
377.3631 400.2609 70.7931 427.6582 383.4625 407.2602 358.1650 56.0945
434.5576 392.3617 61.1940 443.6566 411.5598 417.1592 354.0654 69.6932
420.7589 380.2628 138.2865 429.2581 408.2601 422.4587 383.7625 93.0909
358.8649 374.5634 152.8851 397.5612 372.8636 410.5599 359.7649 26.5974
258.8747 317.2690 123.2880 302.3705 297.8709 386.5622 289.0717 20.4980
97.4905 224.7780 208.7796 211.7793 54.6947 176.2828 222.2783 18.3982
57.1944 86.6915 86.4915 67.6934 67.2934 97.2905 93.2909 15.3000
9.6000 11.5000 3.4000 11.5000 9.6000 11.5000 9.6000 1.0000
11.5000 3.4000 11.5000 9.6000 11.5000 9.6000 1.0000 9.6000
Columns 9 through 14
82.5600 12.1500 119.6883 118.5884 114.6888 123.8879
211.8793 14.3000 244.8761 177.1827 234.4771 188.5816
341.6666 76.4925 348.0660 311.9695 327.5680 312.0695
414.3595 113.5889 420.6589 281.6725 399.5610 405.0604
442.5568 115.7887 445.6565 410.3599 429.4580 458.1552
430.1580 144.0859 468.2542 445.4565 426.3583 454.2556
427.9582 158.1845 458.0552 336.7671 431.3578 466.0545
382.1627 131.0872 409.5600 203.2801 187.4817 398.1611
305.4702 102.7900 344.6663 166.8837 204.0801 338.8669
206.8798 51.2950 240.0765 92.1910 248.0758 212.1793
75.4926 40.9960 106.5896 56.4945 100.3902 35.0966
11.5000 3.4000 11.5000 9.6000 11.5000 11.5000
3.4000 11.5000 9.6000 11.5000 11.5000 11.5000
ttrain =
Columns 1 through 8
115.1887 22.5978 96.1906 101.7901 101.1901 62.3939 5.7994 82.5600
212.8792 49.3952 204.3800 190.7814 189.0815 179.5825 15.3985 211.8793
338.6669 70.9931 293.0714 267.7738 297.6709 265.4741 23.0977 341.6666
379.9629 37.2964 384.9624 365.7643 367.7641 326.1681 34.3966 414.3595
400.2609 70.7931 427.6582 383.4625 407.2602 358.1650 56.0945 442.5568
392.3617 61.1940 443.6566 411.5598 417.1592 354.0654 69.6932 430.1580
380.2628 138.2865 429.2581 408.2601 422.4587 383.7625 93.0909 427.9582
374.5634 152.8851 397.5612 372.8636 410.5599 359.7649 26.5974 382.1627
317.2690 123.2880 302.3705 297.8709 386.5622 289.0717 20.4980 305.4702
224.7780 208.7796 211.7793 54.6947 176.2828 222.2783 18.3982 206.8798
86.6915 86.4915 67.6934 67.2934 97.2905 93.2909 15.3000 75.4926
Columns 9 through 14
12.1500 119.6883 118.5884 114.6888 123.8879 115.2887
14.3000 244.8761 177.1827 234.4771 188.5816 239.3766
76.4925 348.0660 311.9695 327.5680 312.0695 321.2686
113.5889 420.6589 281.6725 399.5610 405.0604 391.0618
115.7887 445.6565 410.3599 429.4580 458.1552 430.3579
144.0859 468.2542 445.4565 426.3583 454.2556 409.6600
158.1845 458.0552 336.7671 431.3578 466.0545 435.5574
131.0872 409.5600 203.2801 187.4817 398.1611 408.5601
102.7900 344.6663 166.8837 204.0801 338.8669 400.7867
51.2950 240.0765 92.1910 248.0758 212.1793 282.7724
40.9960 106.5896 56.4945 100.3902 35.0966 160.5843
tsx = ptrain';
ts = ttrain';
[r,q]=size(tsx);%r=13,q=8
[TSX,TSXps] = mapminmax(tsx,0,1);%对样本输入数据归一化
PTR = TSX';%归一化后的输入
[TS,TSps] = mapminmax(ts,0,1);%对样本输出数据归一化,对每一行进行归一化
TTR = TS';%归一化后的输出
%建立BP模型
net_duoyun=newff(minmax(PTR),[13,11],{'tansig','logsig'},'trainlm');
% 设置训练参数
%隐层数的确定有几个经验公式,也可以用试算法
net_duoyun.trainParam.show = 50;
net_duoyun.trainParam.lr = 0.05;
net_duoyun.trainParam.mc = 0.95;
net_duoyun.trainParam.epochs =50000;
net_duoyun.trainParam.min_grad=1e-16;
net_duoyun.trainParam.goal = 1e-5;
%训练模型
[net_duoyun,tr]=train(net_duoyun,PTR,TTR);
%计算均方误差
Yn=sim(net_duoyun,PTR);
Yn=Yn';
E=Yn-TS;
M = sse(E)
N = mse(E)
Y=mapminmax('reverse',Yn,TSps);
%测试数据
%测试输入
ptest =
115.2887
239.3766
321.2686
391.0618
430.3579
409.6600
435.5574
408.5601
400.7867
282.7724
160.5843
11.5000
9.6000
%测试输出
ttest =
90.9911
177.9826
196.3808
192.5812
173.2831
290.0717
190.4814
402.0607
154.5849
166.6837
76.5925
Ts = ttest';%测试输出
Tsx = ptest';%测试输入
[TT,TTps] = mapminmax(Ts,0,1);
%{
[TT,TTps] = mapminmax(Ts,0,1);
TTE = TT;
%}
[TTX,TTXps] = mapminmax(Tsx,0,1);%对仿真输入数据归一化
PTE = TTX';
%进行预测
out=sim(net_duoyun,PTE);
%反归一化
out=out';
predict=mapminmax('reverse',out,TTps);
predict=predict'
ttest
error=ttest-predict
mape=mean(abs(error./ttest*100))
%绘图
figure(1)
hold on;
x=1:11;
grid on;
plot(ttest,'-o');
hold on;
plot(predict,'r-^');
legend('实际功率','预测功率');
xlabel('时间','fontsize',12)
ylabel('输出功率/KW','fontsize',12)
set(gca,'xtick',[]);
set(gca,'xtick',x);
set(gca,'xticklabel',{'8:00','9:00','10:00','11:00','12:00','13:00','14:00','15:00','16:00','17:00','18:00'});