【两阶段鲁棒】计及需求响应的多能互补微网两阶段鲁棒优化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 下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通信触发流程

该示例方案主要介绍如何通过建立的Modbus或TCP通信来实现触发方案、协议解析、发送事件和以及响应配置等功能。 需求:使用Modbus通信触发指定流程运行。 搭建思路:在接收事件中使用协议组装,比较规则选择上升沿,当接收到的值从其…

【华为OD真题 Python】考古学家

文章目录 题目描述输入输出示例1输入输出说明示例2输入输出说明示例3输入输出说明备注实现代码题目描述 有一个考古学家发现一个石碑,但是很可惜࿰

知识图谱之汽车实战案例综述与前瞻分析

知识图谱的前置介绍 什么是知识图谱 知识图谱本质(Knowledge Graph)上是一种叫做语义网络(semantic network ) 的知识库,即具有有向图结构的一个知识库;图的结点代表实体(entity)或者概念(con…

大数据 Yarn - 资源调度框架

Hadoop主要是由三部分组成,除了前面我讲过的分布式文件系统HDFS、分布式计算框架MapReduce,还有一个是分布式集群资源调度框架Yarn。 但是Yarn并不是随Hadoop的推出一开始就有的,Yarn作为分布式集群的资源调度框架,它的出现伴随着…

Java Base64简单介绍

1. Base64工具 工具链接 2. Base64示例代码 public class Base64Demo {// 请注意,在处理二进制数据时(例如图片或文件),不需要将字节数组转换为字符串再进行编码或解码,// 可以直接对字节数组进行Base64操作。上述…

路由器01_工作原理

一、回顾交换机工作原理 交换机里面维护了一张MAC地址表,主要记录的是MAC地址和接口的对应关系。 交换机在初始状态下,MAC地址表是空的,当收到一个来自某接口的数据时,首先查看数据帧中的MAC地址表,对照自己的MAC地址…

在IDEA中使用git分支进行开发然后合并到Master分支,2022.1.x版本

在实际开发过程中,为了避免因为在开发中出现的问题以及方便发布版本,如果是多版本发布的情况相下,我们通常需要采用分支进行开发,这个时候,我们就需要了解git分支的相关知识点了,本篇博客也是博主在实际公司…

近5年的学习经历总结

2013年迈入工作,到今年2024年,是工作的11个年头。从C语言嵌入式方向进入IT行业,再到云计算行业;最初做了将近3年的嵌入式开发,从STM32单片机开发,到arm-linux驱动,再到学习Centos/redhat系统&am…

【MySQL】MySQL如何查询和筛选存储的JSON数据?

MySQL如何查询和筛选存储的JSON数据? 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的…

LCR 143. 子结构判断

代码与解析 这是我一开始的代码,只过了45/49个测试用例,在测试用例这过不了了,不知道为啥 输入: A [-2,1,-1] B [-2,1,1] 输出 true 预期结果 false /*** Definition for a binary tree node.* public class TreeNode {* int va…

2024 .1.7 Day05_Spark_HomeWork; Spark_SQL

目录 1. 简述Spark SQL与HIVE的对比 2. Spark SQL是什么? 3.代码题 需求1 直接基于DataFrame来处理,完成SparkSQL版的WordCount词频统计。DSL和SQL两种方式都要实现 4.创建Spark DataFrame的几种方式? 5. 创建得到DataFrame的方式有哪些,各自适用场景是怎么…

Nginx(十九) range请求-断点续传/多线程下载

range请求允许服务器只发送请求的一部分响应数据给客户端,通常对大文件传输时,用以实现断点续传、多线程下载等功能。若服务端响应信息头中包含字段 Accept-Ranges:bytes,则表示服务端支持范围请求,且节点范围的单位为字节&#x…

每周一算法:倍增法查找位置

倍增法 倍增法(Binary Lifting),顾名思义,就是利用“以翻倍的速度增长”的思想来解决问题的一类算法,它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。这个方法在很多算法中均有应用&#xf…

ServiceMesh

服务网格从总体架构上来讲比较简单,由一堆紧挨着各项服务的用户代理,外加一组任务管理流程组成。在服务网格中,代理被称为数据层或数据平面(Data Plane),管理流程被称为控制层或控制平面(Contro…

【IDEA】 解决在idea中连接 Mysql8.0,驱动无法下载问题

本篇继【idea】解决sprintboot项目创建遇到的问题2-CSDN博客 目录 一、Failed to download https://download.jetbrains.com/idea/jdbc-drivers/MySQL/8/LICENSE.txt:Remote host terminated the handshake 二、no dirver files provided com.mysql.cj.jdbc.Driver 三、Serv…

STM32F407ZGT6时钟源配置

1、26M外部时钟源 1、25M外部时钟源

计算机Java项目|基于SpringBoot+Vue的图书个性化推荐系统

项目编号:L-BS-GX-10 一,环境介绍 语言环境:Java: jdk1.8 数据库:Mysql: mysql5.7 应用服务器:Tomcat: tomcat8.5.31 开发工具:IDEA或eclipse 二,项目简介 图片管理系统是一个为学生和…

kotlin take 和 drop

kotlin take的作用 从头开始获取指定数量的元素 val numbers listOf("one", "two", "three", "four", "five", "six") // 取集合的4个集合 Log.d("take", numbers.take(3).toString()) // 打印结果[…

【linux学习】重定向

目录 重定向标准输出、标准输入和标准错误标准输出重定向标准错误重定向将标准输出和标准错误重定向到同一个文件处理不想要的输出标准输入重定向 管道过滤器uniq-报告或者忽略文件中重复的行wc-打印行数、字数和字节数grep-打印匹配行head/tail 打印文件的开头部分/结尾部分te…

基于PGPGPOOL-II部署PostgreSQL高可用环境

PGPOOL-II是一个位于PostgreSQL服务器和 PostgreSQL 数据库客户端之间的中间件,具有以下功能: 1. 连接池:PGPOOL-II可以保持已经连接到 PostgreSQL 服务器的连接,并在使用相同参数(例如:用户名、数据库、协议版本)连接进来时重用它们。这可以减少连接开销,并增加系统的…