
去年年底我接到一个复现任务把一个同时卷了“电转气”“碳捕集”“垃圾焚烧”三个热门名词的虚拟电厂优化调度模型从论文公式一步步跑成能出数字的代码。单拎任何一项文献里方案都很多但把三者耦合在一起时坑远比想象中密集——碳捕集要耗电、电转气要耗碳源、垃圾焚烧的出力又不能按需随意调三个子系统凑在一起整个模型的可行域都变得非常奇怪。这篇不是论文导读是我从模型拆解、数学建模、代码搭建到结果调优的完整复盘希望能帮拿到类似课题的同行少走几周弯路。1. 模型全景拆解三个子系统在虚拟电厂里到底各干什么1.1 为什么要把这三个东西放进同一个虚拟电厂传统虚拟电厂的调度研究聚合的大多是风电、光伏、储能、燃气机组和可调负荷。这个模型多加了两层碳捕集Carbon Capture和电转气Power-to-GasP2G再叠加一个垃圾焚烧发电单元。粗看像在凑热点实际这三者确实存在天然的互补关系。垃圾焚烧电厂是虚拟电厂里少有的“基础负荷型”电源。它的燃料是城市生活垃圾热值低、水分高但胜在持续可控——只要接收垃圾、维持焚烧温度就能稳定向外输出电力和热力。相比风电和光伏的强波动垃圾焚烧机组提供了可调度的出力底座。但它的碳排放治理是一个现实问题虽然垃圾属于生物质能源焚烧也计入“碳中性”范畴但若在碳市场机制下被要求对焚烧环节的化石碳比如塑料承担配额成本加装碳捕集就有了经济性。碳捕集装置可以把烟气里的CO₂分离出来但它自己是个电老虎。根据配置不同捕集一吨CO₂要消耗约2.03.6 GJ的热能或少量电能。如果捕集设备直接从厂用电取电虚拟电厂的净输出功率会明显下降但捕集的CO₂恰好是电转气环节最需要的原料。电转气则扮演“消纳转化储能”三重角色。它把系统里多余的电尤其是风电高发、负荷低谷时段的弃电通过电解水制氢再和碳捕集送来的CO₂发生甲烷化反应生成天然气。甲烷可以进天然气管网也可以存进气罐里在负荷高峰时再驱动天然气轮机发电——相当于把电能以化学能形式储存下来同时把碳固定进了天然气分子里形成闭环。这个三层耦合结构解决了虚拟电厂调度里很要命的一件事碳排放约束与发电收益的冲突。没有电转气时碳捕集只是“成本项”它从售电收入里硬生生挖掉一块但有了电转气捕集下来的CO₂变成了天然气合成原料而合成的天然气又能替代外购燃气或参与峰时发电碳捕集从纯成本角色变成了“成本原料供应”的双重角色。这种内生互补的情况单独建任何两个模型都体现不出来。1.2 系统拓扑与能量/物质流向用一张图表描述这个虚拟电厂的内部结构外部电网与虚拟电厂之间存在双向交换风电与光伏是波动性电源优先并网多余电量进入P2G工序垃圾焚烧电厂作为可控电源向电网供电同时向碳捕集装置输出含CO₂烟气碳捕集装置分离CO₂输往P2G的甲烷化单元碳捕集所需耗电来自厂内P2G中的电解槽利用富余电能制氢氢气与CO₂在甲烷化反应器中生成天然气进入储气罐储气罐可以作为气源供给天然气发电机组实现气电再转换。整个系统形成两条循环链一是发电-排放-捕集-再利用的碳循环链二是发电-消纳-制气-储气-再发电的能量循环链。模型的本质就是决策每一时段各个链条上的流量分配让总运行成本最低、碳排放量最少。1.3 边界条件与典型场景假设实际建模不能把每个设备都做成三维流体仿真——虚拟电厂调度模型追求的是时序功率分配所以子系统都采用设备级静态能量转换模型。典型假设包括碳捕集系统按“捕集率可调”处理捕集能耗按捕集量的线性或二次函数计算P2G按整体能量转换效率折算不再区分电解槽过电压、极化损失等动态细节垃圾焚烧机组按热电联产模式运行发电功率和供热功率由焚烧热负荷、汽轮机抽汽比例的决策共同决定储气罐考虑日尺度内的存储容量约束而不细化气体压力动态这些假设是复现工作的起点。如果一开始就在这些环节追求精细化模型会变成一个大尺度混合整数非线性规划MINLP求解时长直接失控。先做合理的降维简化让模型跑通、结果合理再逐级增加复杂度是这类复现工作最稳妥的推进方式。2. 核心设备级建模碳捕集、电转气、垃圾焚烧的数学表达2.1 碳捕集单元的能耗与捕集量关系电网调度建模中极少把碳捕集的化学吸收塔、再生塔、压缩机逐个建出来常用的是捕集能耗特性曲线。设机组发电量对应碳排量为E_G(t)如公式E_G(t) e_G * P_G(t)其中P_G(t)为该发电单元如垃圾焚烧发电机t时段的电出力e_G为碳排放强度系数。引入捕集率β(t)后实际捕集量E_CC(t)为E_CC(t) β(t) * E_G(t) β(t) * e_G * P_G(t)常见的捕集率范围在0.75到0.95之间β上限受脱附塔再生温度与吸收剂循环量限制。捕集系统耗电P_CC(t)与捕集量的关系可以近似为二次函数体现捕集越多、单位能耗越高的物理规律P_CC(t) a_CC * (E_CC(t))² b_CC * E_CC(t)复现时最常踩的坑是把P_CC(t)当作线性项直接加进功率平衡约束结果在捕集率上调时段得出明显偏低的净出力——二次项才是更接近真空条件下耗电特性的表达。不过在追求可求解性时可以对该二次函数做分段线性化既保留能耗曲线形状又不至于变成非线性规划。2.2 P2G电转气电解槽与甲烷化的能量流P2G环节涉及两步反应。第一步是碱性或质子交换膜电解槽2H₂O → 2H₂ O₂第二步是甲烷化反应Sabatier反应:CO₂ 4H₂ → CH₄ 2H₂O合成天然气的化学计量对碳源和氢源有配比要求但在虚拟电厂调度的时间尺度里一般不对气体组分做详细动力学追踪而是用能量转换效率直接建立关系P_CH4(t) η_P2G * P_EL(t)P_EL(t)是电解槽输入功率η_P2G是P2G全过程的总效率。实际工程中电-氢效率约70%80%氢-甲烷效率约70%80%两者综合下来即约50%65%。电转气还受到“碳源约束”如果甲烷化的CO₂仅来自碳捕集装置那么甲烷化反应需要的碳量不能超过E_CC(t)即Q_CH4(t) ≤ E_CC(t) / r_CO2_per_CH4其中r_CO2_per_CH4表示单位质量甲烷所需CO₂质量约等于44/162.75。也就是说捕集能力直接限制了可合成甲烷的量——这个约束建立起了碳链闭环是模型设计里的关键一步。如果不加这个约束P2G就成了凭空消耗电力制气失去“低碳”意义加了它碳捕集和电转气两个子系统才真正绑在一起。2.3 垃圾焚烧电厂的出力与热力模型垃圾焚烧电厂的燃料是原生城市生活垃圾MSW。进入锅炉前通常有三五天堆储脱水热值按设计垃圾设计低位发热量取约812 MJ/kg。焚烧产生的热量分为发电和供热两部分。设t时段投入焚烧炉的垃圾量为M_w(t)单位kg垃圾LHV为q_LHV单位MJ/kg锅炉热效率η_boiler则锅炉输出热功率Q_boiler(t)为Q_boiler(t) η_boiler * M_w(t) * q_LHV / 3600 换算成MW·h高参数汽轮机抽汽凝汽式机组发电功率P_WTE(t)与供热功率H_WTE(t)分别由主蒸汽流量分配和抽汽比例决定P_WTE(t) η_e * Q_boiler(t) H_WTE(t) η_h * c_extract(t) * Q_boiler(t)式中c_extract(t)是抽汽比c越大供热越多、发电越少因为抽走的蒸汽不做功。这个热电耦合关系在调度模型中表现为P_WTE(t)与H_WTE(t)之间的可行域约束类似传统热电联产机组的电热可行域。复现时若忽略这个可行域而把电、热当作两个独立变量很容易出现“既不发电也不供热但锅炉仍满载”的荒谬解。此外垃圾焚烧机组与常规燃煤机组最明显的差异是垃圾进炉量连续性和最小技术出力限制。焚烧炉的炉温不能太低一般不低于850℃否则二噁英合成风险上升所以焚烧线有最小燃料投入量对应机组电出力在一个不低的水平上运行。这让垃圾焚烧在虚拟电厂里的角色更接近“可调节但不深度调峰”的机组。2.4 储气罐与电解槽运行约束储气罐衔接P2G产气和燃气轮机耗气状态更新V(t) V(t-1) Q_CH4(t) - Q_GT(t)V是储气量Q_GT是燃气轮机消耗量。约束包括容量上下限、充放速率限制。储气罐的日循环利用率在复现时通常设置为0.6到0.9这直接决定了P2G能否起到日内削峰填谷的作用。电解槽也有爬坡与最低负载率约束。多数电解槽最低输出在20%40%额定功率不能像理想模型那样从0到100任意调节在低谷时段如果风电剩余电量很小、低于电解槽最小运行功率电解槽必须停机而不是低载运行。这反过来会推高弃风率是一个常常被忽略但非常影响结果的约束。3. 优化调度模型目标函数、约束体系与求解策略3.1 目标函数的三层构造目标函数不是简单的“成本最小化”需要同时反映经济运行与低碳运行。具体拆成三项再加权min F F_fuel F_OM F_CE F_load F_penaltyF_fuel外购天然气与辅助燃料成本P2G生成的天然气内部使用部分按生成成本计量F_OM各机组运行维护成本通常按出力线性折算F_CE碳排放成本采用碳交易机制即配额之内免费、超出配额需要购买结合碳捕集的减排收益F_load弃风弃光惩罚项用于驱动模型优先消纳波动性电源F_penalty失负荷惩罚避免模型通过大量切负荷来满足平衡权重设置上需要小心。如果碳交易价格参数过低模型会倾向于多购电、少捕碳系统变成纯购电型虚拟电厂如果碳价过高模型可能让P2G全时段满负荷运转储气罐满溢时仍强制制气导致物理上无法实现。复现时我先用基准碳价跑一遍观察电转气出力比例和储气罐充满时刻再反向校准碳价。碳交易成本F_CE的典型表达式F_CE λ_price * (E_emission - E_free - E_CC)其中E_emission是总排放E_free是免费配额E_CC是捕集量。这样表达后碳捕集相当于直接减少“需购买配额”的量与碳价相乘即体现减排收益。3.2 关键约束功率平衡、热电耦合、储气动态功率平衡约束是整个模型的核心骨架P_grid(t) P_WTE(t) P_WT(t) P_PV(t) P_GT(t) P_HP(t) P_load(t) P_EL(t) P_CC(t)其中P_HP是某类可放电的储能如蓄电池出力P_GT是燃气轮机发电。特别要注意等式右边电转气和碳捕集都是耗电方它们的功率需求在负荷高峰时段会给系统造成沉重的供电压力。热点平衡约束H_WTE(t) H_GB(t) H_load(t)式中H_GB是燃气锅炉供热量用于补充垃圾焚烧供热不足的部分。当供热需求高时垃圾焚烧机组倾向提高抽汽比c_extract(t)进而减少发电出力形成热-电博弈。储气罐时序状态约束将相邻时段耦合在一起属于多时段强耦合约束正是这些约束让优化问题从静态规划变成真正的动态调度。凡是这类含“上一时段决策变量”的约束都必须写成矩阵式时序约束V(t) - V(t-1) - Q_CH4(t) Q_GT(t) 03.3 线性化处理把非线性项按标准技术转成MILP设备级模型中存在大量非线性项主要包括二次能耗曲线、二进制整数变量启停状态、连续变量与二进制变量相乘等。Yalmip提供了快捷的简便建模工具但求解器最终还是要面对一个标准形式的问题二次目标函数可以用二次规划QP形式直接交给CPLEX或Gurobi分段线性化把二次捕集能耗曲线离散成若干段逐段线性逼近二进制-连续乘积引入Big-M辅助变量实际求解经验是全部做成MILP最稳妥。虽然QCP带二次约束的规划在数学上更精确但求解时间与数值稳定性都不如对应的线性化版本。对一个96时段的调度模型直接上MINLP可能要跑几个小时还可能不收敛MILP形式通常在几十秒内能拿到全局最优解。3.4 滚动时域还是全局优化复现论文通常采用日前优化——已知未来96时段预测曲线一次性算完整个调度计划。但实际项目中后来做滚动时域调度MPC式时发现P2G系统需要特别注意储气罐的终端值约束。如果优化到最后一个时段允许储气罐耗尽那前一天的储气策略会被扭曲模型会尽量少存气P2G只在弃风时段运行失去了削峰填谷能力。正确处理方式是在终端时段对储气罐罐存设一个期望水平或者直接把目标函数里加入终端储气值变量。复现时我用“储气罐期末储量≥初始储量×80%”的硬约束模型给出的结果明显更贴合工程直觉。4. 代码复现路径从公式到可运行的求解程序4.1 平台选择MATLABYalmip还是PythonPyomo第一版我用了MATLABYalmipCPLEX原因是Yalmip对于混合整数约束的表达非常直观适合快速验证模型逻辑正确性。第二版移植到了PythonPyomoGurobi主要为了部署灵活和数据可视化方便。两个平台的核心差异在于建模语法的抽象程度。Yalmip用“约束直接拼装”的方式Pyomo则更强调“组件式建模”需要先定义Set、Param、Var再构建Constraint。对复现来说两者都能完成工作选项取决于你对哪种语法更熟悉。如果后续要扩展深度学习预测模块建议直接从Python开始。MATLABYalmip的核心代码结构如下% 定义决策变量 P_wte sdpvar(1, T, full); P_el sdpvar(1, T, full); beta sdpvar(1, T, full); % 捕集率 0~1 V_ch4 sdpvar(1, T1, full); % 储气罐状态 z_gt binvar(1, T, full); % 燃气轮机启停 % 约束 Constraints []; for t 1:T Constraints [Constraints, P_wte_min P_wte(t) P_wte_max]; Constraints [Constraints, 0.3 beta(t) 0.92]; Constraints [Constraints, E_CC(t) beta(t) * e_G * P_wte(t)]; Constraints [Constraints, P_CC(t) a_CC * E_CC(t)^2 b_CC * E_CC(t)]; Constraints [Constraints, V_ch4(t1) V_ch4(t) eta_P2G * P_el(t) - P_gt(t) / eta_GT]; Constraints [Constraints, V_ch4_min V_ch4(t1) V_ch4_max]; end % 功率平衡 Constraints [Constraints, P_grid P_wte P_wt P_pv P_gt P_load P_el P_CC]; % 目标函数 Objective sum(fuel_cost * P_gt) sum(om_cost .* P_wte) ... carbon_price * (sum(e_G * P_wte) - free_quota - sum(E_CC)) ... penalty_dump * sum(P_wind_dump) penalty_load_shed * sum(P_shed); % 求解 ops sdpsettings(solver, cplex, verbose, 2); result optimize(Constraints, Objective, ops);4.2 参数标定哪个参数是模型命门整个模型的参数可以分为三类设备效率参数、成本系数、系统容量参数。下表是我在复现中使用的一组基准参数来自公开文献的典型值范围和工程经验参数数值说明η_P2G0.60电转气总效率e_G0.90 kg CO₂/kWh垃圾焚烧发电碳排放强度a_CC / b_CC0.0002 / 0.15捕集能耗曲线二次系数捕集率上限0.92吸收塔最大捕集率碳交易价格80 元/t CO₂基准碳价垃圾处理量上限800 t/日两台焚烧线垃圾LHV8.5 MJ/kg原生垃圾热值WTE发电效率0.22汽轮发电机组储气罐容量20000 m³折算约200 MWh气功率电解槽最低负载率0.30低于该值停机这里最影响结果的参数是η_P2G和碳价格。η_P2G从0.6降到0.45电转气工序基本失去经济性模型会主动减少P2G出力碳捕集也因碳源需求减少而降负荷碳价翻倍后即使P2G效率不变捕集率也会明显向0.92靠拢。复现论文里的“低碳结果”很多时候不是算法先进而是某一组参数设置导致的结果。重新做参数敏感性是判断模型是否真正合理的必经步骤。4.3 分模块推进先单机调试再联合调试复现过程建议分四个阶段推进阶段一仅做垃圾焚烧发电负荷平衡验证WTE机组热电可行域约束和功率平衡阶段二加入碳捕集单元检查捕集能耗对净出力的影响看捕集率变量是否按预期响应碳价阶段三加入电转气和储气罐观察弃风时段P2G是否吸收多余功率、储气罐是否按预期储存能量阶段四加入燃气轮机和电网交互形成完整VPP闭环。这种从简到繁的路径最大的好处是出问题时能快速定位是哪个子系统的约束写错了而不是对着一个上百行约束的大模型反复猜。4.4 数据准备时序曲线的来源与处理模型需要四个输入数据序列风电出力曲线、光伏出力曲线、负荷曲线、供热曲线。复现时采用了公开数据集的典型日曲线经过以下处理时间分辨率统一为1小时24个时段如果需要高精度可以做96个时段风电和光伏曲线进行归一化后乘上装机容量负荷曲线按虚拟电厂管辖范围缩放到最大负荷约50 MW供热曲线按冬季典型日数据设定数据要格外注意一件事所有曲线的采样时间必须对齐。比如负荷曲线用的是小时均值光伏曲线却用的是瞬时值功率平衡约束会出现系统性偏差求解出的结果会不一样。用Pandas或MATLAB内置的readtable处理时统一重采样到整点时刻。5. 复现过程中的坑与解法完整排查链路5.1 陷阱一捕集能耗二次函数导致非线性求解失败第一版代码直接把P_CC(t) aE_CC(t)^2 bE_CC(t)写进约束Yalmip识别出非凸二次项后CPLEX报告“不能处理”改用了Ipopt求解器结果整数变量又无法处理。折腾了整整一个下午都没跑出结果。排查思路是先把二次曲线降为线性函数P_CC(t) b*E_CC(t)模型瞬间变成MILP并正常求解。这个结果反过来验证了问题出在非线性项。最终采用分段线性化——取0%、25%、50%、75%、100%五个离散点对二次曲线做分段线性逼近既保留了能耗递增特性又保持了MILP结构。分段线性化时还有一个细节必须给分段变量施加顺序约束即只有段1满载才能进入段2否则解会“跳”到不连续的最优位置产生伪最优解。Yalmip的内置函数没有直接的分段线性化接口需要手写二进制分段变量约束或者使用lightweight的implied constraint方法。手写约束时务必加上sos2特殊有序集定义这能显著提升求解效率。5.2 陷阱二储气罐初值导致不可行模型无法求解的第一个原因往往不是逻辑错误而是初值问题。储气罐V(1)设为0同时约束V_min0时模型立刻不可行。这个问题虽简单但错误信息很隐蔽CPLEX只报“infeasible”不会告诉你哪个约束导致了不可行。排查方法是运行Yalmip的诊断工具[diagnostics, infeasible_constraints] check(Constraints);对于非零的求值逐个查看是哪条约束违反程度最大。复现时的实践是在模型加约束V_ch4(1) V_ch4_init并且在数据初始化阶段把V_init设为3000 m³而不是0。5.3 陷阱三碳捕集与P2G的时序耦合逻辑颠倒最初的模型里我把碳捕集的CO₂输出直接送入本时段P2G甲烷化认为二者在同一小时同步完成。这会导致一个微妙的结果如果P2G在深夜低谷吸收弃电产气但垃圾焚烧碳排放在白天为了给深夜甲烷化供碳垃圾焚烧机组可能在夜间加出力导致夜间系统出力不经济优化结果非常诡异。查找这个问题花了很久是结果分析与设备物理过程对照时才发现的——夜间P2G出力大但WTE机组出力并没有明显增加只有靠查看变量结果才追踪到碳捕集量E_CC几乎趋近0一个等式约束写错了符号方向。另外在真实工程中CO₂管道输送和缓冲罐意味着碳捕集与甲烷化之间至少存在数小时延迟。如果想更严谨的建模可以增加“碳存储罐”状态变量让CO₂像储气罐一样有跨时段存储能力推迟一两个时段再被甲烷化消耗更接近工艺实际。这一改会让模型多一组状态约束但物理合理性大幅提升。5.4 陷阱四垃圾焚烧机组的“热负荷约束”缺失引发荒谬解早期版本中WTE机组没有显式写入炉量与电出力的下限约束结果求解器给出一个“垃圾焚烧停机、全靠电网购电”的方案。虽然这台机组启停成本低但垃圾焚烧不是随意可停的储能城市生活垃圾每天都产生并送到电厂若虚拟电厂不焚烧垃圾只能转运填埋或积压。实际规划中通常假定一个“最低日处理量”约束对应机组downtime有限。增加最小日焚烧量与最小出力约束后系统在夜间低谷时段的电网购电显著上升WTE白天满发、夜间压低至技术最小出力结果反而更符合预期。如果模型允许完全灵活启停会导致垃圾处理成本被外部化——这在物理和经济学上都说不通。5.5 结果不一致时的排查链路总结复现时经常出现另一个问题同样的数据我把模型跑出来的结果和别人论文里的图对不上。逐个排查顺序建议为检查数据对齐最容易被忽略。尺度因子是否写对、单位是kW还是MW、时间是否同一时区。检查参数名称映射很多参数在不同文献里符号含义完全不同比如η_P2G有的指的是电解槽效率有的指的是全系统效率。检查碳排放强度单位公斤/兆瓦时还是吨/兆瓦时差1000倍结果曲线形状可能相同但数值对不上。检查约束方向这种符号错误最隐蔽删除一个约束看可行域是否变化逐步把可疑约束与基准情况对比。检查目标函数权重一个小数点差异足以改变最优解结构尤其碳交易价格参数。6. 结果分析典型日调度曲线里的工程含义6.1 基准场景下的调度结果规律求解成功后典型冬季日的功率分配曲线呈现出三个明确阶段夜间低谷时段风电高发电网交换功率趋于零P2G达到额定满负荷吸收多余风电储气罐缓慢上升日间高峰时段垃圾焚烧满出力运行捕集率拉到0.85以上碳捕集耗电与光伏出力部分对冲傍晚负荷二次上升时燃气轮机运行消耗储气罐存储的合成天然气配合WTE共同承担峰荷。这个结果最大的特征是碳捕集率的时间剖面。捕集率不再是常数0.85而是在0.30.92之间动态变化——夜间碳价低、P2G需要的碳源多捕集率走高午间光伏充足但发电边际排放低捕集率反而可以适度回落。这种动态捕集策略是静态碳捕集模型给不出来的结果正是“协同”二字的价值体现。6.2 灵敏度分析碳价对P2G出力的非线性影响我做了一组碳价从40元到160元/t的灵敏度测试观察P2G日均输入功率的变化。结果不是线性上升而是存在明显的阈值效应碳价低于70元/t时P2G几乎不启动弃风率高达18%碳价超过100元/t后P2G时段利用率接近上限弃风率下降到4%以下继续提高碳价收益不显著。拐点出现在约8090元/t正好落在当前碳市场配额价格区间附近。这种非线性关系意味着复现论文里任何“减少碳排放若干比例”的结论都隐含碳价背景脱离碳价谈结果是不严谨的。如果把这个模型当作研究工具去回答政策问题灵敏度分析是不可省略的部分。6.3 对比实验有无P2G的虚拟电厂差异为了单独验证P2G的价值我在保持其他条件不变的情况下将P2G工序关掉对比结果弃风率从5.2%上升到16.8%大量低价可再生能源被浪费燃气轮机需要的天然气全部外购购气成本上升31%碳排放成本上升约23%这三项数据直接说明P2G的核心价值不是“产气赚钱”而是作为柔性负荷消纳弃电、替代外购天然气、并将碳捕集量转化为实际减排收益。对于虚拟电厂运营商来说即使不考虑P2G产品出售的额外利润仅从弃风惩罚和购气成本两项就能回收大部分设备投资。收尾几个亲身实践的建议复现这个耦合系统给我最深的感受是模型里的每个子系统单独看都有成熟解法但组合在一起时真正的难点根本不在数学技巧而在如何让各子系统的假设条件自洽。碳捕集的捕集率上限、P2G的效率区间、垃圾焚烧的最小技术出力这三组参数来自不同文献背后对应的物理条件完全不是同一套——如果强行把它们拼在一个模型里最优解很可能是物理上荒谬但数学上正确的“假解”。实操中我有两个习惯效果特别好一是每加一个子系统就重新画一次能量流图把新增的每个变量的单位、上下限、耦合关系写清楚代码和数据都要对齐这张图二是所有结果跑完后单独做极端工况测试比如把碳价设为零、把P2G效率设为0.45看模型是否会给出符合直觉的退化结果——能通过极端工况的模型在面对正常工况时才真正可信。如果后续要继续拓展这个工作我会优先考虑两个方向一是把P2G产出的合成天然气延伸到交通燃料领域让虚拟电厂与加氢站网络联合调度二是把日前优化升级为日内滚动优化加入新能源出力的实时预测误差修正让储气罐和碳捕集的调节能力在更短时间尺度上发挥作用。