微电网里的电热联合优化调度,最近问的人特别多。原因也很直接——纯电系统做到后面,大家都发现单纯盯着电池和光伏做优化,天花板很低。真正能耗占比高的建筑、园区,供暖供冷才是大头。把电和热放在一个优化框架里统一调度,削峰填谷的潜力比单算电量翻好几倍。这篇就用一个可运行的MATLAB模型为例,把电热联合微电网的建模逻辑、代码结构、仿真平台搭建思路完整拆一遍,适合正在做微电网方向课题的研究生,或者在设计园区综合能源系统的工程师参考。
1. 电热联合微电网的物理架构与优化建模要点
1.1 为什么要把电和热放在一个框架里优化
独立优化电力系统和独立优化热力系统,结果经常是冲突的。电力系统想让热电联产机组(CHP)多发电,热力系统却希望它按热负荷运行,两者争夺同一个设备。更麻烦的是储能和可再生能源的随机性在电力侧和热力侧的传播规律完全不同,电的波动是秒级到分钟级,热的惯性是小时级。
电热联合优化的核心价值在于利用热力系统的天然储能特性来消纳电力系统的波动。建筑楼宇、水暖管网本身就是巨大的蓄热体,电负荷高峰时少供热、让楼宇温度自然回落,电负荷低谷时多供热、把热量储存在管网和楼宇墙体里,这种"热惯性"在数学上等价于一个免费的储能系统。我在实际测试中发现,仅仅利用供水温度允许的上下浮动范围,就能把微电网对储能电池的容量需求降低百分之二十左右,这个数字在系统设计阶段非常可观。
从优化算法的角度讲,电热联合系统本质上是一个多能源耦合的混合整数规划问题。电功率平衡、热功率平衡、设备启停状态、储能充放电约束交织在一起,变量类型既有连续量又有整数量,需要特定的求解策略。我这里采用的方式是建立统一的优化模型,把电系统和热系统作为并列的约束条件组处理,通过设备耦合变量将它们连接起来,然后一次性求解全局最优。
1.2 设备层建模与运行特性
完整的电热联合微电网至少包含以下设备类别,我从仿真建模的角度逐个说明它们的数学表达方法。
光伏和风电这类可再生能源设备,建模相对简单,通常直接采用预测功率曲线作为输入,在优化模型中作为负的负荷处理。关键问题是预测误差的处理,我用的是典型日场景法,取若干个典型场景进行随机优化,比单纯用期望值做确定性优化更能反映实际运行情况。
热电联产机组(CHP)是最关键的耦合设备,它同时产生电和热,热效率与电效率之间存在耦合关系。对于中小型微电网中的燃气内燃机或微型燃机,可以近似采用定热电比模型,即热出力与电出力的比例固定。更精确的做法是采用可行运行域模型,将机组运行范围描述为一个凸多边形区域,顶点对应不同的运行工况,这样优化时可以同时确定发电量和供热量。
电锅炉和热泵是Power-to-Heat设备,它们的引入改变了系统的调节特性。电锅炉成本低、响应快,但能效比只有0.95左右;热泵能效比可以达到3以上,但初始投资高且低温环境下效率衰减明显。我在模型中同时考虑了这两类设备,并设置了不同的运行成本系数,优化算法会根据电价和热价自动决定优先使用哪类设备。
储热装置在优化模型中的数学形式与蓄电池高度类似,同样有充放热功率上限、容量上限、效率损失和内能状态转移方程。不同的是储热装置的自损耗相对较小,而容量成本远低于电池,因此在系统中可以配置更大的容量。
1.3 目标函数与约束边界的设计思路
目标函数的选择直接决定了优化结果的经济意义。最常用的目标是最小化日运行费用,包括购电费用、燃料费用、设备启停费用,必要时还要加上碳排放费用或需求响应补偿费用。
我建议在目标函数中细化两项容易被忽略的成本:一是设备启停成本,不加这项目的话优化器会产生频繁起停机组的剧烈波动解,实际无法运行;二是负荷跟踪惩罚,也就是电热负荷供需不平衡的软约束惩罚,这能防止优化结果在某些时刻出现微小但不可行的失衡。
约束条件方面,需要用等式约束描述电功率平衡和热功率平衡,用不等式约束描述设备出力上下限、爬坡速率、储能荷电状态范围,以及联络线交换功率限制。网络约束(电压、潮流)在单母线模型中可以暂时忽略,但在扩展到多节点配电网时必须加入潮流方程和电压约束,这一点我在第4节会详细展开。
2. MATLAB环境下的模型实现与求解器选型
2.1 推荐工具链:YALMIP + 求解器
做微电网优化调度,MATLAB里面最合适的工具箱组合就是YALMIP加一个商业求解器。YALMIP是一个建模层工具,它能把你用数学方式描述的优化问题自动转换成求解器能识别的标准形式,省去手动处理矩阵和规范型的大量工作。
用YALMIP的好处是抽象层级高,写约束和写数学公式的差别很小,迭代速度快。对于电热联合系统这种混合整数线性规划问题,建模完成后更是可以一行代码切换求解器——今天用Cplex跑,明天换Gurobi,后天再换成开源的SCIP做对比验证,模型代码完全不用动。
我之前见过不少初学者用MATLAB Optimization Toolbox自带的linprog或者intlinprog直接写。对于变量少的问题也能跑,但电热联合系统一旦加入机组启停、储能状态这些整数变量,变量数轻松上千,intlinprog的求解效率和数值稳定性就不太够了。
2.2 核心代码结构与关键函数实现
整个仿真程序我按以下模块组织:
main.m:主脚本,设置参数、调用优化模型、绘图load_data.m:加载电负荷、热负荷、光伏出力、电价等时序数据build_model.m:定义决策变量、目标函数和约束条件solve_model.m:调用求解器求解,并处理求解结果plot_results.m:绘制电功率平衡图、热功率平衡图、储能状态曲线等
build_model.m是核心,以24小时为周期,时间分辨率1小时,每个设备在每个时段的运行状态都对应一组决策变量。热电联产机组的出力设为连续变量,启停状态设为二进制变量,储热装置和蓄电池的充放状态各设一组二进制变量以禁止同时充放。
求解完成后,solve_model.m里还要做一个结果校验步骤:把优化得到的各设备出力回代到功率平衡方程中,检查残差是否在允许范围内。这一步看着简单,实际非常必要,因为求解器返回的数值有时会有微小的数值误差,直接拿去仿真会被积分器放大,导致系统不稳定。
2.3 一个可直接运行的核心约束示例
下面这段代码展示了如何在YALMIP中实现储能电池的动态约束,这是整个优化模型中变量最多、最容易出问题的一组约束:
% 蓄电池储能系统约束 % x_bat_chg: 充电功率, x_bat_dis: 放电功率, x_soc: 荷电状态 % u_bat_chg: 充电状态指示(0/1), u_bat_dis: 放电状态指示(0/1) Constraints = []; % 充放电功率上限 Constraints = [Constraints, 0 <= x_bat_chg <= P_chg_max * u_bat_chg]; Constraints = [Constraints, 0 <= x_bat_dis <= P_dis_max * u_bat_dis]; % 禁止同时充放电 Constraints = [Constraints, u_bat_chg + u_bat_dis <= 1]; % SOC动态转移方程 Constraints = [Constraints, x_soc(2:end) == x_soc(1:end-1) ... + (eta_chg * x_bat_chg(1:end-1) - x_bat_dis(1:end-1) / eta_dis) * dt / Cap_bat]; % SOC上下限 Constraints = [Constraints, SOC_min <= x_soc <= SOC_max]; % 初末SOC约束(周期性运行条件) Constraints = [Constraints, x_soc(1) == x_soc(end)];最后一行初末SOC相等是我强烈建议保留的约束。在日尺度优化中如果不加这个约束,优化器会倾向于在优化周期的末尾把电池电量放空,导致第二天初始SOC过低,实际运行根本没法闭环。
3. 数据准备与典型场景仿真
3.1 负荷与新能源出力的数据预处理
数据是整个优化模型的起点,数据质量直接决定了结果有没有参考价值。我建议至少准备标准冬季日和标准夏季日两组数据,分别对应供热季和非供热季的运行策略。
电负荷数据如果来自实际园区,一般是从智能电表读取的15分钟间隔数据,需要聚合成1小时间隔。如果使用公开数据集,比如美国能源部商业建筑基准模型或者国内典型的园区负荷曲线,需要注意和微电网所在地区的时区和气候条件对齐。
热负荷数据相对更难获取,因为国内多数园区没有计量的供热分项数据。实践中的替代方法是根据建筑面积、围护结构传热系数、室内外温差和通风换气次数,用稳态热负荷计算公式估算。公式形式如下:
% 稳态热负荷估算 % A_wall: 外墙面积, U_wall: 外墙传热系数 % T_in: 室内设定温度, T_out: 室外温度 % V_room: 室内体积, c_air: 空气比热容, n_air: 换气次数 Q_heat = A_wall .* U_wall .* (T_in - T_out) + V_room .* c_air .* n_air .* (T_in - T_out) / 3600;光伏出力数据可以用实际历史出力数据,也可以查当地峰值日照小时数后,用晴朗日曲线近似生成。我建议在光伏出力上叠加一组2%~8%的随机波动,用来测试优化模型的鲁棒性。
电价数据对优化结果影响最大。需要区分峰谷平三个电价区间,如果有分时电价或实时电价,直接按阶梯曲线设置。我测试过的一组典型工业电价:峰时电价1.2元/kWh、平时0.7元/kWh、谷时0.3元/kWh,这个价差结构下优化器有明显的移峰填谷动机。
3.2 典型冬季供热场景的参数配置
以一个典型的中型园区微电网为例,我把关键参数用表格列出来,方便你直接修改成自己的参数:
| 参数组 | 具体参数 | 数值 |
|---|---|---|
| 基本信息 | 仿真时长/分辨率 | 24小时/1小时 |
| 电负荷 | 峰值电负荷 | 800 kW |
| 热负荷 | 峰值热负荷 | 600 kW |
| CHP机组 | 额定电功率 | 300 kW |
| CHP机组 | 热电比 | 1.2 |
| 电锅炉 | 额定热功率 | 400 kW |
| 蓄热罐 | 容量/最大功率 | 1500 kWh / 300 kW |
| 蓄电池 | 容量/最大功率 | 800 kWh / 200 kW |
| 光伏 | 额定容量 | 500 kWp |
| 联络线 | 最大交换功率 | 300 kW |
这套参数的设计思想:CHP机组在冬季承担基载热负荷,不足部分由电锅炉补充,蓄热罐平滑热负荷波动,蓄电池平滑电负荷波动。光伏在白天出力时压低了购电需求,多余的电力在电价低谷期存入蓄热罐或电池。
3.3 场景对比:以热定电与以电定热
仿真时一定要做对比方案,否则看不出联合优化的优势。最常见的两个参照方案是以热定电和以电定热。
以热定电模式下,CHP机组按照热负荷需求运行,发电量作为副产品,不足的电从电网购入。这种模式优先满足供热需求,在热负荷大的时候甚至会出现发电过剩、反向送电的情况。以电定热模式恰好相反,CHP按照电负荷需求调整出力,热量不足时由锅炉补充,热过剩时只能放弃。
电热联合优化是这两种模式的折中和泛化。优化结果通常不是简单的以热定电或以电定热,而是不同时段采用不同策略:电价高峰期偏以热定电,让CHP多发高价电;电价低谷期偏以电定热,让电锅炉多产热存起来供高峰期使用。我在实测中对比了三者的日运行费用,联合优化比单纯以热定电省百分之八到十五,比以电定热省百分之三到六。这个经济空间足够打动大多数业主。
4. 仿真结果分析与系统扩展方向
4.1 从结果曲线看系统的运行特性
跑完优化仿真后不要急着保存结果,先看图。重点关注三组曲线。
第一组是电功率平衡曲线。看各时段是哪些设备在满足负荷:白天光伏出力最大时购电量是否降到了最低;夜间电价低谷期蓄电池是否在充电;CHP机组是否充分利用了高价电时段。这组曲线能直观地看出优化器有没有"聪明地"调度设备。
第二组是热功率平衡曲线。看蓄热罐的充放热节奏:是否在电价低谷期充热、电价高峰期放热;CHP的供热量是否和热负荷匹配;电锅炉的启停时段是否合理。冬季仿真中蓄热罐SOC曲线通常呈现明显的周期性波动。
第三组是设备和联络线利用率曲线。如果联络线功率长期贴近上限,说明系统对电网依赖过高,内部的调节资源不够或储能配置不足;如果某些设备在整个周期内出力恒为边界值,说明配置容量与负荷比例失调,需要重新做容量规划。
4.2 从确定性优化到鲁棒优化
前面介绍的模型是确定性优化,假设负荷和光伏出力已知且准确。实际工程中预测误差不可忽略,尤其是光伏在阴晴交替天的波动幅度非常大。确定性优化结果在这种场景下可能完全不适用,某些时段甚至产生不可行解。
改进方向有两个:一是采用鲁棒优化,引入不确定集合描述光伏出力的波动范围;二是采用模型预测控制(MPC),以滚动优化代替单次全局优化,每隔15分钟重算一次未来4小时的最优调度指令。
我在项目里采用了两层框架:外层用日前的鲁棒优化确定大调度方案,给第二天各时段的设备基准出力;内层用MPC做实时修正,每15分钟根据最新的负荷和光伏实测数据调整设备出力偏差。效果非常明显——在光伏出力波动百分之二十的情况下,系统仍然能保持供需平衡且运行成本接近最优值。
4.3 从单母线模型到配电网潮流模型
单母线模型假设整个微电网的电压恒定、网损为零,这在分析优化调度问题时是合理的简化。但如果你要研究的是多节点配电网结构,比如一个覆盖多个楼宇和车间的园区级微电网,就必须考虑网络拓扑。
扩展方法是在现有优化模型中加入DistFlow潮流方程近似式,对于辐射状配电网,它可以被线性化为二阶锥约束。每个节点的电功率平衡修改为节点注入功率等于节点负荷加支路功率,同时加入节点电压幅值约束和支路电流容量约束。
加了网络约束后的优化模型会变成混合整数二阶锥规划(MISOCP)问题,求解时间明显增加,但能同时得到优化调度方案和最优潮流结果——各节点电压、各支路功率一目了然。这个是目前研究的活跃方向,发高水平论文的价值比单纯做优化调度大得多。
4.4 供热管网动态特性与热惯性的精细化建模
前面模型假设热负荷可以瞬时平衡,缓存了管网动态。实际供热管网的热水从热源输送到用户端有时间延迟,几十分钟到几小时不等。管道中热水流速、管道保温性能、用户端散热特性,都会影响系统的实际响应能力。
如果想精细化考虑热惯性,要在模型中引入供水温度和回水温度作为状态变量,加一个描述管道热动态的子模型。这样优化器可以更准确地利用管网蓄热能力——在电价低谷期提前提高供水温度,让热量存进管网的"大蓄热罐",电价高峰期降低供水温度,依靠管网自身热容维持用户的采暖需求。
这个精细化模型会让求解规模明显增加,但带来的经济效益和运行安全性提升同样可观。特别是针对高寒地区的冬季系统,考虑了管网热惯性的优化调度,在极端天气时段的表现明显优于不考虑热惯性的方案。
我在实际项目中体会最深的一点是,电热联合优化模型永远没有完全通用的版本。不同项目的设备配置、数据基础和运行诉求差异很大,好的做法是把模型拆成可复用的模块:设备模型模块、网络约束模块、求解器接口模块、结果分析模块。前期多花一点时间把模块之间的接口定义清楚,后期换场景换数据的时候能省掉大量重复劳动。如果需要基于具体的数据集或特定的设备配置细化某个模块,直接告诉我,可以提供对应的建模思路和代码实现参考。