本程序主要参考trans期刊论文《A Two-layer Energy Management System for Microgrids with Hybrid Energy Storage considering Degradation Costs》,文中包含模型预测控制算法,微电网优化调度模型,储能优化调度和损耗成本模型,下面对文章和程序作简要介绍。
提出了一种由电池和超级电容器组成的混合ESS微电网双层预测能量管理系统。结合混合ESS在充电深度和寿命方面的退化成本,对电池和超级电容器的长期成本进行建模,并将其转化为与实时操作相关的短期成本。为了在最低运行成本下保持较高的系统鲁棒性,提出了一种分层调度模型来确定短时间范围内微电网的调度出力,其中上层EMS使总运行成本最小化,下层EMS消除了预测误差引起的波动。算例结果表明,不同类型的储能器可以在两个控制层用于多个决策目标。包含不同定价方案、预测范围长度和预测精度的场景也证明了所提出的EMS结构的有效性。
程序组成:程序文件包含多个文件夹,复现过程非常详细,注释清晰易于理解!
部分结果:
限于篇幅,还有部分结果没有列出!!
部分代码:
%% Start iteration: first layerfst.mpciter = 0; % Iteration index
while( fst.mpciter < fst.iter )
% Read data
fst.load = mpcdata.load(fst.mpciter+1:fst.mpciter+fst.horizon,:);
fst.PV = mpcdata.PV(fst.mpciter+1:fst.mpciter+fst.horizon,:);
fst.wind = mpcdata.wind(fst.mpciter+1:fst.mpciter+fst.horizon,:);
fst.price = mpcdata.price(fst.mpciter+1:fst.mpciter+fst.horizon,:);
% FIRST mpc calculation
for i = 1:1:snd.from_fst %take care the value of MPCITER
snd.load_all = [snd.load_all ; repmat(mpcdata.load(fst.mpciter+i),snd.iter,1)];snd.price_all = [snd.price_all;repmat(mpcdata.price(fst.mpciter+i), snd.iter,1)];
snd.u0_ref = [snd.u0_ref, repmat([ fst.u_dyn(:,i);0],1,snd.iter)]; % reference of variables in snd layer
while (snd.mpciter < snd.iter)% data changed in every 5 min
snd.PV = pv_5m_data_all(snd.mpciter+1+12*fst.mpciter, 1:12)';
snd.wind = wind_5m_data_all(snd.mpciter+1+12*fst.mpciter, 1:12)';
% data not changed in every 5 min
snd.load = snd.load_all(snd.mpciter+1:snd.mpciter+snd.horizon,:);
snd.price = snd.price_all(snd.mpciter+1:snd.mpciter+snd.horizon,:);
%SECOND mpc calculation
snd.f_dyn, snd.x_dyn, snd.u_dyn] = snd_mpc( snd, snd_output_data );
snd.u0 = shiftHorizon(snd.u_dyn); %Estimated control variables
snd.xmeasure = snd.x_dyn(2,:);snd.mpciter = snd.mpciter+1;
snd.x = [ snd.x; snd.x_dyn(1,:) ];snd.u = [ snd.u; snd.u_dyn(:,1)' ];
部分内容源自网络,侵权联系删除!
欢迎感兴趣的小伙伴点击文末阅读原文获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!
更多创新性预测及优化程序请点击公众号首页:《预测优化》|《综合能源》链接!