%编制人:adwjt
%编制时间:2022.5.22
%% 初始化
%表格数据读取
tic
clear all;
close all;
clc;
format long;
load_count=365;
dian_count=96;
load0=xlsread('zibo08.xls');
load=load0([1:load_count],[2:(dian_count+1)]);%因为quan.xls第一列增加了序号列
waiyin=load0([1:load_count],[(dian_count+2):(dian_count+5)]);%将外界因素存入矩阵waiyin
%%
%ad模型、ad_true模型
ad1=zeros(1,load_count*dian_count);
suiji=zeros(1,load_count*dian_count);%随机成分建模
i=0;
while i<load_count*dian_count
t_int=round(rand(1,1)*240+48);%数据组1的ad时间间隔t_int在[12,72]h,即[48,288]
i=i+t_int;%新的ad输入起点
if(i>=load_count*dian_count)
break;
end
%随机赋予v_ad正负号
a=normrnd(0,1);%0附近标准偏差是1
sign=a/abs(a);
v_ad=rand(1,1)*500+300;%ad幅值[300,800]kw
v_ad=v_ad*sign;
t_dur=round(rand(1,1)*12+4);%ad持续时间[1,4]h,即[4,16]
if((i+t_dur-1)>=load_count*dian_count)
break;
end
ad1(i:(i+t_dur-1))=v_ad;
b=zeros(1,t_dur);
suiji(1,i:(i+t_dur-1))=normrnd(b,5);%标准差是5,即方差为25
%能量反馈部分
v_ad_fan=-0.3*v_ad;%方向相反
t_dur_fan=round(0.5*t_dur);
if((i+t_dur+t_dur_fan-1)>=load_count*dian_count)
break;
end
ad1((i+t_dur):(i+t_dur+t_dur_fan-1))=v_ad_fan;
c=zeros(1,t_dur_fan);
suiji((i+t_dur):(i+t_dur+t_dur_fan-1))=normrnd(c,5);%标准差是5,即方差为25
end
figure(1)
plot(ad1(1:(28*96)))%【图1】ad图像
axis([0 28*96 -1000 1000]);
ad=reshape(ad1,dian_count,load_count);%reshape函数是按列排序
ad=ad';%ad模型建立完成
suiji=reshape(suiji,dian_count,load_count);
suiji=suiji';%随机成分模型建立完成
ad_true=ad+suiji;%ad_true模型建立完成
ad_true0=ad_true;%保留ad_true的数值在ad_true0中
load=load+ad_true;%带ad产品负荷完成
%%
%对全体数据进行归一化处理
load_max=max(max(load));
load_min=min(min(load));
load=(load-load_min)./(load_max-load_min);
%外因处理
waiyin=mapminmax(waiyin',0.1,0.9);
waiyin=waiyin';
ad_true=(ad_true-load_min)./(load_max-load_min);%有DR模型
%ad_true(:,:)=0;%无DR模型
%%
%训练样本处理
%选择训练起始天d_start,终止天d_end
d_start=108;d_end=117;%修改参数1
p_train=zeros(96*(d_end-d_start+1),34);%【改】输入元素数,每次训练数据占一行,每行有8个数据:a1,a2,a3,b1,b2,b3,c0,c1
t_train=zeros(96*(d_end-d_start+1),1);
k=0;%k是训练样本数
for i=d_start:1:d_end
for j=1:1:96
k=k+1;
if j==1
p_train(k,:)=[load(i-1,96),load(i,j),load(i,j+1),load(i,96),load(i+1,j),load(i+1,j+1),load(i+1,96),load(i+2,j),load(i+2,j+1),waiyin(i,1),waiyin(i,2),waiyin(i,3),waiyin(i,4),waiyin(i+1,1),waiyin(i+1,2),waiyin(i+1,3),waiyin(i+1,4),waiyin(i+2,1),waiyin(i+2,2),waiyin(i+2,3),waiyin(i+2,4),waiyin(i+3,1),waiyin(i+3,2),waiyin(i+3,3),waiyin(i+3,4),ad_true(i,95),ad_true(i,96),ad_true(i+1,j),ad_true(i+1,95),ad_true(i+1,96),ad_true(i+2,j),ad_true(i+2,95),ad_true(i+2,96),ad_true(i+3,j)];
elseif j==2
p_train(k,:)=[load(i,j-1),load(i,j),load(i,j+1),load(i+1,j-1),load(i+1,j),load(i+1,j+1),load(i+2,j-1),load(i+2,j),load(i+2,j+1),waiyin(i,1),waiyin(i,2),waiyin(i,3),waiyin(i,4),waiyin(i+1,1),waiyin(i+1,2),waiyin(i+1,3),waiyin(i+1,4),waiyin(i+2,1),waiyin(i+2,2),waiyin(i+2,3),waiyin(i+2,4),waiyin(i+3,1),waiyin(i+3,2),waiyin(i+3,3),waiyin(i+3,4),ad_true(i,96),ad_true(i+1,j-1),ad_true(i+1,j),ad_true(i+1,96),ad_true(i+2,j-1),ad_true(i+2,j),ad_true(i+2,96),ad_true(i+3,j-1),ad_true(i+3,j)];
elseif j==96
p_train(k,:)=[load(i,j-1),load(i,j),load(i+1,1),load(i+1,j-1),load(i+1,j),load(i+2,1),load(i+2,j-1),load(i+2,j),load(i+3,1),waiyin(i,1),waiyin(i,2),waiyin(i,3),waiyin(i,4),waiyin(i+1,1),waiyin(i+1,2),waiyin(i+1,3),waiyin(i+1,4),waiyin(i+2,1),waiyin(i+2,2),waiyin(i+2,3),waiyin(i+2,4),waiyin(i+3,1),waiyin(i+3,2),waiyin(i+3,3),waiyin(i+3,4),ad_true(i+1,j-2),ad_true(i+1,j-1),ad_true(i+1,j),ad_true(i+2,j-2),ad_true(i+2,j-1),ad_true(i+2,j),ad_true(i+3,j-2),ad_true(i+3,j-1),ad_true(i+3,j)];
else
p_train(k,:)=[load(i,j-1),load(i,j),load(i,j+1),load(i+1,j-1),load(i+1,j),load(i+1,j+1),load(i+2,j-1),load(i+2,j),load(i+2,j+1),waiyin(i,1),waiyin(i,2),waiyin(i,3),waiyin(i,4),waiyin(i+1,1),waiyin(i+1,2),waiyin(i+1,3),waiyin(i+1,4),waiyin(i+2,1),waiyin(i+2,2),waiyin(i+2,3),waiyin(i+2,4),waiyin(i+3,1),waiyin(i+3,2),waiyin(i+3,3),waiyin(i+3,4),ad_true(i+1,j-2),ad_true(i+1,j-1),ad_true(i+1,j),ad_true(i+2,j-2),ad_true(i+2,j-1),ad_true(i+2,j),ad_true(i+3,j-2),ad_true(i+3,j-1),ad_true(i+3,j)];
end
t_train(k)=load(i+3,j);
end
end
k
p_train=p_train';
t_train=t_train';
%预测处理,同时处理预测天的全天真实负荷值real_d
%要预测第d_test天,第h_test个负荷点
p_test=zeros(96,34);%【改】输入元素数
t_test=zeros(96,1);
k1=0;%k是预测负荷点的数量,此处取一天中94点(去首尾)
d_test=121;%要比d_end大4
for j1=1:1:96
k1=k1+1;
if j1==1
p_test(k1,:)=[load(d_test-4,96),load(d_test-3,j1),load(d_test-3,j1+1),load(d_test-3,96),load(d_test-2,j1),load(d_test-2,j1+1),load(d_test-2,96),load(d_test-1,j1),load(d_test-1,j1+1),waiyin(d_test-3,1),waiyin(d_test-3,2),waiyin(d_test-3,3),waiyin(d_test-3,4),waiyin(d_test-2,1),waiyin(d_test-2,2),waiyin(d_test-2,3),waiyin(d_test-2,4),waiyin(d_test-1,1),waiyin(d_test-1,2),waiyin(d_test-1,3),waiyin(d_test-1,4),waiyin(d_test,1),waiyin(d_test,2),waiyin(d_test,3),waiyin(d_test,4),ad_true(d_test-3,95),ad_true(d_test-3,96),ad_true(d_test-2,j1),ad_true(d_test-2,95),ad_true(d_test-2,96),ad_true(d_test-1,j1),ad_true(d_test-1,95),ad_true(d_test-1,96),ad_true(d_test,j1)];
elseif j1==2
p_test(k1,:)=[load(d_test-3,j1-1),load(d_test-3,j1),load(d_test-3,j1+1),load(d_test-2,j1-1),load(d_test-2,j1),load(d_test-2,j1+1),load(d_test-1,j1-1),load(d_test-1,j1),load(d_test-1,j1+1),waiyin(d_test-3,1),waiyin(d_test-3,2),waiyin(d_test-3,3),waiyin(d_test-3,4),waiyin(d_test-2,1),waiyin(d_test-2,2),waiyin(d_test-2,3),waiyin(d_test-2,4),waiyin(d_test-1,1),waiyin(d_test-1,2),waiyin(d_test-1,3),waiyin(d_test-1,4),waiyin(d_test,1),waiyin(d_test,2),waiyin(d_test,3),waiyin(d_test,4),ad_true(d_test-3,96),ad_true(d_test-2,j1-1),ad_true(d_test-2,j1),ad_true(d_test-2,96),ad_true(d_test-1,j1-1),ad_true(d_test-1,j1),ad_true(d_test-1,96),ad_true(d_test,j1-1),ad_true(d_test,j1)];
elseif j1==96
p_test(k1,:)=[load(d_test-3,j1-1),load(d_test-3,j1),load(d_test-2,1),load(d_test-2,j1-1),load(d_test-2,j1),load(d_test-1,1),load(d_test-1,j1-1),load(d_test-1,j1),load(d_test,1),waiyin(d_test-3,1),waiyin(d_test-3,2),waiyin(d_test-3,3),waiyin(d_test-3,4),waiyin(d_test-2,1),waiyin(d_test-2,2),waiyin(d_test-2,3),waiyin(d_test-2,4),waiyin(d_test-1,1),waiyin(d_test-1,2),waiyin(d_test-1,3),waiyin(d_test-1,4),waiyin(d_test,1),waiyin(d_test,2),waiyin(d_test,3),waiyin(d_test,4),ad_true(d_test-2,j1-2),ad_true(d_test-2,j1-1),ad_true(d_test-2,j1),ad_true(d_test-1,j1-2),ad_true(d_test-1,j1-1),ad_true(d_test-1,j1),ad_true(d_test,j1-2),ad_true(d_test,j1-1),ad_true(d_test,j1)];
else
p_test(k1,:)=[load(d_test-3,j1-1),load(d_test-3,j1),load(d_test-3,j1+1),load(d_test-2,j1-1),load(d_test-2,j1),load(d_test-2,j1+1),load(d_test-1,j1-1),load(d_test-1,j1),load(d_test-1,j1+1),waiyin(d_test-3,1),waiyin(d_test-3,2),waiyin(d_test-3,3),waiyin(d_test-3,4),waiyin(d_test-2,1),waiyin(d_test-2,2),waiyin(d_test-2,3),waiyin(d_test-2,4),waiyin(d_test-1,1),waiyin(d_test-1,2),waiyin(d_test-1,3),waiyin(d_test-1,4),waiyin(d_test,1),waiyin(d_test,2),waiyin(d_test,3),waiyin(d_test,4),ad_true(d_test-2,j1-2),ad_true(d_test-2,j1-1),ad_true(d_test-2,j1),ad_true(d_test-1,j1-2),ad_true(d_test-1,j1-1),ad_true(d_test-1,j1),ad_true(d_test,j
基于 RBF人工神经网络的电力系统短期负荷预测研究
需积分: 4 93 浏览量
2023-09-10
22:34:08
上传
评论 1
收藏 381KB RAR 举报
扬辰鑫
- 粉丝: 145
- 资源: 54