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

简介: 【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Matlab&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代码、数据、文章


相关文章
|
3天前
|
算法 数据安全/隐私保护
基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真
本项目基于MATLAB 2022a实现自编码器在无线通信系统中的应用,仿真结果无水印。自编码器由编码器和解码器组成,通过最小化重构误差(如MSE)进行训练,采用Adam等优化算法。核心程序包括训练、编码、解码及误码率计算,并通过端到端训练提升系统性能,适应复杂无线环境。
98 65
|
21天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
1月前
|
机器学习/深度学习 监控 算法
基于yolov4深度学习网络的排队人数统计系统matlab仿真,带GUI界面
本项目基于YOLOv4深度学习网络,利用MATLAB 2022a实现排队人数统计的算法仿真。通过先进的计算机视觉技术,系统能自动、准确地检测和统计监控画面中的人数,适用于银行、车站等场景,优化资源分配和服务管理。核心程序包含多个回调函数,用于处理用户输入及界面交互,确保系统的高效运行。仿真结果无水印,操作步骤详见配套视频。
54 18
|
2月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
78 33
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
50 10
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
103 8
|
2月前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章