本程序参考硕士毕业论文《考虑预测误差不确定性的含风电机组组合研究》,文章建立了同时考虑时间-空间-条件相关性的模型以更准确的把握预测误差的随机波动特性。下面简要对文章和程序进行介绍。
推荐运行平台:MATLAB2019a及以上!
文章的主要创新点:
1)在预测误差分布特性及时空相关性研究的基础上,进 一步结合预测误差与风电出力水平间的条件相关性,推导出可同时表征时间-空间-条件的多重相关性的解析表达,建立了多重相关性的模型,从而达到可直接采样生成误差随机样本的目的。
2)提出一种考虑预测误差相关性的基于机会约束规划的机组组合模型,通过机会约束实现了预测误差多重相关性与含风电系统的机组组合决策的有效衔接。
3)提出一种两 阶段的区间优化机组组合模型。在机组组合模型中,考虑风电场预测误差的不确定性以及系统运行的约束,其中基于机会约束优化确定风功率区间,从而构建一种从风功率出力区间优化到机组组合优化的两阶段机组组合优化决策模型。通过基于分解的增加变量和约束算法(C&CG)的两阶段迭代求解策略了,最终给出最优的接纳区间及应对这个区间相应的机组组合方案。
程序结果:
部分程序:
%% 清空环境变量
clc
clear all;
%% 提取数据
data=xlsread('实验数据.xlsx',1);
%% 提取对应各段中点位置处的误差值
error_fenbu_1=[];
for i=1:size(data,1)
if data(i,3)>=220 && data(i,3)<=240
error_fenbu_1(i)=data(i,8);
else
error_fenbu_1(i)=0;
end
end
error_1=error_fenbu_1(find(error_fenbu_1~=0));
error_fenbu_2=[];
for i=1:size(data,1)
if data(i,3)>=670&&data(i,3)<=690;
error_fenbu_2(i)=data(i,8);
else error_fenbu_2(i)=0;
end
end
error_2=error_fenbu_2(find(error_fenbu_2~=0));
error_fenbu_3=[];
for i=1:size(data,1)
if data(i,3)>=1128 && data(i,3)<=1148;
error_fenbu_3(i)=data(i,8);
else error_fenbu_3(i)=0;
end
end
error_3=error_fenbu_3(find(error_fenbu_3~=0));
error_fenbu_4=[];
for i=1:size(data,1)
if data(i,3)>=1585&&data(i,3)<=1605;
error_fenbu_4(i)=data(i,8);
else error_fenbu_4(i)=0;
end
end
error_4=error_fenbu_4(find(error_fenbu_4~=0));
error_fenbu_5=[];
for i=1:size(data,1)
if data(i,3)>=2040&&data(i,3)<=2060;
error_fenbu_5(i)=data(i,8);
else error_fenbu_5(i)=0;
end
end
error_5=error_fenbu_5(find(error_fenbu_5~=0));
error_fenbu_6=[];
for i=1:size(data,1)
if data(i,3)>=2495 && data(i,3)<=2515;
error_fenbu_6(i)=data(i,8);
else error_fenbu_6(i)=0;
end
end
error_6=error_fenbu_6(find(error_fenbu_6~=0));
error_fenbu_7=[];
for i=1:size(data,1)
if data(i,3)>=2950&&data(i,3)<=2970;
error_fenbu_7(i)=data(i,8);
else error_fenbu_7(i)=0;
end
end
error_7=error_fenbu_7(find(error_fenbu_7~=0));
error_fenbu_8=[];
for i=1:size(data,1)
if data(i,3)>=3406 && data(i,3)<=3426;
error_fenbu_8(i)=data(i,8);
else error_fenbu_8(i)=0;
end
end
error_8=error_fenbu_8(find(error_fenbu_8~=0));
error_fenbu_9=[];
for i=1:size(data,1)
if data(i,3)>=3860&&data(i,3)<=3880;
error_fenbu_9(i)=data(i,8);
else error_fenbu_9(i)=0;
end
end
error_9=error_fenbu_9(find(error_fenbu_9~=0));
error_fenbu_10=[];
for i=1:size(data,1)
if data(i,3)>=4317&&data(i,3)<=4337;
error_fenbu_10(i)=data(i,8);
else error_fenbu_10(i)=0;
end
end
error_10=error_fenbu_10(find(error_fenbu_10~=0));
以上就是本次介绍的主要内容,欢迎感兴趣的小伙伴关注并后台留言获得完整版代码,小编会继续推送更有质量的学习资料、文章和程序代码!