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

2024-01-08 02:04

本文主要是介绍【两阶段鲁棒】计及需求响应的多能互补微网两阶段鲁棒优化matlab,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 主要内容

算例模型

目标函数

第一阶段

第二阶段

求解流程图

2 部分程序

3 程序结果

4 下载链接


主要内容

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

  • 算例模型

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

  • 目标函数

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

  • 第一阶段

  • 第二阶段

  • 求解流程图

部分程序

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:kloopyalmip('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

程序结果

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

4 下载链接

这篇关于【两阶段鲁棒】计及需求响应的多能互补微网两阶段鲁棒优化matlab的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581984

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

MySQL中慢SQL优化方法的完整指南

《MySQL中慢SQL优化方法的完整指南》当数据库响应时间超过500ms时,系统将面临三大灾难链式反应,所以本文将为大家介绍一下MySQL中慢SQL优化的常用方法,有需要的小伙伴可以了解下... 目录一、慢SQL的致命影响二、精准定位问题SQL1. 启用慢查询日志2. 诊断黄金三件套三、六大核心优化方案方案

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3