【两阶段鲁棒】计及需求响应的多能互补微网两阶段鲁棒优化matlab

目录

[1 主要内容](#1 主要内容)

算例模型

目标函数

第一阶段

第二阶段

求解流程图

[2 部分程序](#2 部分程序)

[3 程序结果](#3 程序结果)

[4 下载链接](#4 下载链接)


1 主要内容

该程序参考文献《多能互补微网两阶段鲁棒优化调度研究》,在考虑风光不确定集的基础上提出采用计及DR响应的多能互补微网两阶段鲁棒备用调度模型,深入研究电-气-冷-热联供型微网在充分运用新能源技术的效果,以期通过对系统鲁棒性分析实现多种能源设备的协同优化调度,有效应对多能互补微网系统的不确定性影响,同时提升系统的经济性和灵活性。

算例模型

建立含电转气的多能互补微网经济调度模型,以微网系统运行费用最低作为目标,考虑多能微网系统存在的冷热电能量平衡约束以及相关设备运行约束。

目标函数

通过建立多能互补微网日前-日内两阶段鲁棒优化模型,分析在系统风光不确定下的最佳经济调度方案,并考虑电网备用容量和IDR容量。日前阶段模型采用确定性调度,根据风电、光伏出力预测值,建立目标函数包括购售电成本、各类机组运行成本、备用成本以及IDR成本的调度模型,在该阶段充分考虑随机事件可能造成的影响而留有电网备用容量和IDR容量。日内阶段根据不确定集范围,调用备用资源确保多能微网系统安全稳定运行,该阶段通过对偶模型求解多能微网最恶劣运行场景,并将该结果反馈至日前阶段再次优化调度。经过两阶段的协同调度求解得到风光不确定性情况下的最佳优化结果,既保证了系统的安全性,又能得到最佳经济方案。

第一阶段

第二阶段

求解流程图

2 部分程序

复制代码
clc;clear all;
parameter;
Z=[ones(8,1);zeros(40,1);ones(8,1);zeros(40,1)];%不确定变量初始值
UB=inf;%初始上界
kloop=10;%循环次数
Z0=zeros(4*T,kloop);
for kl=1:kloop
    yalmip('clear');
    Z0(:,kl)=Z;%更新不确定变量
    MP;%运行第一阶段
    LB=F;%更新下界
    yalmip('clear');
    dualtest;%运行第二阶段
    UB=min(UB,LB-yita+F2);%更新上界
    cul(kl)=UB-LB;%判断是否收敛
end
%结果
figure;
plot(cul,'LineWidth',1)
xlabel('迭代次数');
ylabel('UB-LB');
grid on
%典型日电转气
figure;
yg2q=[x0_Pegin;x0_Pmrin;x0_Phin]';
bar(yg2q);
xlabel('调度时段/h');
ylabel('功率/kW');
legend('电解槽出力','甲烷反应器出力','储氢罐输入功率');
%冷热电耦合
x0_Phfch=eta_hfch.*x0_Phout;
x0_Phfce=eta_hfce.*x0_Phout;
x0_Pgth=eta_gth.*x0_Pgtin;
x0_Pgte=eta_gte.*x0_Pgtin;
x0_Pgb=eta_gb.*x0_Pgbin;
figure;
yh=[x0_Phfch;x0_Pgth;x0_Pgb]';
bar(yh);
hold on
plot(x0_Phfce,'r-','LineWidth',1);
plot(x0_Pgte,'m-','LineWidth',1);
plot(eta_ac.*x0_Pacin,'b-p','LineWidth',1);
xlabel('调度时段/h');
ylabel('功率/kW');
h4=legend('氢燃料电池热输出','燃气轮机热输出','燃气锅炉输出','氢燃料电池电输出','燃气轮机电输出','吸收式制冷机输出功率');
set(h4, 'Orientation', 'horizon')
% set(h1, 'Box', 'off')
set(h4, 'NumColumns',2);
ylim([0 5500]);
%电功率平衡
figure;
yef=[-x0_Pbtc;-x0_Pegin;-x0_Pecin;min(x0_Pex,0)]';
b1=bar(yef,'stack');
b1(1).FaceColor = [0.1 0.5 0.9];
b1(2).FaceColor = [0.9 0.1 0.5];
b1(3).FaceColor = [0.5 0.9 0.1];
hold on
yez=[x0_Pbtd;max(x0_Pex,0);x0_Pw;x0_Pv;eta_gte.*x0_Pgtin;eta_hfce.*x0_Phout]';
b2=bar(yez,'stack');
b2(1).FaceColor = [0.1 0.5 0.9];
b2(2).FaceColor = [0.5,0.3,0.5];
b2(3).FaceColor = [1,0.2,1];
b2(4).FaceColor = [1,0.6,0.1];
b2(5).FaceColor = [0.2,0.5,0.2];
b2(6).FaceColor = [0.3,0.8,0.8];
b3=plot(Pel,'r','LineWidth',1.5);
h2=legend([b1(2:4),b2(1:6),b3],'电解槽','电制冷机','向电网供应功率','蓄电池','从电网吸收功率','风机','光伏','燃气轮机电功率','氢燃料电池电功率','电负荷');
set(h2, 'Orientation', 'horizon')
% set(h1, 'Box', 'off')
set(h2, 'NumColumns',2);
xlabel('调度时段/h');
ylabel('功率/kW');
ylim([-10000 25000]);
%热功率平衡
figure;
yhf=-x0_Pbthc;
b3=bar(yhf,'stack');
b3(1).FaceColor = [0.1 0.5 0.9];
hold on
yhz=[x0_Pbthd;eta_eh.*x0_Pehin]';
b4=bar(yhz,'stack');
b4(1).FaceColor = [0.1 0.5 0.9];
b5=plot(Phl,'r','LineWidth',1.5);
legend([b4(1:2),b5],'储热','余热锅炉','热负荷');
xlabel('调度时段/h');
ylabel('功率/kW');
%冷功率平衡
figure;
ycf=-x0_Pbtcc;
b3=bar(ycf,'stack');
b3(1).FaceColor = [0.1 0.5 0.9];
hold on
ycz=[x0_Pbtcd;eta_ec.*x0_Pecin;eta_ac.*x0_Pacin]';
b4=bar(ycz,'stack');
b4(1).FaceColor = [0.1 0.5 0.9];
b5=plot(Pcl,'r','LineWidth',1.5);
legend([b4(1:3),b5],'储冷','电制冷机','吸收式制冷机','冷负荷');
% legend('冷负荷');
xlabel('调度时段/h');
ylabel('功率/kW');
ylim([-1000 8000]);
%负荷及风光预测值
figure;
plot(Pel,'b-o','LineWidth',1.5);
hold on
plot(Phl,'r-*','LineWidth',1.5);
plot(Pcl,'g-.','LineWidth',1.5);
plot(Pwt,'c->','LineWidth',1.5);
plot(Ppv,'m--','LineWidth',1.5);
legend('电负荷','热负荷','冷负荷','风电预测值','光伏预测值');
xlabel('调度时段/h');
ylabel('功率/kW');
%鲁棒优化后风电出力
figure;
plot(Pwt,'m-','LineWidth',1.5)
hold on
plot(Pwt+Pwp,'m--','LineWidth',1.5)
plot(Pwt-Pwm,'m--','LineWidth',1.5)
plot(x0s(73:96,1),'b-','LineWidth',1.5)
legend('风电预测值','风电上限','风电下限','最恶劣场景');
xlabel('调度时段/h');
ylabel('功率/kW');
%光伏
figure;
plot(Ppv,'m-','LineWidth',1.5)
hold on
plot(Ppv+Pvp,'m--','LineWidth',1.5)
plot(Ppv-Pvm,'m--','LineWidth',1.5)
plot(x0s(97:120,1),'b-','LineWidth',1.5)
legend('光伏预测值','光伏上限','光伏下限','最恶劣场景');
xlabel('调度时段/h');
ylabel('功率/kW');
%电价
figure;
stairs(Cph,'LineWidth',1.5)
xlabel('调度时段/h');
ylabel('电价(元/(kWh))');
grid on
%储氢罐容量
figure;
bar(x0_Phin,'stack');
hold on
bar(-x0_Phout,'stack');
ylabel('功率/kW');
yyaxis right
plot(x0_Wh,'r--','LineWidth',1.5)
ylabel('储氢罐容量/kWh');
legend('储存氢气','释放氢气','储氢容量')
xlabel('调度时段/h');
grid on
%储冷容量
figure;
bar(x0_Pbtcc,'stack');
hold on
bar(-x0_Pbtcd,'stack');
ylabel('功率/kW');
yyaxis right
plot(x0_Wbtc,'r--','LineWidth',1.5)
ylabel('储冷罐容量/kWh');
legend('储存冷能','释放冷能','储冷容量')
xlabel('调度时段/h');
grid on
%储热容量
figure;
bar(x0_Pbthc,'stack');
hold on
bar(-x0_Pbthd,'stack');
ylabel('功率/kW');
yyaxis right
plot(x0_Wbth,'r--','LineWidth',1.5)
ylabel('储热罐容量/kWh');
legend('储存热能','释放热能','储热容量')
xlabel('调度时段/h');
grid on
%蓄电池容量
figure;
bar(x0_Pbtc,'stack');
hold on
bar(-x0_Pbtd,'stack');
ylabel('功率/kW');
yyaxis right
plot(x0_Wbt,'r--','LineWidth',1.5)
ylabel('蓄电池容量/kWh');
legend('储存电能','释放电能','蓄电池容量')
xlabel('调度时段/h');
grid on

3 程序结果

含保守度的迭代末次风电最恶劣场景图,在两阶段鲁棒优化过程中,随着主子问题迭代,二阶段可再生能源的最恶劣场景也会随之变化,将这些最恶劣场景叠加到一阶段进行综合优化求解,因此遇到有最恶劣场景图的可以注意一下,程序内部是不是实现了叠加循环。

4 下载链接

相关推荐
rit84324992 小时前
有限元法求转子临界转速的MATLAB实现
开发语言·matlab
Matlab程序设计与单片机3 小时前
【机器人最短路径规划】基于标准蚁群算法
matlab·蚁群算法·路径规划问题
Marye_爱吃樱桃3 小时前
MATLAB R2024b的安装、简单设置——保姆级教程
开发语言·matlab
IT猿手15 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
Evand J20 小时前
【MATLAB复现RRT(快速随机树)算法】用于二维平面上的无人车路径规划与避障,含性能分析与可视化
算法·matlab·平面·无人车·rrt·避障
s090713620 小时前
【声纳成像】基于滑动子孔径与加权拼接的条带式多子阵SAS连续成像(MATLAB仿真)
开发语言·算法·matlab·合成孔径声呐·后向投影算法·条带拼接
IT猿手1 天前
基于 ZOH 离散化与增量 PID 的四旋翼无人机轨迹跟踪控制研究,MATLAB代码
开发语言·算法·matlab·无人机·动态路径规划·openclaw
IT猿手1 天前
基于控制障碍函数(Control Barrier Function, CBF)的无人机编队三维动态避障路径规划,MATLAB代码
开发语言·matlab·无人机·动态路径规划·无人机编队
SugarFreeOixi1 天前
MATLAB绘图风格记录NP类型
python·matlab·numpy
IT猿手1 天前
基于 CBF 的多无人机编队动态避障路径规划研究,无人机及障碍物数量可以自定义修改,MATLAB代码
开发语言·matlab·无人机·动态路径规划