1. 项目概述与研究目标1.1 这个课题到底在解决什么问题做综合能源系统Integrated Energy System, IES优化的人这两年应该都感受到了一个明显的趋势单纯搞“风光储 热电联产”的经典调度模型已经很难在审稿人那里过关了。碳捕集与电转气这对组合几乎是目前最热门的低碳改造方向但真正把两者同时装进热电联产模型里还给出完整Matlab代码的公开资料并不多。这篇博文要聊的就是这么一个包含电转气Power-to-Gas, P2G和碳捕集系统Carbon Capture System, CCS的热电联产Combined Heat and Power, CHP建模与优化项目全部基于Matlab代码实现。先不急着上公式我用自己的话把这个课题的价值说清楚。传统热电联产机组的“以热定电”约束非常僵硬电负荷低谷期想多发电不行热负荷高峰期又容易产生大量碳排放。碳捕集系统可以降低机组碳排放但它本身是个大功率负荷捕集能耗反而会加剧电负荷紧张。电转气技术的妙处在于它可以把多余的电力转化为天然气而且刚好需要消耗二氧化碳——碳捕集系统捕下来的CO2一部分可以作为P2G的原料。这样一来电、热、气、碳四种能量/物质流就形成了一个互相牵制的闭环网络模型复杂度上去了但系统运行的灵活性和经济性也上去了。这个课题适合谁一类是做综合能源系统优化的研究生需要快速搭一个包含P2G和CCS的完整算例框架直接跑通Matlab代码用来做仿真分析和论文工作另一类是做能源系统规划或运行调度的工程师想评估碳捕集和电转气对园区级综合能源系统的实际影响有多大。对这两类读者这篇文章都会提供可以直接上手的建模框架、核心公式、仿真参数和代码架构说明。1.2 项目成果与代码能力边界在详细拆解之前先把这套Matlab代码的能力边界交代清楚避免后续阅读产生误解。这个项目实现的核心能力包括三块第一块是设备级建模CHP机组、碳捕集系统、P2G设备、燃气锅炉、储能装置、风光出力曲线都建立了数学模型第二块是系统级优化以运行成本最小为目标函数最核心的约束有电功率平衡、热功率平衡、天然气平衡以及各设备的运行约束和爬坡约束第三块是结果分析输出各设备逐时出力计划、碳排放总量、弃风弃光量、系统总成本等关键指标。需要提前说明的是这里用的是确定性优化模型没有引入随机规划和鲁棒优化这符合大多数论文初版方案和工程预评估阶段的精度需求。调度周期以典型日24小时为基准时间尺度为1小时。这套代码的基础版本可以直接改写成其他调度周期只要修改输入数据的时间维度和约束矩阵即可。2. 系统结构与设备建模方案2.1 综合能源系统框架梳理综合能源系统的物理结构是这个项目的第一个关键点。本项目的系统框架可以概括为“一端二源三耦合”一端指电负荷端二源指电/气两类外部能源输入三耦合指电-热耦合、气-热耦合、碳-电耦合。从能量输入侧看电力来源包括上级电网购电、风电、光伏和CHP机组发电天然气来源包括上级气网购气和P2G设备产气。从转换环节看CHP机组同时承担发电和供热燃气锅炉承担补充供热P2G设备消耗电能和CO2生产天然气碳捕集系统捕获CHP机组和燃气锅炉排放的CO2。从存储环节看电储能和热储能用于平抑波动储气装置用于天然气的时序转移。这个结构的一个关键设计理念是不把碳捕集系统当作单纯的“环境治理末端”而是把它视为一个可调的柔性负荷与P2G设备形成协同。碳捕集系统的运行状态直接受系统电负荷水平影响——电负荷低谷时增加捕集力度电负荷高峰时降低捕集力度或直接旁路排放这一运行机制在模型中以“捕集能耗惩罚因子”的形式体现。这部分数学表达会在后面的约束公式里详细展开。2.2 热电联产机组建模热电联产机组是整个系统的动力核心。本项目采用国内文献中最常见的抽汽式CHP机组模型其电功率与热功率的运行域用一组线性不等式约束来描述核心关系如下P_CHP(t) ≥ max( P_CHP_min - c_h * H_CHP(t), k1 * H_CHP(t) k2 )P_CHP(t) ≤ P_CHP_max - c_v * H_CHP(t)这里P_CHP(t)是t时段CHP机组的电出力H_CHP(t)是热出力c_h和c_v分别对应热出力变化对电出力下限和上限的修正系数k1和k2是热出力与最小电出力关系的线性化系数。这套公式刻画的核心物理规律是抽汽供热会减少进入凝汽器的蒸汽量导致发电能力下降——你多供一方热就要少发几度电这个“热电耦合系数”是模型里最关键的参数之一。在仿真参数设置中我采用的CHP机组额定电功率为300MW额定热功率为150MW。c_v取0.15c_h取0.05k1取0.2k2取20MW。这样的参数组合表示机组在满负荷供热时最大电出力会从300MW下降约22.5MW左右符合实际抽汽机组的运行特性。这里提醒一个新手容易忽略的细节CHP机组的爬坡约束和启停约束必须同时考虑电功率和热功率的变化率。由于热出力变化速率远低于电出力本项目简化处理只对电功率设置爬坡约束上下爬坡速率均取60MW/h。2.3 碳捕集系统建模与原理解析碳捕集系统采用燃烧后化学吸收法这是目前技术成熟度最高、工程应用最广泛的碳捕集方式。模型核心是捕集效率与能耗惩罚的权衡。碳捕集系统从CHP机组和燃气锅炉排放的烟气中捕获CO2但捕集过程本身要消耗大量电力和热能。碳捕集系统的数学模型分为三层。第一层是排放计算总碳排放量E_total(t)由机组出力和排放强度系数决定表达式为E_total(t) e_CHP * P_CHP(t) e_GB * H_GB(t)其中e_CHP取0.6 tCO2/MWhe_GB取0.2 tCO2/MWh。第二层是捕集量计算捕集量C_cap(t) η_cap * R_cap(t) * E_total(t)其中R_cap(t)是碳捕集系统的运行状态0到1之间的连续变量表示捕集比例η_cap是捕集设备效率取0.85。第三层是能耗模型捕集电耗P_cap(t) λ_c * C_cap(t)λ_c是单位捕集电耗系数取0.2 MWh/tCO2。需要特别强调的是R_cap(t)这个变量。很多论文里把R_cap设成固定值0.85这样模型会简单很多但实际工程中碳捕集系统是有调节能力的——系统电负荷过高时降低捕集比例相当于“牺牲环保换经济性”风光大发、电无法消纳时提高捕集比例相当于“用电换碳”。本项目把R_cap作为连续决策变量引入优化这看似只是变量多了几个实际效果却非常大优化器会自动在96个时段里寻找最优的捕集节奏与P2G设备、储能设备配合实现削峰填谷和碳减排的双重目标。2.4 P2G设备建模与化学过程映射电转气技术是本项目最具特色的部分。P2G设备的本质是电解水制氢再将氢与CO2通过甲烷化反应合成天然气。完整化学反应链包括两个步骤第一步是电解水产生氢气和氧气第二步是氢气和二氧化碳在催化剂作用下反应生成甲烷和水。在系统建模层面P2G设备可以被抽象为“电-气-碳”三端口变换器。功率关系采用线性转换模型G_P2G(t) η_P2G * P_P2G(t) / GCV其中G_P2G(t)是产气速率m3/hη_P2G是电转气综合效率取0.60P_P2G(t)是输入电功率MWGCV是天然气热值通常取9.7 kWh/m3。这样算下来输入1MW电力每小时大约可以产出61.8立方米天然气。CO2消耗量计算为C_P2G(t) μ_CO2 * G_P2G(t)其中μ_CO2是单位天然气产量对应的CO2消耗量。根据甲烷化反应的化学计量关系每生产1立方米甲烷标准状态约需要消耗1.8千克CO2即μ_CO2取0.0018 t/m3。P2G设备运行约束包括输入功率范围约束0 ≤ P_P2G(t) ≤ P_P2G_max以及爬坡约束。本项目P2G设备最大输入功率设为50MW爬坡速率取20MW/h。这里有一个建模上的细节值得展开说明。P2G本质上是一个“消纳低谷电”的设备它的最优运行时段几乎全部落在电负荷低谷期或风光大发时段。因为在这些时段系统边际电价低甚至为负如果电网无法消纳多余电力弃风弃光的损失更大。通过P2G把这部分电力转化为天然气储存起来在晚高峰再通过燃气锅炉或CHP机组发电/发热实际上是完成了一次“电力跨时段搬运”。这就是为什么我在目标函数中把弃风弃光惩罚系数设得较高取800元/MWh鼓励优化器优先利用风光电力驱动P2G和碳捕集。3. 优化运行模型与Matlab代码实现3.1 目标函数设计与经济性权衡优化目标是最小化系统日运行总成本包含六个组成部分购电成本、购气成本、CHP机组燃料成本、碳交易成本、弃风弃光惩罚成本以及设备运行维护成本。目标函数的数学形式如下min F Σ_t [ c_Grid * P_Grid(t) c_Gas * G_buy(t) c_Fuel * F_CHP(t) C_Carbon(t) c_Cur * (P_W_cur(t) P_PV_cur(t)) Σ_i c_OM_i * P_i(t) ]每项成本的含义和参数设置购电价格c_Grid采用分时电价峰时段8:00-11:00, 18:00-21:00为1.2元/kWh平时段7:00-8:00, 11:00-18:00, 21:00-23:00为0.75元/kWh谷时段23:00-次日7:00为0.4元/kWh购气价格c_Gas取2.5元/m3CHP机组燃料成本按发电量近似线性化c_Fuel取0.35元/kWh设备维护成本c_OM按出力比例分摊合计约为0.02元/kWh。碳交易成本这一项我需要额外展开。本项目采用基准线法碳交易机制政府给系统分配免费碳排放配额E_quota实际碳排放量低于配额时富余部分可以在碳市场出售获利实际排放量高于配额时需要购买碳排放权。碳交易成本表达式为C_Carbon(t) c_CO2 * ( E_total(t) - E_quota(t) - C_cap(t) )其中c_CO2是碳交易价格取80元/tCO2E_quota(t)是配额量按系统总负荷的固定比例分配本项目设为总电负荷对应排放强度的60%。这个机制配合碳捕集系统后会产生一个有趣的联动效应降低捕集比例虽然节省了捕集电耗但会直接增加碳交易成本优化器会权衡这两者给出每个时段最优的捕集比例。我在实际跑代码时发现当碳价从50元/tCO2上调到100元/tCO2时系统最优捕集比例从平均0.61提升到0.78碳排放总量下降约21%而总成本只上升了4.7%——这说明碳价机制对减排的杠杆效应非常明显。3.2 核心约束条件与能量平衡建模综合能源系统优化的灵魂在于约束条件本项目共包含六类约束电功率平衡、热功率平衡、天然气平衡、CHP运行域约束、储能约束和碳排放约束。电功率平衡是最关键的一条P_Grid(t) P_W(t) P_PV(t) P_CHP(t) P_ES_dis(t) P_Load(t) P_P2G(t) P_cap(t) P_ES_ch(t) P_W_cur(t) P_PV_cur(t)这个公式看起来长但逻辑其实很清晰左边是全部电源出力右边是全部负荷消耗。关键是P_P2G(t)和P_cap(t)这两个“非常规负荷”被显式建模它们既是负荷又是灵活调节资源。P_W_cur(t)和P_PV_cur(t)分别是弃风量和弃光量设计这两个变量是为了让优化器在“无法消纳时主动弃掉”而不是让模型无解崩溃。热功率平衡H_CHP(t) H_GB(t) H_HS_dis(t) H_Load(t) H_HS_ch(t)天然气平衡G_P2G(t) G_buy(t) G_GAS_dis(t) G_Load(t) G_GAS_ch(t)这里的G_Load(t)是系统的天然气基础负荷如厨房用气、其他燃气设备用气本项目设为恒定值。储能约束包括电储能和热储能。电储能的核心是状态转移方程SOC_ES(t1) SOC_ES(t) η_ch * P_ES_ch(t) * Δt - P_ES_dis(t) * Δt / η_dis加上容量上下限约束和充放电功率约束。初始荷电状态设为0.2结束状态也设为0.2这样保证日调度的前后一致性避免优化器在最后一个时段疯狂放电来降低成本。这个细节非常关键很多初版代码会忽略导致结果出现明显的边界失真。3.3 Matlab代码框架与求解器配置这套Matlab代码采用“数据-模型-求解-输出”四层架构这是我个人推荐的IES优化代码结构便于后续修改和扩展。数据层是input_data.m文件集中定义所有参数包括负荷曲线、风光出力曲线、电价序列、设备参数等修改算例只需编辑这个文件。模型层是build_model.m核心是基于Yalmip工具箱构建决策变量和约束条件。求解层是solve_model.m配置Gurobi或Cplex求解器。输出层是plot_results.m用于绘制各设备出力曲线和成本分析图。使用Yalmip构建优化模型是Matlab代码实现的核心体验。举个例子电功率平衡约束在Yalmip中的写法是Constraints [Constraints, ... P_grid P_w P_pv P_chp P_es_dis ... P_load P_p2g P_cap P_es_ch P_w_cur P_pv_cur];CHP热电耦合约束的Yalmip写法是Constraints [Constraints, ... P_chp P_chp_min - c_h * H_chp, ... P_chp k1 * H_chp k2, ... P_chp P_chp_max - c_v * H_chp];变量全部定义为连续变量目标函数使用线性表达式整个模型构造成一个标准的混合整数线性规划MILP问题。求解器我强烈推荐Gurobi在Matlab中通过Yalmip调用Gurobi的速度比Matlab内置的linprog快约一个数量级尤其是变量数量上千后性能差异非常明显。如果没有Gurobi授权Cplex可以作为替代如果都没有Yalmip内置的求解器在24时段小规模算例下也能跑通但96时段的模型会非常吃力。关于Matlab版本兼容性我实测过R2023b和R2024aYalmip和Gurobi接口都能正常工作。Matlab 2026b目前还比较新建议在正式跑项目前先验证Yalmip和Gurobi的兼容性避免版本升级带来的求解器接口异常。另外Gurobi安装完成后需要运行gurobi_setup.m完成Matlab路径配置否则会报“Undefined function or variable gurobi”的错误——这个坑我踩过不止一次。4. 典型日仿真参数设置与结果分析4.1 算例输入与基础数据说明仿真算例以中国北方某园区综合能源系统为原型选取冬季典型日作为调度场景。冬季典型日的特点是热负荷高且平稳、电负荷呈现明显的双峰特性、风电出力在夜间较大、光伏出力在中午达到峰值。冬季场景可以最大化地检验CHP机组、燃气锅炉、P2G和碳捕集系统协同运行的潜力。基础数据设置如下系统电负荷峰值280MW谷值120MW峰谷差率约57%热负荷峰值180MW谷值90MW全天变化相对平缓风电额定出力80MW全天预测曲线呈现“夜间高、白天低”的特征光伏额定出力50MW午间出力达到峰值并形成典型“鸭子曲线”天然气基础负荷稳定在30m3/h左右。CHP机组300MW、燃气锅炉100MW、P2G设备50MW、碳捕集系统处理容量对应CHP和锅炉总排放的90%、电储能容量100MWh/50MW、热储能容量80MWh/40MW、储气罐容量2000m3。4.2 运行结果与关键指标解读仿真求解完成后第一件要做的事就是读结果。我习惯先看三个核心指标系统总成本、碳排放总量和弃风弃光率。本算例的求解结果是日运行总成本约41.2万元碳排放总量约860吨弃风弃光率1.8%。作为对比如果不装碳捕集和P2G设备同等负荷条件下的日运行成本约39.5万元碳排放总量约1380吨弃风弃光率6.7%。对比结果可以读出几个有意思的结论。第一引入P2G和碳捕集后系统总成本反而增加了约4.3%但碳排放量降低了37.7%这说明低碳改造在当前碳价水平下80元/tCO2还没有完全体现经济性优势——碳价需要上升到约140元/tCO2时低碳系统的总成本才会与基准系统打平。这个临界碳价可以给决策者一个清晰的投资评估依据。第二P2G设备的运行时段高度集中在夜间23:00到次日5:00这个时段风电出力达到峰值而电负荷处于低谷P2G吸收了大量廉价风电产出的天然气一部分直接补充气负荷一部分存入储气罐供白天使用。碳捕集系统则呈现出与P2G高度互补的运行节奏白天电负荷高峰时段捕集比例下降至约0.4夜间低谷时段捕集比例提升至约0.95两者的总电耗被优化器平滑地分配在全天各时段。第三CHP机组的运行模式发生了显著变化。在没有P2G和CCS的基准系统中CHP机组夜间电出力被“以热定电”约束推着走为了满足夜间热负荷不得不发出大量电力导致弃风。引入P2G后这部分富裕电力被P2G吸收转化为天然气弃风率从6.7%降到1.8%相当于“用热需求换来了更大的风电接纳空间”。这是一个非常典型的“系统级灵活性提升”案例。4.3 灵敏度分析与参数影响讨论做完基准算例后建议做两组关键参数的灵敏度分析碳价和P2G效率。碳价从40元/tCO2逐步提升至200元/tCO2记录系统碳排放量和总成本的变化。仿真结果表明碳价每提升20元/tCO2碳排放量平均下降约5%至8%但当碳价超过160元/tCO2后减排效果开始趋于饱和——因为此时碳捕集系统的处理容量已经接近上限额外碳价无法再驱动更多捕集行为。这说明碳捕集设备的容量配置是系统减排潜力的“天花板”。P2G效率的影响更加微妙。P2G效率从0.45提升到0.70系统总成本下降约3.2%但更显著的变化是P2G设备的最优运行时间从每天5小时延长到9小时。效率提升改变了P2G的“经济启用门槛”——效率越高单位产气成本越低也就越值得在更多时段运行。如果手头有项目要做设备选型论证这个分析可以直接作为P2G设备投资回报估算的方法论基础。5. 常见问题与Matlab调试经验实录5.1 求解报错排查思路我在调试这套代码时踩过不少坑这里整理几个高频问题的排查思路希望能帮你少走弯路。问题一Yalmip报“Infeasible problem”。模型无解是IES优化中最常见的错误。排查步骤是先逐步注释掉约束条件找到导致无解的那组约束再检查能量平衡公式两边的单位是否一致比如功率用的是MW还是kW天然气用的是m3/h还是m3重点检查储能的初始/结束SOC约束如果起始值设置不当前几个时段的储能出力会被逼迫到边界导致约束冲突最后检查风电、光伏的弃电变量是否位于正确的等式一侧。魔改模型时最容易犯的错误就是“写平衡方程时漏了一项”严格对照公式核对。问题二求解时间过长。96时段、变量数量超过500个时如果使用Matlab自带求解器会非常慢。首选方案是安装Gurobi并通过Yalmip调用如果暂时没有Gurobi授权可以把96时段缩减到24时段做预演算验证模型正确性后再全时段求解也可以检查是否有非必要的整数变量导致MILP问题比LP问题耗时指数级增长。本项目的模型是纯LP所有变量连续如果看到求解时间异常大概率是加入了整数变量。问题三结果出现振荡或跳变。如果设备出力曲线出现频繁的0-满功率跳变通常是目标函数中缺少惩罚项或约束设置导致的。最简单的修复方法是在目标函数中加入微小的运行成本项如0.01元/kWh来“镇住”无意义的跳变对于储能变量检查充放电是否被允许同时进行——如果没有添加互补约束优化器可能同时充放电来“虚耗”能量这在数学上虽然不违规但绝对不物理。补充一个约束P_ES_ch(t) * P_ES_dis(t) 0或者直接限制两者之和不超过额定功率。5.2 参数调试与结果合理性校验一个高质量的仿真结果必须经过合理性校验我建议从三个维度自查。能量守恒校验统计24小时系统总输入能量电网购电天然气购气风光出力与总输出能量电负荷热负荷P2G产气储能净变化捕集电耗误差应小于1%。如果误差超过5%优先检查天然气单位的换算GCV热值换算最容易出错。边界条件校验检查CHP机组功率点是否全部落在电热运行域多边形内检查碳捕集比例是否在0到1之间检查储能SOC是否越界。这些校验可以在Matlab代码里通过一行assert语句实现。经济性校验检查低谷时段是否优先充电/P2G/捕集高峰时段是否优先放电/降低捕集比例如果结果与预期时序相反大概率是分时电价的时间索引写错了一位。实际调试中另一个好用的小技巧是利用Yalmip的诊断命令diagnostics.info检查求解器返回的状态信息。当Gurobi返回“OPTIMAL”但目标函数包含微小数值误差时可以增加求解器的精度参数sdpsettings(gurobi.OptimalityTol, 1e-9)虽然会让求解时间稍长但能获得更干净的调度结果。5.3 模型扩展方向与经验心得这套代码的框架设计考虑到了后续扩展。目前我说几个自己觉得比较有实用价值的扩展方向供你参考。第一个扩展方向是引入不确定性。当前模型假设风电、光伏和负荷都是确定性预测值实际调度中预测误差不可避免。可以把模型扩展为两阶段鲁棒优化或分布式鲁棒优化第一阶段决定CHP机组的启停和储能日前计划第二阶段根据实际风光出力调整P2G和碳捕集比例。这种扩展在Yalmip框架下也可以实现只需额外引入不确定集的定义。第二个扩展方向是加入阶梯式碳交易机制。现有模型采用统一碳价实际政策环境中碳交易价格通常是阶梯式的——排放量越高购碳单价越高。将碳价从常数改为分段的线性函数模型仍然是LP问题但减排效果会更贴近真实政策影响。第三个扩展方向是考虑P2G设备的动态运行特性。目前采用的是静态效率模型实际电解槽在部分负荷条件下的效率会下降可以考虑用分段线性函数拟合效率曲线让模型精度更高。从工程实践的经验来看综合能源系统优化的价值不在于追求模型的数学复杂度而在于准确刻画“电-热-气-碳”之间的耦合关系和时序互补特性。P2G和碳捕集的引入本质上是把原来孤立看待的“减排设备”升级为“灵活性资源”从运行机制上为新能源消纳和低碳转型提供了协同路径。最后分享一个实操层面的细节在做结果分析时务必把P2G产气、CHP发电和碳捕集运行曲线画在同一张时序图上观察这三条曲线在夜间低谷时段的联动——那才是这个模型最核心的协同效果所在也是你写论文或汇报时最有说服力的一张图。
阅读完成 · 觉得有帮助?