尧图精选

考虑阶梯碳交易与电制氢的综合能源系统热电优化调度

🕒 发布时间:2026/9/9 20:01:38 📁 来源:尧图网络
做综合能源系统优化的朋友对“碳交易电制氢”这个组合应该不陌生。这两年关于IES热电调度的论文十个里有七八个都绕不开这两个关键词一边是碳约束越来越严系统必须为碳排放付出成本另一边是风光大发时段弃电严重需要电制氢这样的灵活性负荷来消化。我最近完整跑通了一个MATLAB项目正是把这两件事耦合在一起考虑阶梯式碳交易机制引入电制氢设备让电、热、氢三种能源在同一个调度框架下协同优化。这篇博文就把整个建模思路、数学表达、代码实现和踩坑经历完整梳理一遍给准备复现类似工作的读者一个可以直接参考的框架。如果你正准备做IES优化调度、碳交易机制建模、或者P2H接入系统的研究这篇文章应该能帮你省下一两周的摸索时间。下面直接进入正题。1. 项目背景与整体设计思路1.1 系统里都有什么设备先把这个综合能源系统的物理拓扑讲清楚。最典型的结构包含这些设备电源侧风电机组WT、光伏PV、上级电网购电、热电联产机组CHP热源侧CHP、燃气锅炉GB、电锅炉EB、氢燃料电池FC产热部分模型还会计入电解槽废热回收氢环节电解槽EL、储氢罐HST、氢燃料电池FC负荷侧电负荷、热负荷、氢负荷这个拓扑在大量论文里都有出现。实际建模时要注意如果不加电储能系统灵活性会弱一些此时电制氢就承担了主要的跨时段调节作用。既然题目要求“热电优化”热平衡就是核心约束之一建议至少要有燃气锅炉作为补充热源否则在风电低谷、CHP出力受限时热负荷可能根本满足不了。1.2 为什么选“阶梯式碳交易”而不是固定碳价固定碳价本质上是一个线性惩罚项对系统的影响是均匀的每多排一吨碳成本固定增加一个常数。但真实碳市场并不是这样配额短缺越严重边际履约成本往往越高。阶梯式碳交易机制就是把碳排放权价格分成几档超出配额越多额外购买的碳价越高。从优化角度看阶梯碳价是一个分段线性凸函数相当于给碳排放设置了一个递增的惩罚斜率。这意味着系统在安排调度时不只是“算总账”而是会主动控制每个时段的碳排放强度。特别是当阶梯足够陡时模型会自发倾向于用低碳设备替代高碳设备比如用氢燃料电池替代燃气锅炉供热。从工程角度各省的碳配额分配和履约机制也普遍带有阶梯惩罚性质。所以在项目里引入阶梯式碳交易并不是为了增加模型复杂度而是让优化结果更贴近政策实际。1.3 电制氢在系统里的作用不是“多一个设备”那么简单很多新手看到P2H第一反应是“就是一个电负荷嘛”。这个理解太浅了。P2H同时具备“可转移的电负荷”和“可再生的氢源”双重属性。在风电大发时段电价低、弃风量多电解槽启动把多余电能转化为氢气储存起来在热负荷高峰或电负荷高峰时段燃料电池释放氢能同时提供电和热。这样一来系统实际上多了一条“电→氢→热/电”的能量搬移通道原本“以热定电”的热电耦合关系被打破了。举个具体例子没有P2H时冬季夜间热负荷高CHP为了保证供热必须维持较高电出力而此时风电也处于高峰系统电出力严重过剩唯一的选择是弃风或者向电网低价售电。有了P2H之后这部分多余电力驱动电解槽制氢氢气存起来留到白天峰时段通过FC放能系统灵活性显著提升。所以做这个项目时不要只把P2H当成一个耗能设备去建模它真正的作用是给系统增加一个跨时段、跨介质的灵活性资源。2. 阶梯式碳交易机制建模2.1 碳配额与实际碳排放核算碳交易建模的第一步是搞清楚“配额从哪来、排放怎么算”。免费配额通常有两种给法。第一种是按系统总负荷乘以基准排放强度比如系统电负荷和热负荷各乘以一个碳排放基准值加总得到该周期的免费配额。第二种是按各碳排放源分别给配额系数比如CHP每输出1MWh电力给一个碳配额燃气锅炉每输出1MWh热力给一个配额。我建议用第二种因为各设备的配额系数可以单独调整做敏感性分析时更灵活。实际碳排放的核算范围要小心通常包括三部分CHP燃烧天然气的直接排放按电出力或燃料消耗量折算燃气锅炉燃烧天然气的直接排放外购电力的间接排放按电网平均排放因子折算写成公式就是E_actual sum(λ_chp * P_chp λ_gb * Q_gb λ_grid * P_buy)其中λ是各环节的排放系数单位是tCO₂/MWh。需要注意燃料折算逻辑如果是按燃料消耗量算要先从热出力反推天然气消耗量再乘以燃料排放因子如果按出力乘以排放系数则是简化处理适合规划层面的调度模型。配额和实际排放都算清楚之后得到配额缺口x E_actual - E_quota这个x就是进入阶梯碳价计算的输入量。2.2 阶梯碳价的分段线性化表达阶梯碳价的核心思想是配额缺口越大单位碳价越高。常见设置是每段长度d比如50吨基准碳价为c₀第一段价格c₀第二段价格2c₀第三段价格3c₀以此类推。数学上要处理的是一个分段线性函数。如果直接用if-else逻辑在优化模型里是行不通的必须线性化。标准做法是引入0-1变量和Big-M约束。假设阶梯分3段引入二元变量z₁、z₂和连续变量v₁、v₂分别表示第1段和第2段是否启用、每段的购买量x v₁ v₂ 0 ≤ v₁ ≤ d * z₁ 0 ≤ v₂ ≤ d * z₂ v₂ ≥ d * z₁ # 第2段启用之前第1段必须填满 z₂ ≤ z₁ # 必须第1段激活后才能激活第2段 z₁, z₂ ∈ {0,1}这套约束的逻辑是低价段必须优先填满只有第1段达到上限d之后第2段才会启用。由于碳价单调递增目标函数是成本最小化模型天然倾向先用低价段所以实际上不需要额外强制约束但加上写段约束会让模型更严谨尤其是做敏感性分析时。对应碳交易成本为C_CO2 c₀ * v₁ 2c₀ * v₂如果允许系统出售富余配额即x为负数的情况可以在模型中增加一个卖出变量v_sell按基准碳价获得收益C_CO2 c₀ * v₁ 2c₀ * v₂ - c₀ * v_sell实际项目中很多论文设定碳交易只考虑购买配额即x≥0这样模型简单一些但会失去“卖出富余配额”这一层经济反馈。我建议把卖出也加上因为当系统引入大量P2H和FC之后碳排放可能会低于配额这时候卖出收益是影响结果的一个真实因素。2.3 整数变量的Big-M取值实践阶梯碳价建模中最容易被忽视的坑是Big-M常数。M如果取得太大LP松弛会变得很松混合整数规划求解时分支定界效率极低本来几秒能解完的问题可能要几分钟但如果M取太小又可能把可行域截掉导致模型约束失真。我的经验做法是先注释掉碳交易约束用纯线性规划跑一遍模型记录系统的最大碳排放量然后用这个值乘以1.2到1.5倍作为M确保M始终大于变量的实际取值范围。在YALMIP里面提供了implies函数可以处理逻辑约束但传统线性不等式写法效率更高。你可以两者都试一下看自己用的求解器对哪种形式求解更快。3. 电制氢环节建模与热电协同3.1 电解槽模型与产热回收电解槽的建模相对简单输入电功率P_el输出氢功率H₂_prod效率η_el通常在0.6到0.7之间按氢的高热值计H₂_prod η_el * P_el除了产氢电解槽运行时会伴随产热这部分热量在冬季供热场景中是有价值的。可以在模型里加一个热回收系数η_heat取值大概在0.2到0.4之间Q_el_rec η_heat * P_el但这个项是否加入取决于你设定的系统结构。如果只是做“热电联供”层面的优化忽略废热回收影响不大如果热负荷很紧张废热回收就会在结果中体现为“电解槽在供热时段有额外收益”会改变电解槽的运行策略。实操中建议先不加等基础模型跑通后再把这个细节加进去对比一下差异。电解槽的约束还有出力上下限P_el_min ≤ P_el ≤ P_el_max以及爬坡约束但电解槽本身就是快响应设备在小时级调度中一般不需要限制爬坡速度。这一点和CHP不同我后面会展开说。3.2 储氢罐的动态状态约束储氢罐对跨时段能量搬移至关重要它把电解槽的产氢和燃料电池的用氢在时间维度上解耦。储氢罐的动态模型用SOC荷电状态表示SOCₜ₊₁ SOCₜ (H₂_in - H₂_out) * Δt其中H₂_in来自电解槽产氢H₂_out供给燃料电池或直接氢负荷。SOC有容量上下限0 ≤ SOCₜ ≤ SOC_max这里有一个实操中非常容易踩的坑周期初末约束。很多论文要求SOC_1 SOC_T即调度周期开始时和结束时的储氢量一致称为“循环一致性”。这个约束听起来合理但实际求解时是强约束如果系统里氢负荷不稳定很可能导致模型无解。我建议改成初始储氢量设为固定值期末储氢量给一个可行范围比如SOC_1 0.2 * SOC_max 0.2 * SOC_max ≤ SOC_T ≤ 0.8 * SOC_max这样既保证了储氢罐在周期内有调节空间又避免了强等式约束造成的可行域收缩。等模型全部跑通、结果稳定了再回过头试严格的循环一致性约束看是否有可解空间。3.3 氢燃料电池热电联产的“可调节阀门”氢燃料电池是P2H链条的最后一环作用是释放氢能同时提供电和热。模型如下P_FC η_FC_e * H₂_in_FC Q_FC η_FC_h * H₂_in_FC其中H₂_in_FC是燃料电池消耗的氢功率按热值计η_FC_e是发电效率η_FC_h是产热效率两者之和通常为0.8到0.9左右。这里有个关键选择FC的热电比是固定还是可调。如果固定则Q_FC R_FC * P_FC其中R_FC是一个常数典型值在1.0到1.5之间取决于FC类型。如果用可调模型电效率和热效率之间会有耦合关系这就变成非线性问题了。对于24时段的小规模MILP模型固定热电比是主流做法简单且收敛可靠。FC在系统中的角色简单说就是“把氢变成电和热的转换器”。它的价值在于当碳价高、气价高、电价也高的时候用储存的氢来发电供热可以同时规避三方面的成本压力。3.4 P2H如何改变系统的热电运行方式把以上设备串起来就能看出P2H对系统运行方式的本质改变。没有P2H时系统只有两条能量路径CHP供给电和热GB补热。系统必须围绕热负荷调整CHP出力电力过剩就弃风或卖电。这是典型的“以热定电”。有P2H之后系统出现第三条路径电→氢→电/热。谷电时段风电大发或电价低电解槽吸收多余电力产氢储氢峰电时段FC放氢产电产热。于是系统运行方式变成夜间风电大发、电价低时电解槽启动吸收多余电力CHP可以适当降低出力热负荷由GB补充白天峰电、热负荷高时FC放氢供能替代部分购电和GB用气碳价高时系统会尽量多用氢能、少用天然气减少碳排放这个机制的本质是“低谷买电制氢、高峰放能”把氢能当作跨时段储能来用。调度模型会自发地在碳价、气价、电价三者的博弈中优化出最优策略。所以从这个角度重新审视题目中的“热电优化”P2H让原本单纯的热电联供变成了“电-热-氢”的联合优化这个扩展才是这个项目真正值得做的原因。4. 优化目标与约束体系4.1 目标函数四项成本怎么平衡整个优化模型的目标函数是总运行成本最小化包含以下几项min F C_grid C_gas C_CO2 C_curtail C_om购电成本C_grid从上级电网购电的费用按分时电价计算公式为sum(P_buy_t * price_t * Δt)购气成本C_gas购买天然气的费用按热值计价公式为sum(Q_gas_buy_t * gas_price * Δt)碳交易成本C_CO2按第2章的阶梯碳价模型计算这是整个项目最核心的成本项弃风惩罚C_curtail为了避免模型为了省钱而随意弃风给弃风加一个单位惩罚系数。这个系数一般取得比边际电价略高比如每MWh弃风惩罚100到200元让模型在“弃风”和“其他调节手段”之间做一个折中运维成本C_om各设备的单位出力运维成本包含CHP、GB、EB、电解槽、FC等这里有一个非常重要的工程细节单位统一。如果功率用MW时间间隔Δt1小时则能量单位是MWh价格单位用元/MWh成本自动就是元。如果功率用kW价格用元/kWh则成本是元的千分之一。写代码前务必把单位确定下来不然后面检查结果时非常痛苦。4.2 电、热、氢三类平衡约束能量平衡约束是整个模型的骨架。三类平衡必须分别满足电平衡P_wind P_pv P_chp P_fc P_buy P_dis P_load P_el P_eb P_char左边是电源提供右边是负荷和用电设备消耗。如果系统中有电储能放电P_dis、充电P_char需要区分开如果不加电储能就把这两项去掉。注意电储能充放电不能同时进行要么用同一个变量正负表示并加约束要么引入二元变量。热平衡Q_chp Q_gb Q_eb Q_fc Q_el_rec Q_load热平衡通常不考虑管网损耗按严格平衡处理。如果热负荷数据本身波动很大允许加一个很小的松弛变量也可以但基础模型建议严格平衡这样问题更清晰。氢平衡H₂_prod_el - H₂_in_fc - H₂_load - (SOCₜ₊₁ - SOCₜ) 0这个式子把电解槽产氢、储氢罐充放、FC耗氢和氢负荷串在了一起。这三类平衡约束看似简单但实际写代码时特别容易漏项。我遇到过的情况是电平衡里忘了加电解槽的耗电结果系统凭空多出一部分电算出来的购电成本偏低结果完全失真。建议每加一个设备先回到三个平衡方程里检查有没有遗漏对应项。4.3 CHP可行域与机组爬坡约束CHP的建模方式会直接影响结果质量。简单模型用线性热电比Q_chp c_m * P_chp这种模型相当于强制CHP的热电出力比例固定操作简单但过度约束了机组的灵活性。实际抽凝式CHP可以在一定范围内调整热电比用四边形可行域建模更准确。四边形可行域在P-Q平面上用四个顶点定义约束写成几组线性不等式。以常见的抽凝式机组为例可行域大概包含这四个约束方向最大电出力上限最小电出力与热出力相关最大热出力限制最小冷凝工况下的电出力下限用YALMIP实现时直接写四组不等式即可形式上和普通上下限约束没有区别只是约束矩阵复杂一些。爬坡约束方面我建议加在CHP和GB上|P_t - P_{t-1}| ≤ ramp * Δt注意t1时需要设定初始出力。电解槽和FC响应速度快在小时级调度里不需要爬坡约束加了反而增加求解负担。4.4 约束取舍的实战经验这条可能是整个项目里最“实际”的建议约束不是越多越好。很多刚做这个课题的同学喜欢把所有设备都加上爬坡、上下限、最小启停时间等约束模型规模迅速膨胀求解时间从几秒变成几分钟甚至直接不可行。我的经验是24时段小规模模型爬坡约束加在CHP和GB上即可电储能如果没有明确要求可以先不加减少二元变量储氢罐初末约束设成宽松范围不要用严格等式如果只是复现论文结论可以先求一遍无整数变量的松弛模型确认可行域没有问题再加整数变量先跑通再丰富好过一次到位但解不出来。5. MATLAB实现从数学到代码5.1 整体代码结构我强烈建议把代码模块化不要所有东西堆在一个脚本里。推荐目录结构main.m主程序定义参数、调用构建函数、求解params.m参数定义文件包括负荷、风电、电价、气价、碳价、设备参数build_vars.m定义所有决策变量YALMIP语法build_constraints.m构建全部约束build_objective.m构建目标函数solve_and_post.m求解、提取结果、绘图这种模块化的好处是显而易见的改参数只需要动params.m换设备拓扑只需要改约束构建部分不用动主程序。我做完这个项目之后做多场景对比固定碳价vs阶梯碳价、有P2Hvs无P2H只需要写一个循环脚本非常方便。5.2 YALMIP建模关键代码核心建模代码如下关键部分加注释说明% 决策变量定义T24时段 P_chp sdpvar(1, T); % CHP电出力 Q_chp sdpvar(1, T); % CHP热出力 P_gb sdpvar(1, T); % 燃气锅炉热出力 P_el sdpvar(1, T); % 电解槽电功率 P_fc sdpvar(1, T); % 燃料电池电功率 Q_fc sdpvar(1, T); % 燃料电池热出力 SOC_hst sdpvar(1, T); % 储氢罐储氢量 P_buy sdpvar(1, T); % 购电功率 P_wind_use sdpvar(1, T); % 风电实际出力 % 阶梯碳交易变量 z binvar(K-1, T); % 0-1变量K3时有两个二进制变量 v sdpvar(K-1, T); % 每段的配额购买量约束定义示例Constraints []; % 电平衡 Constraints [Constraints, P_wind_use P_pv P_chp P_fc P_buy ... P_load P_el P_eb]; % 热平衡 Constraints [Constraints, Q_chp Q_gb Q_eb Q_fc Q_load]; % 氢平衡与储氢罐SOC更新 Constraints [Constraints, SOC_hst(2:end) SOC_hst(1:end-1) ... (eta_el*P_el(1:end-1) - P_fc(1:end-1)/eta_fc_e - H2_load(1:end-1))];注意这个氢平衡公式中P_fc是FC的电出力要换算回氢输入功率需要用FC的发电效率做除法H₂_in_FC P_fc / η_FC_e。阶梯碳交易的线性化约束% 实际碳排放 E_actual lambda_chp * sum(P_chp) lambda_gb * sum(Q_gb) lambda_grid * sum(P_buy); E_quota quota_chp * sum(P_chp_max) quota_gb * sum(Q_gb_max); x E_actual - E_quota; % 阶梯分段线性化 x sum(v, 1); % 配额缺口由各段购买量组成 for k 1:K-1 Constraints [Constraints, v(k,:) 0, v(k,:) d * z(k,:)]; if k 1 Constraints [Constraints, v(k,:) d * z(k-1,:)]; end end % 单调激活后续段必须先激活前续段 for k 1:K-2 Constraints [Constraints, z(k1,:) z(k,:)]; end % 碳交易成本假设3段价格分别为c0, 2c0, 3c0 C_co2 c0 * (sum(v(1,:)) 2*sum(v(2,:)) 3*sum(v(3,:)));这里需要特别提醒上面是逐时段做阶梯分段即每个时段单独计算配额缺口和阶梯成本。另一种做法是对整个调度周期汇总碳排放后一次性结算这取决于你的碳配额结算周期假设。两种方式都有人用但要保证前后一致不要混用。5.3 求解器配置与求解YALMIP本身不是求解器它只是一个建模层真正求解需要调用底层求解器。推荐用Gurobi求解MILP的效率和稳定性都非常好。求解设置如下ops sdpsettings(solver, gurobi, verbose, 2, ... gurobi.MIPGap, 0.01, gurobi.TimeLimit, 300); sol optimize(Constraints, Objective, ops); if sol.problem 0 disp(求解成功); else disp([求解失败错误码 num2str(sol.problem)]); yalmiperror(sol.problem); endMIPGap设置到0.011%通常足够了工程上不需要证到全局最优。TimeLimit设300秒万一模型卡住也能拿到一个可行解如果求解器输出的话。如果你不想装Gurobi用MATLAB自带的intlinprog也可以但需要在YALMIP里指定求解器为intlinprog且不能修改Gurobi特有的参数。我实测下来这种几十个二元变量、几百个连续变量的MILP模型Gurobi几秒就能解完intlinprog稍慢一些但也在可接受范围。5.4 后处理与结果可视化求解后提取各个变量的结果P_chp_opt value(P_chp); Q_chp_opt value(Q_chp); P_fc_opt value(P_fc); SOC_opt value(SOC_hst);画图方面推荐两类图一是电平衡堆叠图用area命令把电源风电、光伏、CHP、FC、购电按正方向堆叠把负荷电负荷、电解槽、电锅炉按负方向堆叠形成上下镜像的balance图这是论文里最常见的形式。二是成本构成柱状图把购电成本、购气成本、碳交易成本、弃风惩罚分别画成柱状不同方案放一起对比一眼能看出碳交易和P2H对成本结构的影响。6. 关键结果分析与有效性验证6.1 怎么证明模型是对的模型做完之后不能只看“求解成功”就觉得万事大吉要花时间做对比验证。我建议至少做三组对比第一组基准系统无P2H、固定碳价与含P2H系统的结果对比。这组对比验证P2H的有效性——加入电解槽和FC后弃风率应该下降总成本应该有所变化。如果含P2H的系统弃风率反而上升或者总成本比基准系统还高那要检查是不是FC效率设置太低、储氢罐容量太小或者P2H的设备成本参数有问题。第二组固定碳价与阶梯碳价的对比。固定碳价下系统只需要对总碳排放量做一个线性惩罚阶梯碳价下系统会主动控制碳排放峰值的时段分布。对比结果应该看到阶梯碳价下系统的碳排放总量更低但碳交易成本可能反而更低因为系统提前优化了排放行为。第三组不同碳价基数、不同阶梯长度的敏感性分析。这种分析能证明模型对碳价变化的响应是合理的——碳价越高P2H利用小时数越高碳排放下降越明显。6.2 碳价敏感性分析怎么做敏感性分析的操作很简单写一个for循环把碳价基数c₀从50扫到300元/吨步长50每次重新求解模型记录总成本、碳排放量、弃风率、P2H产氢量最后画双轴图。预期结果是随着碳价上升碳排放量单调下降P2H产氢量上升弃风率下降。如果曲线出现非单调的突变说明模型里可能存在数值问题或者约束不够平滑。我实际跑的时候发现一个有意思的现象碳价从50升到100时碳排放量下降非常明显因为系统从容地提高FC出力、减少GB产热但从150升到300时碳排放下降变得平缓。这是因为CHP的最小出力约束和储氢罐容量限制了系统进一步减排的能力。这个现象本身就是一个很好的分析点可以写进结论里。6.3 从结果里找异常的方法运行结果中出现一些“难以解释”的现象时不要怀疑模型的逻辑先去查参数设置。如果碳交易成本出现负数检查是否允许卖出配额。如果不允许需要在约束里加x≥0或者设置富余配额不能产生收益。如果FC出力一直为0大概率是FC效率设置太低导致“制氢-储氢-放氢”全链条效率经济性不如直接购电购气。这是最常见的问题整个P2H链条的综合效率大约0.6×0.50.3左右电解效率0.6、FC发电效率0.5如果不考虑峰谷电价差和碳成本P2H往往经济性不如直接购电。只有在电价峰谷差足够大、或者碳价足够高的情况下P2H才能体现价值。如果储氢罐SOC一直处于上限或下限说明储氢罐容量设置偏小或偏大调整容量参数即可。没必要因为这个怀疑模型错误。7. 常见问题与排查经验7.1 不可行解怎么排查这是这个项目里出现频率最高的问题没有之一。一旦遇到按以下顺序排查查看sol.problem返回的错误码确认是Infeasible还是Numerical issue把所有负荷和出力画在一张图上看哪个时段明显不平衡临时注释掉整数约束只求松弛LP看是否可行。如果LP可行而MILP不可行问题出在整数约束上如果LP也不可行问题出在平衡约束或设备上下限上检查储氢罐初末约束这是最容易导致不可行的地方。把SOC_T的范围放宽或者把初始SOC设为外生变量检查电平衡约束里有没有漏掉设备的耗电项7.2 求解时间过长原因通常有三个第一个是二元变量太多。阶梯碳价如果逐时段建模24时段×3段72个二元变量求解时间可能偏长。可以考虑改为全局碳结算——整个调度周期只算一次总碳排放量的阶梯成本二元变量降为2-3个。两种建模的经济含义不同但如果你只是快速验证全局结算能省很多时间。第二个是Big-M参数太大。M取变量实际范围的1.2到1.5倍即可。M过大会让LP松弛质量变差分支定界效率骤降。第三个是MIPGap设置过小。设到0.01就够了如果完全不设求解器默认追求全局最优时间会指数上升。7.3 YALMIP报错“No suitable solver”这是环境问题。YALMIP自带的bnb求解器求解MILP非常慢几十个二元变量可能就要跑很久。建议安装Gurobi或者至少用MATLAB自带的intlinprog。在YALMIP里检查求解器可用性yalmiptest这个命令会列出所有可用求解器。确认Gurobi出现在列表中然后用sdpsettings(solver,gurobi)调用。7.4 数值问题导致结果不连续或震荡现象相邻时段同一个设备出力突变不符合物理规律。原因通常是没有爬坡约束、Big-M过大导致数值精度丢失、或者单位不统一导致目标函数中某些项权重失衡。解决方案就是之前强调的统一单位为MW和元/MWh给CHP和GB加爬坡约束检查各项成本的量级是否在一个数量级内。如果购电成本是几十万元级别而碳交易成本只有几百元级别目标函数中碳交易的影响会被忽略得出的结果看起来就像“碳价没起作用”。7.5 复用与扩展的小技巧这个项目框架最大的价值是扩展性好。跑通之后后续可以在此基础上做很多扩展多典型日场景把单一天场景扩展为多个典型日加入场景概率考虑不确定性用鲁棒优化或随机优化处理风电出力不确定性加入电储能和储热装置进一步丰富系统灵活性资源将固定效率的FC改为变效率PWL模型细化设备模型考虑需求响应让部分电负荷和热负荷具备可平移性我个人的体会是这个模型框架最值钱的地方在于一旦设备模型和约束体系写清楚之后换设备、换机制、换场景都是“搭积木”式的修改而不是推倒重来。最后说点个人体会。这类IES优化项目很多时候难的不是数学本身而是把物理过程抽象成数学表达、再把数学表达落成可调试代码的过程。我做完这个项目的一个明显感受是阶梯碳交易和P2H的真正价值不是让模型变得更复杂而是让系统多了一个经济信号碳价和一个物理自由度氢能储放。两者叠加之后很多原本“被迫弃风”或“以热定电”的困境会在优化结果里自动消失。如果你也在做类似的课题建议先把基准系统跑通再一步步加机制。这个项目整体上是个性价比很高的练手对象模型不算复杂但结果很能说明问题。希望这篇梳理能帮你少走点弯路。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →