前言
目前,尽管不断地追逐可再生能源全额消纳方式,大幅减小弃风弃光电量,但是若考虑风电、光伏发电的随机属性,全额消纳可能造成电网峰谷差、调峰难度及调峰调频等辅助服务费用的剧增,引起电网潜在运行风险。因此,如果在风光大发与负荷低谷重叠时段选择弃掉一部分的风光尖峰电力,不仅能够降低电网运行风险,而且有助于提升电网调度的灵活性和整体经济效益。若系统中配置了一定容量的储能,则能够在保证总体经济效益最大的前提下,提高系统对于可再生能源的消纳能力,实现最优弃风弃光率和弃电总量的双降,减小净负荷曲线的波动程度和电网的调峰难度,使火电机组出力更平稳。因此,研究考虑最优弃能率的风光火储联合发电系统的优化调度方法,对于实现风光的最经济消纳具有重要意义。
调峰过程及弃风弃光对电网调峰的影响
火电机组调峰过程及调峰成本模型
根据机组的出力状态,火电机组的调峰阶段通常可划分为基本调峰阶段和深度调峰阶段,而深度调峰阶段按照调峰深度和燃烧介质又可划分为投油深度调峰阶段和不投油深度调峰阶段,如下图所示。其中,Pmax为机组出力最大值,Pmin为基本调峰阶段机组出力最小值,Pn为不投油深度调峰阶段机组出力最小值,Pm为投油深度调峰阶段机组出力最小值。
合理弃风弃光对电网调峰的影响分析
下图为1天24h内风电和光伏出力曲线。由下图可知,风电出力随机性和波动性特征明显,在日间负荷高峰时段出力偏低,在凌晨和夜间这些时段出力较大,具有明显的反调峰特征。若风电全额并网消纳,将会增大受端电网净负荷峰谷差,增加火电机组的调峰成本。然而,光伏出力的特征则与风电完全相反,凌晨和夜间时段的光伏出力为零,而日间的光伏出力先增大后减小,在正午时段出力达到最大值。若光伏全额并网消纳,则会降低受端电网正午时段的净负荷及其峰谷差,从而降低电网调峰难度,增大火电机组调度的灵活性。
下图给出了不同情景下受端电网净负荷曲线及风光并网功率的变化情况。由图可知,由于风电和光伏在时间尺度上具有较为明显的互补特性,两者之和往往在一定范围内上下浮动。因此,风电和光伏两者同时全额并网消纳并不一定能够减小火电机组的调峰成本,实现电力系统的最优运行。若在某些时段弃掉一定比例的风光电力,尤其是低谷负荷时段,则会明显减小净负荷曲线的峰谷差和机组参与深度调峰的时段数。此外,由于储能可在低负荷时段充电,在峰荷时段放电,具有较好的能量时移特性,因此在消纳风光电力的同时,配置一定容量的储能可以进一步降低受端电网净负荷的峰谷差,使净负荷曲线更为平滑,从而进一步降低火电的调峰成本。
考虑最优弃能率的双层优化调度模型
程序以寻求各时段的最优弃风弃光率为切入点,并利用储能系统良好的能量时移特性,构建了考虑最优弃能率的风光火储联合系统双层优化调度模型,其结构如下图所示。
上层优化模型以受端电网净负荷方差最小为目标函数,在满足弃风弃光率约束及储能电站运行约束的基础上,对各时段的弃风弃光率及储能系统充放电功率进行优化,由此得出各时段最优风光并网功率及储能充放电功率。同时,将考虑最优弃能率的风光并网功率曲线及储能系统充放电功率曲线,传递至下层优化模型。
下层优化模型基于上层模型传递的最优风光并网功率曲线及储能系统充放电功率曲线,并结合净负荷曲线,以受端电网运行成本最小为目标对各时段火电机组出力进行优化。目标函数中同时考虑了多项成本,包括火电机组调峰成本、风电、光伏和储能电站运行成本、系统旋转备用成本、环境保护税、风光并网消纳及储能系统的环境收益,通过优化求解得出受端电网火电机组的最优出力及最小运行成本。
程序介绍
程序提出了一种考虑最优弃能率的分层优化调度策略,主要研究合理弃风弃光对电网调峰难度及整体经济性的影响。为此,首先分析了火电机组调峰过程及合理弃风弃光对电网调峰的影响;其次,综合考虑电网调峰难度及整体经济效益,提出了最优弃能率的约束模型,并构建了以电网净负荷方差最小为上层目标函数、电网运行成本最小为下层目标函数的双层优化调度模型,选取IEEE-30节点系统进行算例分析。程序中算例丰富,注释清晰,干货满满,创新性和可扩展性很高,足以撑起一篇高水平论文!下面对程序做简要介绍!
程序适用平台:Matlab+Yalmip+Gurobi
程序结果
部分程序
%% 定义决策变量 para2;
R_wt= sdpvar(1,24);R_pv = sdpvar(1,24);
P_c = sdpvar(1,24); P_d = sdpvar(1,24);
P_net= sdpvar(1,24); %净负荷
P_wt1=sdpvar(1,24);%并网风力发电
P_pv1=sdpvar(1,24);%并网光伏发电
%其他变量
Q_s = sdpvar(1,24); % 蓄电池剩余电量
% P_Gt1=sdpvar(1,24); % 燃气发电机1提供的功率
% P_Gt2=sdpvar(1,24); % 燃气发电机2提供的功率
%% 目标函数
P_net(t)=P_f(t)-(1-R_wt(t))*P_wt(t)-(1-R_pv(t))*P_pv(t)+...
h_c*P_c(t)-h_d*P_d(t);
sum=sum+P_f(t)-(1-R_wt(t))*P_wt(t)-(1-R_pv(t))*P_pv(t)+...
sum=sum./24;
%负荷平方差
objective=objective+((P_f(t)-(1-R_wt(t))*P_wt(t)-(1-R_pv(t))*P_pv(t)+...
h_c*P_c(t)-h_d*P_d(t))-sum).^2;objective=objective./24;
%% 约束条件
constraint=[constraint,0<=R_wt(t)<=1];
constraint=[constraint,0<=R_pv(t)<=1];
for t=1:24 %(6-1) 储能系统约束
constraint=[constraint, 40<=Q_s(t)<=360];
constraint=[constraint, Q_s(t)==Q_s_init+P_c(t)-P_d(t)];
constraint=[constraint, Q_s(t)-Q_s(t-1)-P_c(t)+P_d(t)==0];
% 其他不等式约束
constraint=[constraint, 0<=P_wt(t)<=400] ;
A=A+P_wt(t)*R_wt(t);B=B+P_pv(t)*R_pv(t);
C=C+P_wt(t);D=D+P_pv(t);
% 弃风弃光约束%储能系统充放电约束
for t=1:24 %(6-2) 蓄电池不等式约束
constraint=[constraint,0<=P_c(t)<=P_c_max];
% (6-3) 电池储能初始和最终状态相等约束
constraint = [constraint, Q_s_init-Q_s(24)==0 ];
%% 求解和显示
option = sdpsettings('verbose',1,'solver','gurobi');%调用gurobi求解器
optimize(constraint,objective,option)%Yalmip求解的命令
部分内容源自网络,侵权联系删除!
欢迎感兴趣的小伙伴关注并私信获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!