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


相关文章
|
14天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
67 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
286 55
|
16天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
2月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
81 4
|
24天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
117 66
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
189 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
10天前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习果蔬识别系统实现
本项目基于Python和TensorFlow,使用ResNet卷积神经网络模型,对12种常见果蔬(如土豆、苹果等)的图像数据集进行训练,构建了一个高精度的果蔬识别系统。系统通过Django框架搭建Web端可视化界面,用户可上传图片并自动识别果蔬种类。该项目旨在提高农业生产效率,广泛应用于食品安全、智能农业等领域。CNN凭借其强大的特征提取能力,在图像分类任务中表现出色,为实现高效的自动化果蔬识别提供了技术支持。
基于Python深度学习果蔬识别系统实现
|
14天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
25 3
|
26天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
50 5
|
1月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习的果蔬识别系统实现
果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。
52 4
基于Python深度学习的果蔬识别系统实现

热门文章

最新文章