【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(MatlabPython代码)

news2024/11/28 14:35:18

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python代码、数据、文章


💥1 概述

文献来源:

摘要本文提出了一种考虑冷、热、电多能负荷不确定性的区域综合能源系统鲁棒规划方法。基于改进的能源枢纽(EH)模型,建立了包括热电联产、电锅炉、燃气锅炉、电冷水机组、吸收式冷水机组、蓄电池、蓄热、冷库在内的区域综合能源系统模型。另外,引入0-1设备选择变量,对各设备的容量进行选择和优化。采用多面体集描述多能负荷的不确定性,建立鲁棒规划模型并进行等效转换。最后,通过MATLAB编程实现了容量规划模型,并利用CPLEX求解最优配置。结果表明,系统规划的稳健性可以通过鲁棒性措施来控制,最优规划能够保证系统的可靠性和经济性。这也体现了IES的多能互补集成优化效益。

关键词:综合能源系统;多能互补;不确定性

原文摘要:

Abstract—In this paper, we propose a robust planning method for regional integrated energy systems(IES) considering the uncertainty of cold, hot and electric multi-energy loads. Based on the improved energy hub (EH) model, we established a regional integrated energy system model, which includes CHP, electric boilers, gas boilers, electric chiller, absorption chiller, battery, thermal storage and cold storage. In addition, 0-1 variable of equipment selection is introduced to select and optimize the capacity of each equipment. The polyhedron set is used to describe the uncertainty of multi-energy load, and a robust planning model is formed and equivalent transformed. Finally, the capacity planning model is realized by programming in MATLAB, and the optimal configuration is solved by CPLEX. The result shows that the conservatism of system planning can be controlled by robust measure, and the optimal plan can guarantee reliability and economy of the system at the same time. It also reflects the multi energy complementary integration optimization benefits of IES. 
Keywords—Integrated energy system, multi energy complementary, uncertainty, robust planning 

IES的结构可分为三个主要部分:能量供应、能量转换和能量储存。每个部分由特定的能量耦合设备组成,并连接成一个整体。IES规划模型可以用图1所示的结构来描述。

 可以看到,IES与电网、燃气网和冷热网相连。它将电能、燃气和可再生能源等能源形式转化为电能、冷能和热能。由计划决定的能量流部分用虚线表示。供能部分包括光伏发电装置和电网。能量转换部分包括热电联产、燃气锅炉、电锅炉、吸收式冷水机组和电冷水机组。储能部分包括蓄电池、蓄热和冷库。这些设备的类型需要规划,不同类型的设备在容量、成本和转换效率上存在差异。

📚2 运行结果

 

Python 部分代码:

print('目标函数构建完成!')

print('优化计算求解中!')
# 问题选用Pulp选择的Solver进行求解
prob.solve(GUROBI()) # 目前用GLPK()求解大概要7 min+, 如果用CPLEX() 和 GUROBI() 会快很多

# 输出求解结果
for v in prob.variables():
    print(v.name, "=", v.varValue)
    # v.evaluate()
    # np.savetxt(v.name,v.values,fmt='%.4e',delimiter=',')
print("Total Cost = ", value(prob.objective))

# 保存机组选型优化结果 到 X.values 里,是一个ndarray
X_CCHP.evaluate()
X_GB.evaluate()
X_AC.evaluate()
X_EB.evaluate()
X_SUB.evaluate()

# 保存机组耗电耗气连续变量优化结果 到 X.values 里,是一个ndarray
P_CCHP_gas.evaluate()   # CCHP单位时间内所用燃气热值,单位是MW(应该修改成kw比较合适)
V_CCHP_gas.evaluate()    # CCHP单位时间内所用燃气量,单位是m3/h
P_SUB_electricity.evaluate()     # 变电站出力,单位是MW
P_GB_gas.evaluate()        # GB单位时间内所用燃气热值,单位是MW
V_GB_gas.evaluate()        # GB单位时间内所用燃气量,单位是m3/h
P_AC_electricity.evaluate() # 中央空调输入电出力,单位MW
P_EB_electricity.evaluate() # 电锅炉输入电能,单位MW
print('目标函数构建完成!')

print('优化计算求解中!')
# 问题选用Pulp选择的Solver进行求解
prob.solve(GUROBI()) # 目前用GLPK()求解大概要7 min+, 如果用CPLEX() 和 GUROBI() 会快很多

# 输出求解结果
for v in prob.variables():
    print(v.name, "=", v.varValue)
    # v.evaluate()
    # np.savetxt(v.name,v.values,fmt='%.4e',delimiter=',')
print("Total Cost = ", value(prob.objective))

# 保存机组选型优化结果 到 X.values 里,是一个ndarray
X_CCHP.evaluate()
X_GB.evaluate()
X_AC.evaluate()
X_EB.evaluate()
X_SUB.evaluate()

# 保存机组耗电耗气连续变量优化结果 到 X.values 里,是一个ndarray
P_CCHP_gas.evaluate()   # CCHP单位时间内所用燃气热值,单位是MW(应该修改成kw比较合适)
V_CCHP_gas.evaluate()    # CCHP单位时间内所用燃气量,单位是m3/h
P_SUB_electricity.evaluate()     # 变电站出力,单位是MW
P_GB_gas.evaluate()        # GB单位时间内所用燃气热值,单位是MW
V_GB_gas.evaluate()        # GB单位时间内所用燃气量,单位是m3/h
P_AC_electricity.evaluate() # 中央空调输入电出力,单位MW
P_EB_electricity.evaluate() # 电锅炉输入电能,单位MW

Matlab部分代码:

%% 模型变量声明
%0-1机组建设决策变量
X_CCHP=binvar(1,CCHP_types,'full');
X_GB=binvar(1,GB_types,'full');
X_AC=binvar(1,AC_types,'full');
X_EB=binvar(1,EB_types,'full');
X_SUB=binvar(1,SUB_types,'full');
%机组耗电耗气连续变量
P_CCHP_gas=sdpvar(Load_scene,CCHP_types,'full');    %CCHP单位时间内所用燃气热值,单位是MW(应该修改成kw比较合???)
V_CCHP_gas=sdpvar(Load_scene,CCHP_types,'full');    %CCHP单位时间内所用燃气量,单位是m3/h
P_SUB_electricity=sdpvar(Load_scene,SUB_types,'full');      %变电站出力,单位是MW
P_GB_gas=sdpvar(Load_scene,GB_types,'full');        %GB(燃气锅炉)单位时间内所用燃气热值,单位是MW
V_GB_gas=sdpvar(Load_scene,GB_types,'full');        %GB单位时间内所用燃气量,单位是m3/h
P_AC_electricity=sdpvar(Load_scene,AC_types,'full'); %中央空调输入电出力,单位MW
P_EB_electricity=sdpvar(Load_scene,EB_types,'full');%电锅炉输入电能,单位MW
%% 约束条件
Constraints=[];   
%%
Cons_PL=[];
P=sdpvar(SUB_types+CCHP_types+GB_types+AC_types+EB_types,Load_scene,'full');
for t=1:Load_scene  %P为输入矩阵
    Cons_PL=[ Cons_PL,P(:,t)==[P_SUB_electricity(t,:)';P_CCHP_gas(t,:)';P_GB_gas(t,:)';P_AC_electricity(t,:)';P_EB_electricity(t,:)']];%注意这里是等号==
end

L=sdpvar(3,Load_scene,'full');  %L为输出矩阵
for t=1:Load_scene  %8个典型日的电、气、热
    Cons_PL=[Cons_PL,L(:,t)==[Load_E(t)+sum(P_AC_electricity(t,:),2)+sum(P_EB_electricity(t,:),2);Load_C(t);Load_H(t)]];
end
Constraints=[Constraints,Cons_PL];
%==============负荷平衡,公式5================

%% 模型变量声明
%0-1机组建设决策变量
X_CCHP=binvar(1,CCHP_types,'full');
X_GB=binvar(1,GB_types,'full');
X_AC=binvar(1,AC_types,'full');
X_EB=binvar(1,EB_types,'full');
X_SUB=binvar(1,SUB_types,'full');
%机组耗电耗气连续变量
P_CCHP_gas=sdpvar(Load_scene,CCHP_types,'full');    %CCHP单位时间内所用燃气热值,单位是MW(应该修改成kw比较合???)
V_CCHP_gas=sdpvar(Load_scene,CCHP_types,'full');    %CCHP单位时间内所用燃气量,单位是m3/h
P_SUB_electricity=sdpvar(Load_scene,SUB_types,'full');      %变电站出力,单位是MW
P_GB_gas=sdpvar(Load_scene,GB_types,'full');        %GB(燃气锅炉)单位时间内所用燃气热值,单位是MW
V_GB_gas=sdpvar(Load_scene,GB_types,'full');        %GB单位时间内所用燃气量,单位是m3/h
P_AC_electricity=sdpvar(Load_scene,AC_types,'full'); %中央空调输入电出力,单位MW
P_EB_electricity=sdpvar(Load_scene,EB_types,'full');%电锅炉输入电能,单位MW
%% 约束条件
Constraints=[];   
%%
Cons_PL=[];
P=sdpvar(SUB_types+CCHP_types+GB_types+AC_types+EB_types,Load_scene,'full');
for t=1:Load_scene  %P为输入矩阵
    Cons_PL=[ Cons_PL,P(:,t)==[P_SUB_electricity(t,:)';P_CCHP_gas(t,:)';P_GB_gas(t,:)';P_AC_electricity(t,:)';P_EB_electricity(t,:)']];%注意这里是等号==
end

L=sdpvar(3,Load_scene,'full');  %L为输出矩阵
for t=1:Load_scene  %8个典型日的电、气、热
    Cons_PL=[Cons_PL,L(:,t)==[Load_E(t)+sum(P_AC_electricity(t,:),2)+sum(P_EB_electricity(t,:),2);Load_C(t);Load_H(t)]];
end
Constraints=[Constraints,Cons_PL];
%==============负荷平衡,公式5================

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Python代码、数据、文章

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

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

相关文章

寅家科技完成近亿元B1轮融资,加速高阶智能驾驶布局

近日,寅家科技宣布完成近亿元人民币B1轮融资,本轮融资由东方富海、深创投、深圳高新投联合投资,所募资金主要用于公司高阶智能驾驶技术产品的研发迭代,以及智能驾驶产品量产、海外市场开拓,从而进一步提升核心产品的市…

Solow模型推导模拟

Solow模型推导模拟 文章目录 Solow模型推导模拟[toc]1 Solow模型推导2 Solow模型模拟 1 Solow模型推导 在存在资本折旧、技术进步和人口增长条件下,有效劳动人均资本为 k ˙ ( t ) K ˙ ( t ) A ( t ) L ( t ) − K ( t ) [ A ( t ) L ( t ) ] 2 [ A ( t ) L ˙ …

腾讯云网站备案流程步骤、备案审核通过时间详细说明

腾讯云网站备案流程先填写基础信息、主体信息和网站信息,然后提交备案后等待腾讯云初审,初审通过后进行短信核验,最后等待各省管局审核,前面腾讯云初审时间1到2天左右,最长时间是等待管局审核时间,网站备案…

css新手引导实现方式总结

新手引导功能一般都是用一个半透明的黑色进行遮罩,蒙层上方对界面进行高亮,旁边配以弹窗进行讲解,样式如下 但是由于交互不同,实现方案也不一样,下面就针对不用的交互,总结了不同的实现方法(下文…

路由和寻址的区别

如果说传输层协议,除了 TCP/UDP,我们还可以有其他选择,比如 Google 开发的 QUIC 协议,帮助在传输层支持 HTTP 3.0 传输。但是在网络层,IP 协议几乎一统天下。IP 协议目前主要有两个版本 IPv4 和 IPv6。 根据 Google 统…

开发者一定要知道的 API 管理五大趋势

API First 大势所趋,APIaaS(API 作为服务)也将受到越来越多企业和组织的选择,研发团队对 API 研发管理工具的要求也水涨船高。 API 在今天的数字化世界中扮演着至关重要的角色,随着云计算、物联网、微服务尤其是 AI 等…

Uniapp 引入uView-ui 插件

前言 最近在写uniapp,用了一下原生的ui框架感觉不是很好看,打算去插件市场上面找一下好看的UI插件。学习不是闭门造车,自己重复造轮子。能自己解决和会不会用别人的方法是两回事。我自己也能写UI界面逻辑,但是这样太费时间了。最…

线宽变大,损耗变小;线宽无限大,损耗无限小?

一博高速先生成员:黄刚 作为高速信号传输的重要的指标之一,损耗,无论是对硬件工程师,设计工程师还是我们SI工程师来说,都会是非常的关注。而对于像背板传输这种长距离的走线系统或是像芯片测试板要求损耗极小的情况&a…

港联证券|港交所内地路演人气爆棚 新一轮上市改革加速推进

5月10日,香港交易所在深圳举行未来科技峰会,拉开了港股特专科技上市新规内地路演推广的序幕。 今年3月底,港交所正式推出特专科技公司上市新规,《主板上市规则》新增18C章,并于3月31日起接收特专科技公司上市申请&…

JavaWeb《后端内容:2. MVC-ServletContext-IOC-事务管理-过滤器Filter》

目录 1. 准备和回顾 2. MVC-reflect 3. MVC-dispatcherServlet 3.1 思路部分 3.2 Debug部分 3.3 基于controller进行优化 4. Servlet-api 4.1 回顾 4.2 Init方法 1. 获取ServletConfig config getServletConfig(); 2. 获取初始化参数值:config.getInitP…

静态库(lib),动态库(dll)

我之前有一篇文章讲过静态链接库和动态链接库,大家可以点击链接去看一下:静态链接库,动态链接库【滴水逆向三期48笔记】,由于不是系统学习Windows编程,感觉那时候就是囫囵吞枣,今天又学习了一遍&#xff0c…

基于Keil生成外部Nor Flash下载算法,并使用J-Flash直接烧录(以W25Q64为例)

需要的软件: Keil STM32CubeMX J-Flash 参考文档: 方法1:在Keil中点击Help→uVision Help,然后再搜索框中输入FLM,点击列出主题,可以看到生成下载算法的大致步骤: 方法2:在ARM Ke…

带你玩转三子棋—【C语言】

目录 前言: 1. 菜单的打印 2. game函数的实现 2.1 初始化棋盘 2.2 显示棋盘 2.3 玩家下棋 2.4 电脑下棋 2.5 判断输赢 2.6 判断棋盘是否满了 3. 全部代码 3.1 game.h 3.2 game.c 3.3 test.c 前言: 为了实现三子棋,首先我们应该…

frp将配置写在代码中重新打包

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。在有些情况下我们需要隐藏配置信息,尤其是客户端(比如我们要在第三方电脑…

第五章 总结及作业(123)【编译原理】

第五章 作业【编译原理】 前言推荐第五章 总结5.1自下而上分析基本问题 5.1.1归约5.1.2规范归约简述5.1.3 符号栈的使用与语法树的表示 5.2 算符优先分析5.2.1算符优先文法及优先表构造算法:构造FIRSTVT集算法:构造LASTVT集算法:构造优先表5.…

Google I/O 2023 - 一文快速总结 Flutter Dart 的现状和未来

随着 Google I/O 2023 的发布, Flutter 3.10 和 Dart 3.0 也都正式发,不得不说如今 Dart 的版本号终于快追上 Flutter 得版本号了,特别随着 Dart 3 的发布, Flutter 在 records 和 patterns 的加持下,开发体验终于开始…

LlamaIndex :面向QA 系统的全新文档摘要索引

在这篇博文中,我们介绍了一种全新的 LlamaIndex 数据结构:文档摘要索引。我们描述了与传统语义搜索相比,它如何帮助提供更好的检索性能,并通过一个示例进行了介绍。 背景 大型语言模型 (LLM) 的核心场景之一是对用户自己的数据进…

MapReduce框架

TextInputFormat 1)FileInputFormat实现类 思考:在运行MapReduce程序时,输入的文件格式包括:基于行的日志文件、二进制格式文件、数据库表等。那么,针对不同的数据类型,MapReduce是如何读取这些数据的呢&…

Postman 如何关联接口测试并设置全局变量(带有token鉴权)

一、登陆接口 创建一个request请求 在Tests中添加JavaScript代码,用来获取鉴权: var jsonData JSON.parse(responseBody); var Authorization jsonData.data.access_token; console.log(Authorization) pm.globals.set(‘Authorization’,Authorizatio…

solr快速上手:solr简介及安装(一)

0. 引言 虽然现在主流的搜索引擎组件已经es主导,但不乏有部分“老”项目依旧在采用solr,当遇到这类项目时,如何快速上手solr组件,以及后续如何拓展深入研究solr的途径成为问题,本期我们的目的就是带大家来快速上手sol…