1. 为什么多能互补系统的优化,不能靠“拍脑袋定权重”
真正把多能互补综合能源系统跑起来之后,你会发现一个问题:那些发表在论文里的调度策略,拿到实际工厂或园区里往往推不下去。原因不复杂——工程项目里几乎没有单一指标说了算的场景。你要控制运行成本,又要盯着碳排放量,还要保证冷热电供应的可靠率,甚至电网侧还会考核联络线功率波动。这些目标之间的冲突是天然存在且不可完全调和的。夏季午后光伏大发、园区冷负荷同时飙高:你让电制冷机全功率吃多余的光伏电,经济性和清洁性都好看,但热泵和吸收式制冷的联动约束可能撑不住;你为了压低运行成本让燃气轮机贴近最小出力运行,碳排放倒是下去了,但余热回收导致的热、冷联供出力又不满足热用户的温度需求。这种相互制约,决定了“把所有目标乘上权重,加成一个数”这种贪快写法,很容易得到一个理论上最优、实际上运行不了的调度表。
这里就是目标规划(Goal Programming)发挥作用的地方。目标规划的核心逻辑不是“找一个唯一的路走到黑”,而是“先把约束和系统底线守住,再在实现在优先级目标的前提下,逐级往理想目标靠拢”。我第一次在综合能源系统里彻底跑通这套逻辑,就是基于一个包含电、热、冷三种母线,融合了光伏、风电、燃气轮机、电锅炉、吸收式制冷机和蓄电池的程序。求解器选的IBM CPLEX,模型用Python搭,核心采用的是典型的目标规划框架。这套程序解决了我之前一直头疼的问题:怎么在一个优化模型里同时处理经济性、环保性和供能可靠性,并且让结果能直接给调度人员用。
这篇文章不打算复述教材公式,我把建模里那些容易绕晕的目标优先级设置、偏差变量处理、CPLEX落地细节,以及调试时遇到的几个典型陷阱都整理出来。如果你也在做综合能源系统的调度优化,或者刚下载好CPLEX准备开始写目标规划,这篇文章应该能让你少走一段我走过的弯路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 程序背后的系统边界与设备模型,必须先理清楚
2.1 我建模时的系统组成与母线架构
我当时做的这个综合能源系统,不是那种复杂到有几十条母线的省级大电网,而是一个典型的园区级多能互补系统,结构上完全可以看作一个微网与外网互联的全面提升版。系统内包含四条核心母线:电力母线、热力母线、冷力母线,以及天然气输入端口。电力母线连接光伏阵列、风力发电机、燃气轮机发电侧、电锅炉、电制冷机、蓄电池,同时通过一台变压器与外网做买电和卖电交互。热力母线主要是燃气轮机余热回收、燃气锅炉和储能水罐的汇合点,承担冬季暖通和生活热水的热负荷。冷力母线则连接电制冷机组和吸收式制冷机,用来满足空调冷冻水供应。
为什么先从母线架构说起?因为在实际建模时,绝大多数约束都围绕母线展开。你只要把母线上的设备进出功率都列全,能量平衡约束反而变成了最简单的线性等式,剩下的就是每台设备的独立运行约束。这套思路的优点是扩展性极强——想在系统里加一台氢燃料电池,直接在电力母线和氢气端口之间加一个组成模块就行,不需要动其他部分。
2.2 设备模型与参数选择上的基本简化原则
综合能源系统的设备模型如果写得太精细,求解复杂度会急剧上升。在工程级分析里,我普遍采用以下简化方式:
- 燃气轮机(CHP机组):用定效率模型描述,给定输入天然气功率,按电效率和热效率同时产出电和热,并设置最小开机出力与爬坡限制。
- 燃气锅炉:不考虑启停细节的连续调节模型,输出热功率在零到额定值之间连续变化。
- 吸收式制冷机:以热力母线的热功率为输入、冷力母线的冷功率为输出,引入一个固定的制冷系数(COP)来描述转换关系。
- 电制冷机、电锅炉:同样用COP或热效率简化建模。
- 光伏与风电:按典型日场景曲线给定预测出力上限,调度程序只能在预测范围之内削减,不能超出。
- 蓄电池与储热水罐:采用能量状态(SOC)递推方程,考虑充放互斥约束。
这些模型在目标规划框架里全部转化为线性约束,CPLEX处理起来非常轻松。不要一上来就把机组启停的启停成本、开停机时间连锁、非线性的效率曲线全部塞进去。先跑通一个线性模型,再逐步优雅地加入复杂度,这个顺序能帮你避免前期就在调试维度上“爆炸”。
2.3 数据的时间尺度与场景处理
我选用的是典型日24小时调度,时间分辨率为1小时。光伏和风电出力数据采用某一典型夏日的归一化曲线,热、电、冷负荷取自园区实测数据。之所以不用随机场景或全年8760小时数据做初始验证,是因为这阶段的首要目的是把目标规划的数学结构、求解流程和优先级逻辑跑通。全年数据的处理一样样的,我用的是一个24小时的母线拓扑不变的确定性场景,这样每次求解都在几秒内连续返回,效率很高,非常适合反复调参。
3. 目标规划建模里的关键决策:优先级怎么设,偏差变量怎么放
3.1 为什么我选了目标规划而不是统一加权
在早期的版本里,我也试过把运行成本、碳排放量、联络线波动用一个加权和目标表达式写在一起,顺手给三个目标分别设置为0.6、0.3、0.1。结果确实很“快”,但有问题:当系统内部约束稍微一变化,比如燃气轮机检修停机,模型给出的解会突然变得非常激进——为了在不平衡时保住经济性,宁可大幅增加外网购电,导致碳排放量飙升,而碳排放目标原本设了0.3的权重,却几乎没有发挥约束作
