当前位置: 首页 > news >正文

最近刚啃完一个电-气综合能源系统耦合优化调度的活,算是把之前一直想搞的电网和气网联动调度给跑通了

12-电-气综合能源系统耦合优化调度-100% 摘要:代码做了一个IEEE39节点和比利时20节点气网互联的电气综合能源系统优化调度模型,该模型考虑到了电网潮流以及气网潮流,同时可以优化出气源节点的天然气管道流量等变量,是为数不多的可以得出气网潮流以及电网潮流的电气综合能源调度模型,出图效果也非常清楚,具体可以看下图

一开始接触这个方向是因为现在新能源并网越来越多,电网峰谷差越来越大,光靠电网自己调有时候挺吃力的,要是能把天然气系统也拉进来联动——比如风电大发的时候用电转气(P2G)把电存成天然气,高峰的时候再用气转电(G2P)补电网的缺口,这不就爽了?但之前找了好多开源案例,要么只算电网调度,要么气网的模型简化得跟闹着玩似的,要么只能算一边的潮流,这次终于搞出了能同时跑通IEEE39节点电网+比利时20节点气网的完整模型。

先说说这次用的测试系统吧,IEEE39节点电网是经典的新英格兰电网,大家做电网调度基本都用过,比利时20节点气网也是行业里通用的气网测试案例,俩搭在一起,结果可信度还是挺高的。

说回代码,首先得把需要的工具库都导进来,我这次用的是pyomo做优化建模,pandapower跑电网潮流,pandagas处理气网的约束,省了好多自己硬写非线性方程的功夫:

import pyomo.environ as pyo import pandapower as pp import pandagas as pg from pyomo.opt import SolverFactory # 加载两个测试系统,偷懒用了现成的公开数据集,不用自己瞎搭节点 net = pp.create_empty_network() pp.from_cim(net, "ieee39_cim.xml") gas_net = pg.load_case("belgian20")

这里踩过一个小坑,一开始我还手动搭IEEE39的节点,搭到第10个就烦了,后来发现pandapower自带导入cim数据的功能,直接省了俩小时的功夫。

接下来是核心的耦合部分,也就是把电网和气网绑在一起。最关键的就是P2G和G2P的变量约束——毕竟电转气就是用电换气,不能凭空多出来气,我这里写了个约束把P2G的电功率和产出的天然气流量绑定:

# 大概的转换系数,1MW电能转0.1 m³/s的天然气,实际要按工况调整 conv_factor = 0.1 # 定义电转气装置的电功率变量,加了上下限防止过载 p2g_p = pyo.Var(model.t, net.bus.index, domain=pyo.NonNegativeReals, bounds=(0, 50)) # 对应气网节点产出的天然气流量 p2g_gas = pyo.Var(model.t, gas_net.nodes.index, domain=pyo.NonNegativeReals) # 绑定约束:把P2G的电功率转成对应的天然气流量 def p2g_link(model, t, bus): # 提前手动对应好电网和气网的耦合节点,避免乱绑 gas_node = coupled_gas_map[bus] return p2g_gas[t, gas_node] == p2g_p[t, bus] * conv_factor model.p2g_constraint = pyo.Constraint(model.t, net.bus.index, rule=p2g_link)

这段其实是整个模型的灵魂,之前好多半吊子的耦合模型就是没绑好这个变量,导致电网和气网各算各的,根本不算真正的综合能源系统。而且我还加了上下限约束,防止P2G的出力超过电网的备用容量,不然跑着跑着就过载宕机了。

12-电-气综合能源系统耦合优化调度-100% 摘要:代码做了一个IEEE39节点和比利时20节点气网互联的电气综合能源系统优化调度模型,该模型考虑到了电网潮流以及气网潮流,同时可以优化出气源节点的天然气管道流量等变量,是为数不多的可以得出气网潮流以及电网潮流的电气综合能源调度模型,出图效果也非常清楚,具体可以看下图

然后就是把气网的约束导入到优化模型里,毕竟气网的Weymouth流动方程写起来挺麻烦的,直接用pandagas封装好的约束就行,省得自己算错摩擦系数或者压力边界:

# 把气网的管道流量、节点压力约束都加到pyomo模型里 for pipe in gas_net.pipes: model.add_component(f"pipe_flow_{pipe.id}", pyo.Constraint(expr=pipe.flow_constraint)) for node in gas_net.nodes: model.add_component(f"node_pressure_{node.id}", pyo.Constraint(expr=node.pressure_constraint))

这里又踩了个大坑,一开始用默认的glpk求解器,跑着跑着就直接卡爆,后来才发现气网的约束都是非线性的,得换ipopt专门处理非线性优化的求解器,才算顺利跑通。

目标函数我设的是最小化总运行成本,毕竟调度嘛,省钱永远是第一要务,兼顾了电网机组的发电成本和气网的气源采购成本:

def total_cost(model): # 电网机组的发电成本,用pandapower自带的煤耗曲线算 gen_cost = sum(pyo.value(model.gen_p[t, g] * net.poly_cost.loc[g, "cp1_kw"] * 1e-3) for t in model.t for g in net.gen.index) # 气网气源的采购成本,按当前气价折算 gas_cost = sum(pyo.value(model.gas_source[t, s] * gas_price) for t in model.t for s in gas_net.sources.index) return gen_cost + gas_cost model.obj = pyo.Objective(rule=total_cost, sense=pyo.minimize)

跑出来的结果真的挺惊喜的,不光能算出每个电网节点的电压、每条线路的潮流,还能算出每个气网节点的压力、每条管道的流量——这也是我觉得这个模型最亮眼的地方,之前好多模型要么只算电网,要么只算气网的气源出力,能把两边的完整潮流都算出来的真不多。

最后就是出图了,我用matplotlib画了两张核心的图:一张是调度后IEEE39节点电网的节点电压分布,所有节点都稳定在0.95到1.05pu之间,符合国标要求;另一张是比利时20节点气网的管道流量热力图,红颜色的就是流量大的管道,能明显看到靠近负荷中心的管道用得更多,一眼就能看出来调度的效果(具体图就不放了,反正效果贼清楚)。

整体来说这次的活算是完成了预期目标,不光把耦合模型跑通了,还解决了之前一直头疼的同时输出电网和气网潮流的问题。接下来打算再加个风电不确定性的模块,再测试一下极端工况下的稳定性,比如冬天用气高峰的时候,电网能不能稳定供电。

http://www.jsqmd.com/news/546253/

相关文章:

  • 如何快速掌握Spring框架:面向初学者的完整指南
  • 工作流介绍
  • 3个核心功能如何解决手游玩家的日常任务负担
  • 计算机毕业设计springboot重修课程信息管理系统 基于SpringBoot的高校补考重修教务管理平台设计与实现 大学课程重修申请与成绩管理信息系统构建研究
  • H3C 交换机SSH安全登录配置详解
  • SVGnest智能嵌套算法架构解析:工业级材料利用率优化实战指南
  • ConvNeXt 改进 :ConvNeXt添加KANConv卷积(有九种不同类型激活函数,KAN卷积一夜干掉MLP,2024),二次创新CNBlock结构
  • 探索分子世界的三维画笔:PyMOL开源版如何让你成为分子艺术家?
  • TAICHI-flet桌面应用5大技术问题解决方案:依赖冲突到界面适配全攻略
  • ConcurrentHashMap 设计原理笔记
  • MCprep:高效专业的Minecraft动画创作插件
  • 别再写重复CRUD了!用SpringBoot+Vue+MyBatis-Plus快速构建餐厅管理系统后台
  • 3个关键问题带你掌握ONNX模型优化:从原理到实战落地
  • 鸿蒙应用必看!为什么PhotoPicker能终结‘相册全开’的隐私困局?
  • 【头歌平台】从零构建CNN:手写数字识别实战指南
  • Meshroom 3D重建:从照片到三维模型的视觉魔法之旅
  • YOLOv5在大宽高比目标检测中的优化策略与实践
  • MATLAB实战:手把手教你用T2place函数实现状态反馈极点配置(含可控性判断)
  • [技术解析] FDTD Solutions 8.0:从仿真设置到结果分析的全流程指南
  • 深入解析 Linux 内核中的 PCI 中断向量分配机制:pci_alloc_irq_vectors
  • 中断驱动DHT温湿度传感器嵌入式驱动库
  • 如何轻松掌握虚拟化管理:5个实用技巧快速上手virt-manager
  • Lobe Theme:重塑Stable Diffusion创作体验的现代化界面解决方案
  • 自动化内容创作:OpenClaw+nanobot批量生成技术博客草稿
  • 儒学之困、道家之远、佛学之迷:当代中国人精神生活的三幅面孔——基于自感痕迹论的文化诊断
  • Dify工作流HTTP请求配置的3个核心技术优化方案,配置效率提升200%
  • 如何用Python爬取全国空气质量监测站数据(附完整代码与避坑指南)
  • 全能B站资源管理工具:BiliTools让视频下载与管理效率提升90%
  • 从入门到精通:Arthas实战诊断线上Java应用性能瓶颈
  • MedGemma-X效果展示:AI精准识别胸部影像细微病变案例集