急!基于MATLAB的BP神经网络预测算法,预测短期电力负荷,算出来8%的误差是否可以了?
输入的数据:测试数据(比较时使用)P_test=[0.21230.12570.13430.20790.55790.57160.70590.71450.72050.7401...
输入的数据:
测试数据(比较时使用)P_test=[0.2123 0.1257 0.1343 0.2079 0.5579 0.5716 0.7059 0.7145 0.7205 0.7401 0.8019 0.8136 0.2317 0.3936 0]';
>> (12个输入数据)P=[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7105 0.6981 0.6821 0.6945 0.7549 0.8215 0.2415 0.3027 0;
0.2217 0.1581 0.1408 0.2304 0.5134 0.5312 0.6819 0.7125 0.7265 0.6847 0.7826 0.8325 0.2385 0.3125 0;
0.2525 0.1627 0.1507 0.2406 0.5502 0.5636 0.7051 0.7352 0.7459 0.7015 0.8064 0.8156 0.2216 0.2701 1;
0.2016 0.1105 0.1243 0.1978 0.5021 0.5232 0.6819 0.6952 0.7015 0.6825 0.7825 0.7895 0.2352 0.2506 0.5;
0.2115 0.1201 0.1312 0.2019 0.5332 0.5736 0.7029 0.7032 0.7189 0.7019 0.7965 0.8025 0.2542 0.3125 0;
0.2335 0.1322 0.1534 0.2214 0.5623 0.5827 0.7198 0.7276 0.7359 0.7506 0.8092 0.8221 0.2601 0.3198 0;
0.2368 0.1432 0.1653 0.2205 0.5823 0.5971 0.7136 0.7129 0.7263 0.7153 0.8091 0.8217 0.2579 0.3099 0;
0.2342 0.1368 0.1602 0.2131 0.5726 0.5822 0.7101 0.7098 0.7127 0.7121 0.7995 0.7126 0.2301 0.2867 0.5;
0.2113 0.1212 0.1305 0.1819 0.4952 0.5312 0.6886 0.6898 0.6999 0.7323 0.7721 0.7956 0.2234 0.2799 1;
0.2005 0.1121 0.1207 0.1605 0.4556 0.5022 0.6553 0.6673 0.6798 0.7023 0.7521 0.7756 0.2314 0.2977 0]';
(3个天气因素数据)T=[0.2217 0.1581 0.1408 0.2304 0.5134 0.5312 0.6819 0.7125 0.7265 0.6847 0.7826 0.8325;
0.2525 0.1627 0.1507 0.2406 0.5502 0.5636 0.7051 0.7352 0.7459 0.7015 0.8064 0.8156;
0.2016 0.1105 0.1243 0.1978 0.5021 0.5232 0.6819 0.6952 0.7015 0.6825 0.7825 0.7895;
0.2115 0.1201 0.1312 0.2019 0.5532 0.5736 0.7029 0.7032 0.7189 0.7019 0.7965 0.8025;
0.2335 0.1322 0.1534 0.2214 0.5623 0.5827 0.7198 0.7276 0.7359 0.7506 0.8092 0.8221;
0.2368 0.1432 0.1653 0.2205 0.5823 0.5971 0.7136 0.7129 0.7263 0.7153 0.8091 0.8217;
0.2342 0.7368 0.1602 0.2131 0.5726 0.5822 0.7101 0.7098 0.7127 0.7121 0.7995 0.8126;
0.2113 0.1212 0.1305 0.1819 0.4952 0.5312 0.6886 0.6898 0.6999 0.7323 0.7721 0.7956;
0.2005 0.1121 0.1207 0.1605 0.4556 0.5022 0.6552 0.6673 0.6798 0.7023 0.7521 0.7756;
0.2123 0.1257 0.1343 0.2079 0.5579 0.5716 0.7059 0.7145 0.7205 0.7401 0.8019 0.8136]';
输入的是一天12组数据(2小时一个数据)外加3个天气因素 展开
测试数据(比较时使用)P_test=[0.2123 0.1257 0.1343 0.2079 0.5579 0.5716 0.7059 0.7145 0.7205 0.7401 0.8019 0.8136 0.2317 0.3936 0]';
>> (12个输入数据)P=[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7105 0.6981 0.6821 0.6945 0.7549 0.8215 0.2415 0.3027 0;
0.2217 0.1581 0.1408 0.2304 0.5134 0.5312 0.6819 0.7125 0.7265 0.6847 0.7826 0.8325 0.2385 0.3125 0;
0.2525 0.1627 0.1507 0.2406 0.5502 0.5636 0.7051 0.7352 0.7459 0.7015 0.8064 0.8156 0.2216 0.2701 1;
0.2016 0.1105 0.1243 0.1978 0.5021 0.5232 0.6819 0.6952 0.7015 0.6825 0.7825 0.7895 0.2352 0.2506 0.5;
0.2115 0.1201 0.1312 0.2019 0.5332 0.5736 0.7029 0.7032 0.7189 0.7019 0.7965 0.8025 0.2542 0.3125 0;
0.2335 0.1322 0.1534 0.2214 0.5623 0.5827 0.7198 0.7276 0.7359 0.7506 0.8092 0.8221 0.2601 0.3198 0;
0.2368 0.1432 0.1653 0.2205 0.5823 0.5971 0.7136 0.7129 0.7263 0.7153 0.8091 0.8217 0.2579 0.3099 0;
0.2342 0.1368 0.1602 0.2131 0.5726 0.5822 0.7101 0.7098 0.7127 0.7121 0.7995 0.7126 0.2301 0.2867 0.5;
0.2113 0.1212 0.1305 0.1819 0.4952 0.5312 0.6886 0.6898 0.6999 0.7323 0.7721 0.7956 0.2234 0.2799 1;
0.2005 0.1121 0.1207 0.1605 0.4556 0.5022 0.6553 0.6673 0.6798 0.7023 0.7521 0.7756 0.2314 0.2977 0]';
(3个天气因素数据)T=[0.2217 0.1581 0.1408 0.2304 0.5134 0.5312 0.6819 0.7125 0.7265 0.6847 0.7826 0.8325;
0.2525 0.1627 0.1507 0.2406 0.5502 0.5636 0.7051 0.7352 0.7459 0.7015 0.8064 0.8156;
0.2016 0.1105 0.1243 0.1978 0.5021 0.5232 0.6819 0.6952 0.7015 0.6825 0.7825 0.7895;
0.2115 0.1201 0.1312 0.2019 0.5532 0.5736 0.7029 0.7032 0.7189 0.7019 0.7965 0.8025;
0.2335 0.1322 0.1534 0.2214 0.5623 0.5827 0.7198 0.7276 0.7359 0.7506 0.8092 0.8221;
0.2368 0.1432 0.1653 0.2205 0.5823 0.5971 0.7136 0.7129 0.7263 0.7153 0.8091 0.8217;
0.2342 0.7368 0.1602 0.2131 0.5726 0.5822 0.7101 0.7098 0.7127 0.7121 0.7995 0.8126;
0.2113 0.1212 0.1305 0.1819 0.4952 0.5312 0.6886 0.6898 0.6999 0.7323 0.7721 0.7956;
0.2005 0.1121 0.1207 0.1605 0.4556 0.5022 0.6552 0.6673 0.6798 0.7023 0.7521 0.7756;
0.2123 0.1257 0.1343 0.2079 0.5579 0.5716 0.7059 0.7145 0.7205 0.7401 0.8019 0.8136]';
输入的是一天12组数据(2小时一个数据)外加3个天气因素 展开
1个回答
展开全部
可以了,再给你个好一点的代码
clc
clear
load data
%% 数据累加作为网络输入
[n,m]=size(X);
for i=1:n
for j=1:m
y(i,j)=sum(X(1:i,j));
end
end
%% 网络参数初始化
a=0.3+rand(1)/4;
for k=1:(m-1)
b(k)=0.3+rand(1)/4;
end
%% 学习速率初始化
for k=1:(m-1)
u(k)=0.0015;
end
%% 权值阀值初始化
t=1;
w11=a;
w2(1,1)=-y(1,1);
for k=2:m
w2(k)=2*b(k-1)/a;
end
for k=1:m
w3(k)=1+exp(-a*t);
end
theta1=0;
for k=1:(m-1)
theta1=theta1+b(1,k)*y(1,(k+1))/a;
end
theta2=(1+exp(-a*t))*(theta1-y(1,1));
kk=1;
%% 循环迭代
for j=1:10
%循环迭代
E(j)=0;
for i=1:(n-6)
%% 网络输出计算
t=i;
%LB层输出
LB_b=1/(1+exp(-w11*t));
%LC层输出
LC_c(1,1)=LB_b*w2(1,1);
for k=2:m
LC_c(k)=y(i,k)*LB_b*w2(1,k);
end
%LD层输出
LD_d=0;
for k=1:m
LD_d=LD_d+w3(1,k)*LC_c(1,k);
end
%阀值
theta3=0;
for k=2:m
theta3=theta3+w2(1,k)*y(i,k)/2;
end
theta4=(1+exp(-w11*t))*(theta3-y(1,1));
%网络输出值
ym=LD_d-theta4;
yc(i)=ym;
%% 权值修正
error=ym-y(i,1); %计算误差
E(j)=E(j)+abs(error); %误差求和
%计算误差
for k=1:m
errorr(k)=error*(1+exp(-w11*t));
end
thetaE0=0;
for k=1:m
thetaE0=thetaE0+w2(1,k)*errorr(1,k);
end
thetaE=(1/(1+exp(-w11*t)))*(1-1/(1+exp(-w11*t)))*thetaE0;
%修改权值
for k=2:m
w2(1,k)=w2(1,k)-u(k-1)*errorr(1,k)*LB_b;
end
w11=w11+a*t*thetaE;
end
end
%画误差随进化次数变化趋势
figure(1)
plot(E)
title('训练误差','fontsize',12);
xlabel('进化次数','fontsize',12);
ylabel('误差','fontsize',12);
%print -dtiff -r600 28-3
%根据训出的神经网络进行预测
for i=(n-5):n
t=i;
LB_b=1/(1+exp(-w11*t)); %LB层输出
LC_c(1,1)=LB_b*w2(1,1); %LC层输出
for k=2:m
LC_c(1,k)=y(i,k)*LB_b*w2(1,k); %LC层输出
end
LD_d=0;
for k=1:m
LD_d=LD_d+w3(1,k)*LC_c(1,k); %LD层输出
end
theta5=0;
for k=2:m
theta5=theta5+w2(1,k)*y(i,k)/2;
end
theta6=(1+exp(-w11*t))*(theta5-y(1,1)); %阀值
ym=LD_d-theta6; %网络输出值
yc(i)=ym;
end
yc=yc*10;
y(:,1)=y(:,1);
%计算预测
for j=n:-1:2
ys(j)=(yc(j)-yc(j-1))/10;
end
figure(2)
plot(ys((n-5):n),'-*');
hold on
plot(X((n-5):n,1),'r:o');
legend('预测值','实际值')
title('灰色神经网络预测','fontsize',12)
xlabel('x','fontsize',12)
ylabel('y','fontsize',12)
clc
clear
load data
%% 数据累加作为网络输入
[n,m]=size(X);
for i=1:n
for j=1:m
y(i,j)=sum(X(1:i,j));
end
end
%% 网络参数初始化
a=0.3+rand(1)/4;
for k=1:(m-1)
b(k)=0.3+rand(1)/4;
end
%% 学习速率初始化
for k=1:(m-1)
u(k)=0.0015;
end
%% 权值阀值初始化
t=1;
w11=a;
w2(1,1)=-y(1,1);
for k=2:m
w2(k)=2*b(k-1)/a;
end
for k=1:m
w3(k)=1+exp(-a*t);
end
theta1=0;
for k=1:(m-1)
theta1=theta1+b(1,k)*y(1,(k+1))/a;
end
theta2=(1+exp(-a*t))*(theta1-y(1,1));
kk=1;
%% 循环迭代
for j=1:10
%循环迭代
E(j)=0;
for i=1:(n-6)
%% 网络输出计算
t=i;
%LB层输出
LB_b=1/(1+exp(-w11*t));
%LC层输出
LC_c(1,1)=LB_b*w2(1,1);
for k=2:m
LC_c(k)=y(i,k)*LB_b*w2(1,k);
end
%LD层输出
LD_d=0;
for k=1:m
LD_d=LD_d+w3(1,k)*LC_c(1,k);
end
%阀值
theta3=0;
for k=2:m
theta3=theta3+w2(1,k)*y(i,k)/2;
end
theta4=(1+exp(-w11*t))*(theta3-y(1,1));
%网络输出值
ym=LD_d-theta4;
yc(i)=ym;
%% 权值修正
error=ym-y(i,1); %计算误差
E(j)=E(j)+abs(error); %误差求和
%计算误差
for k=1:m
errorr(k)=error*(1+exp(-w11*t));
end
thetaE0=0;
for k=1:m
thetaE0=thetaE0+w2(1,k)*errorr(1,k);
end
thetaE=(1/(1+exp(-w11*t)))*(1-1/(1+exp(-w11*t)))*thetaE0;
%修改权值
for k=2:m
w2(1,k)=w2(1,k)-u(k-1)*errorr(1,k)*LB_b;
end
w11=w11+a*t*thetaE;
end
end
%画误差随进化次数变化趋势
figure(1)
plot(E)
title('训练误差','fontsize',12);
xlabel('进化次数','fontsize',12);
ylabel('误差','fontsize',12);
%print -dtiff -r600 28-3
%根据训出的神经网络进行预测
for i=(n-5):n
t=i;
LB_b=1/(1+exp(-w11*t)); %LB层输出
LC_c(1,1)=LB_b*w2(1,1); %LC层输出
for k=2:m
LC_c(1,k)=y(i,k)*LB_b*w2(1,k); %LC层输出
end
LD_d=0;
for k=1:m
LD_d=LD_d+w3(1,k)*LC_c(1,k); %LD层输出
end
theta5=0;
for k=2:m
theta5=theta5+w2(1,k)*y(i,k)/2;
end
theta6=(1+exp(-w11*t))*(theta5-y(1,1)); %阀值
ym=LD_d-theta6; %网络输出值
yc(i)=ym;
end
yc=yc*10;
y(:,1)=y(:,1);
%计算预测
for j=n:-1:2
ys(j)=(yc(j)-yc(j-1))/10;
end
figure(2)
plot(ys((n-5):n),'-*');
hold on
plot(X((n-5):n,1),'r:o');
legend('预测值','实际值')
title('灰色神经网络预测','fontsize',12)
xlabel('x','fontsize',12)
ylabel('y','fontsize',12)
更多追问追答
追问
是不是在edit train里面改代码?
追答
load data
数据存在data.mat文件中
第一列,是输出
后几列是影响因素
在matlab下运行就行了
或存到.m文件中运行
希卓
2024-10-17 广告
2024-10-17 广告
北京希卓信息技术有限公司是光纤传感测试服务解决方案提供商,拥有光纤光栅解调仪、分布式光纤传感两大核心产品,致力于向客户提供满足其需求的测试解决方案和服务。 希卓拥有专业的技术服务团队,经过多年的努力,希卓信息的业务覆盖了天然气、石油、铁路、...
点击进入详情页
本回答由希卓提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询