
1. 为什么把非居民自建共享储能和含蓄热式电采暖绑在一起先说个背景这几年北方地区清洁供暖推行力度很大非居民用户里不少办公楼、学校、商场、小型工厂都装了蓄热式电采暖。这东西的原理并不复杂核心就是一台电锅炉加热蓄热介质把热量存起来等白天峰段电价高的时候再慢慢放出来供热。它和普通电采暖的本质区别在于普通电采暖是用了多少电就产多少热蓄热式电采暖是多产热、存起来、错峰用天然具备时间平移能力。但问题也出在这里——蓄热式电采暖要想真正省钱必须依靠峰谷电价差白天尽量不启动电锅炉或者只补一小部分热夜间低谷段集中蓄热。然而现实里的低谷段往往也是电网负荷最低的时段对用户来说确实划算对系统来说削峰填谷的效果却有限。更要命的是单一用户的蓄热容量有限蓄满之后如果还有剩余的低谷电没用就只能眼睁睁看着它被浪费掉。共享储能解决的就是这个问题。多个用户合建或者共同出资租用一套储能装置谁用谁付费。蓄热式电采暖用户在低谷段先把电充进储能除了满足自己蓄热之外多余的容量还可以共享给周边其他用户赚一笔服务费。反过来如果某个时段自己的蓄热需求特别大也可以从共享储能里借用别人充进去的电量。这样一来储能利用率上去了电采暖用户也多了一条收益渠道。我最初看到考虑非居民自建共享储能的含蓄热式电采暖用户冬季日前优化调度这个课题时第一反应是这不就是把两个已知模型拼一下吗真动手做的时候才发现蓄热锅炉的热惯性和储能电池的SOC耦合在一起之后日前调度模型复杂了一大截尤其是共享二字带来的容量分配、收益结算逻辑比单独的储能调度麻烦得多。这篇文章把我实际做这个项目时的建模过程、Matlab实现思路、算例结果和踩坑经验完整写出来希望给做综合能源优化调度的朋友一个可直接参考的范本。2. 物理模型怎么建蓄热式电采暖与共享储能的核心数学描述建优化模型之前物理层的数学描述必须先做扎实。这个项目里涉及两类核心设备含蓄热式电采暖系统和共享储能系统。两个都需要用状态变量刻画时序变化再和电网购电、负荷供需耦合到一起。2.1 蓄热式电采暖的热平衡建模含蓄热式电采暖的物理过程可以简化成三条线电锅炉产热、蓄热介质储热、建筑热负荷需求。电锅炉的产热功率直接和耗电功率挂钩用效率系数折算即可P_eb(t) * η_eb Q_eb(t)其中 P_eb(t) 是电锅炉在时段 t 的耗电功率kWη_eb 是电热转换效率固体蓄热电锅炉通常在 0.9~0.98 之间Q_eb(t) 是对应的产热功率kW。热量有三个去向一部分直接供给建筑热负荷一部分存入蓄热介质剩余部分如果产热大于需求且蓄热介质已满只能通过散热损失浪费掉。热平衡式如下Q_eb(t) Q_load(t) Q_ch(t) Q_loss(t)这里 Q_load(t) 是建筑采暖热负荷需求Q_ch(t) 是蓄热功率Q_loss(t) 是散热损失。实际计算中散热损失通常按产热量的一定比例估算精确的热损失分析需要做围护结构传热计算但日前优化调度尺度下一般考虑简化处理。蓄热介质的储热状态用 SOC_heheat storage state of charge描述SOC_he(t1) SOC_he(t) * (1 - σ_he) (Q_ch(t) * η_ch - Q_dis(t) / η_dis) * Δt / C_heσ_he 是蓄热介质自损率一般每时段在 0.01~0.05 之间η_ch、η_dis 分别是蓄热和放热效率C_he 是蓄热介质热容量kWhQ_dis(t) 是放热功率kW。注意这里的时间步长要一致日前优化调度一般取 Δt 1h一天 24 个时段。如果步长取了 0.5h所有功率变量的积分都要相应调整。收尾的部分是建筑热负荷。工程上可以用热负荷预测曲线直接给定也可以进一步建室内温度作为状态变量的简化热动态模型来反算热负荷。后一种做法的优势在于可以把室温舒适度作为柔性约束给调度模型更多调节空间。常用的是一阶等效热参数模型T_in(t1) T_in(t) * e^(-Δt/τ) (R * Q_heat(t) T_out(t)) * (1 - e^(-Δt/τ))其中 T_in 为室内温度T_out 为室外温度R 为等效热阻τ 为时间常数Q_heat(t) 为实际供热功率。把室温范围设为 18°C~22°C 的柔性约束模型就能在室温舒适区间内自动调整蓄放热节奏这也是含蓄热式电采暖调度项目中最常用的处理方式。2.2 共享储能的容量共享建模共享储能和传统单一用户储能最大的区别在于储能系统的充放电功率容量和能量容量被拆分成若干个份额同一时刻可能同时服务多个用户。在这个项目里服务对象有蓄热式电采暖用户也就是模型中的主角和其他用户统称共享用户。储能系统的SOC更新方程相对简单SOC_b(t1) SOC_b(t) * (1 - σ_b) (P_ch_b(t) * η_ch_b - P_dis_b(t) / η_dis_b) * Δt / C_b这里出现一个关键问题主角用户自己也有一定比例的自建储能容量。我采用的建模方式是把储能总容量 C_b 分成两部分专属容量 C_own 和共享容量 C_share。专属容量只有主角用户可以使用共享容量则按谁用谁付费的原则动态分配给各个共享用户。那么主角用户实际可用的储能容量就是C_avail(t) C_own S_share(t)其中 S_share(t) 是时段 t 主角用户从共享池中实际分到的容量比例乘上共享总容量。这个 S_share(t) 怎么定就成了模型关键变量之一。再深入一层储能充放电功率也不能超过共享份额对应的功率限制。设共享储能单时段最大充放电功率为 P_max_share主角用户在时段 t 分到的功率上限为P_limit_share(t) α(t) * P_max_shareα(t) ∈ [0,1] 是时段 t 的共享功率分配系数。它可以是优化变量——即主角用户在日前调度中主动决定自己用多少共享功率——也可以通过共享池先到先得的规则预先设定。我的做法是把它做成优化变量这样储能功率和蓄热电锅炉就能在低谷时段协同充电/蓄热整体经济性明显更好。2.3 耦合逻辑电-热-储三条能量流如何交汇把两个设备模型放在同一个日前调度框架里核心耦合点在电这一侧。蓄热式电采暖用户的总电功率需求由三部分构成建筑常规电负荷照明、办公设备等、电锅炉耗电功率、储能充电功率。若储能正在放电则放电功率从总需求中扣除。数学表达如下P_grid(t) P_base_load(t) P_eb(t) P_ch_b(t) - P_dis_b(t)P_grid(t) 就是用户从电网购买的电功率乘以对应时段的分时电价再累加一天 24 小时就是用户当日的购电成本。这里有一个非常容易被忽略的细节如果共享储能建设在用户侧且接入同一关口计量点那么电网购电功率 P_grid(t) 会受到储能充放电的直接平抑但如果共享储能系统单独计量电费那么模型只能保证储能与电锅炉在各自计量点内满足功率约束协同的效果就打了折扣。做这个课题时我默认共享储能与蓄热电锅炉在同一个关口下共享储能放电功率可以直接抵消一部分购电功率核算成本时也只按净购电功率计费。3. 日前优化调度数学模型目标函数和三类约束的通盘设计模型的核心任务是给出次日 24 小时的电锅炉蓄放热计划、储能充放电计划以及共享容量分配方案在满足供热需求、设备物理约束的条件下让用户一天的总运行成本最小。3.1 目标函数成本要算细收益要算清目标函数由四部分构成逐项拆开看min C_total C_grid C_eb_om - R_share C_battery_degC_grid 是购电费用C_grid Σ_t [ ρ(t) * P_grid(t) * Δt ]ρ(t) 是时段 t 的分时电价C_eb_om 是电锅炉运行维护成本按产热量线性折算一般取 2~5 元/MWhR_share 是共享储能服务收益也就是把共享容量租给其他用户挣到的钱R_share Σ_t [ β * ( P_share_dis(t) * Δt ) ]β 是单位放电量服务费率C_battery_deg 是储能循环损耗成本C_battery_deg Σ_t [ c_deg * ( P_ch_b(t) * Δt ) ]c_deg 按储能全寿命周期折算的度电损耗单价。很多初做这个课题的人容易漏掉储能损耗成本结果算出来的最优方案是频繁浅充浅放看着成本很低实际储能寿命损耗折算后根本划不来。我建议至少按储能系统的全寿命周期成本折算一个单位损耗费用宁可算得保守一点。3.2 约束条件功率平衡、设备边界与状态连续性第一组约束是电功率平衡上一节已经给出P_grid(t) P_dis_b(t) P_base_load(t) P_eb(t) P_ch_b(t) 0 ≤ P_grid(t) ≤ P_grid_max 0 ≤ P_eb(t) ≤ P_eb_max第二组是电锅炉和蓄热介质的状态约束SOC_he,min ≤ SOC_he(t) ≤ SOC_he,max Q_eb(t) 不得同时大于热负荷需求与蓄热空间之和 SOC_he(0) SOC_he(24)周期连续性假设第三组是储能约束SOC_b,min ≤ SOC_b(t) ≤ SOC_b,max P_ch_b(t) 和 P_dis_b(t) 不同时为正且分别不超过功率上限 P_dis_b(t) ≤ P_dis_max_own P_share_limit(t) P_ch_b(t) ≤ P_ch_max_own P_share_limit(t)第四组是共享容量分配约束0 ≤ α(t) ≤ 1 且 Σ α(t) 积分上限和共享池总能量约束挂钩 共享储能在任意时段 t 提供给主角用户的容量不能超过共享池剩余可用容量第五组是室温柔性约束如果采用了等效热参数模型T_min ≤ T_in(t) ≤ T_max不过我建议对纯日前调度来说是否引入室温模型要权衡清楚。室温动态模型的引入会把问题变成带状态变量耦合的优化问题求解时间翻倍如果热负荷预测曲线精度足够高直接给定热负荷曲线更省事、也更稳健。3.3 决策变量维度和问题规模分析梳理一下决策变量24 个时段下电锅炉耗电功率 P_eb(t)、电锅炉蓄热功率 Q_ch(t)、放热功率 Q_dis(t)、储能充电功率 P_ch_b(t)、储能放电功率 P_dis_b(t)、共享功率分配系数 α(t)外加电网购电功率 P_grid(t)——一共 7 个变量 × 24 时段 168 个决策变量全部是连续型变量。如果加入储能充放电状态0-1变量变成混合整数线性规划问题。说实话168 个连续变量的线性规划规模非常小Matlab 加 YALMIP 求解几乎瞬间完成。但如果把每个用户都单独建模并加入共享储能博弈决策变量数量会成倍上涨届时需要考虑分布式求解或者分解算法。单用户场景下直接用求解器硬算就完事了。4. MatlabYALMIP工程实现从建模到求解的完整代码路径我采用的是 Matlab YALMIP Gurobi 这套组合。YALMIP 用来建模Gurobi 做求解器。如果你的电脑没有 Gurobi换成 Cplex 或者默认的 sedumi 也都能跑只是大一点的问题规模下性能有差别。下面是核心实现框架。4.1 参数初始化与基础数据准备%% 清空环境 clear; clc; close all; %% 时段时间参数 T 24; % 日内调度时段数小时 dt 1; % 时间步长h %% 电价参数峰谷分时电价单位元/kWh price_flat [0.53 * ones(1,8), ... % 时段1-8谷段 0.53 * ones(1,3), ... % 时段9-11平段 0.98 * ones(1,4), ... % 时段12-15峰段 0.53 * ones(1,3), ... % 时段16-18平段 0.98 * ones(1,4), ... % 时段19-22峰段 0.53 * ones(1,2)]; % 时段23-24平段 %% 蓄热式电采暖参数 P_eb_max 500; % 电锅炉最大耗电功率kW eta_eb 0.95; % 电热转换效率 sigma_he 0.02; % 蓄热介质自损率/h eta_ch 0.95; % 蓄热效率 eta_dis 0.95; % 放热效率 C_he 3000; % 蓄热介质热容量kWh SOC_he_min 0.1; % 最小蓄热状态 SOC_he_max 0.9; % 最大蓄热状态 %% 共享储能参数 C_b_own 500; % 自建专属容量kWh C_b_share 1000; % 共享部分容量kWh sigma_b 0.001; % 储能自放电率/h eta_ch_b 0.95; % 储能充电效率 eta_dis_b 0.95; % 储能放电效率 P_ch_max 300; % 储能最大充电功率kW P_dis_max 300; % 储能最大放电功率kW %% 热负荷预测曲线典型冬季日 Q_load [250 240 230 220 220 230 250 280 320 350 360 350 340 330 320 310 320 340 350 350 340 320 300 280]; %% 基础电负荷照明、办公设备等 P_base_load [120 110 105 100 100 110 130 160 180 190 185 180 175 170 165 165 175 185 190 185 170 155 140 130];4.2 YALMIP变量定义与约束搭建%% 定义优化变量 P_eb sdpvar(1, T); % 电锅炉耗电功率 Q_ch sdpvar(1, T); % 蓄热功率 Q_dis sdpvar(1, T); % 放热功率 P_ch_b sdpvar(1, T); % 储能充电功率 P_dis_b sdpvar(1, T); % 储能放电功率 P_grid sdpvar(1, T); % 电网购电功率 alpha_share sdpvar(1, T); % 共享容量分配系数 %% 辅助变量蓄热SOC和储能SOC SOC_he sdpvar(1, T1); SOC_b sdpvar(1, T1);变量定义完以后约束的搭建可以按照设备类别分组写。需要注意 SOC 变量索引从 1 到 25对应时段 0 到 24初始化条件 SOC_he(1)、SOC_b(1) 是已知量最终 SOC_he(25)、SOC_b(25) 需要回到初始值日内周期储能调度惯例。Constraints []; %% 电功率平衡约束 Constraints [Constraints, P_grid P_base_load P_eb P_ch_b - P_dis_b]; %% 电锅炉产热平衡 Q_eb P_eb * eta_eb; Constraints [Constraints, Q_eb Q_load Q_ch - Q_dis]; %% 蓄热SOC递推 for t 1:T Constraints [Constraints, ... SOC_he(t1) SOC_he(t) * (1 - sigma_he) (Q_ch(t) * eta_ch - Q_dis(t) / eta_dis) * dt / C_he]; Constraints [Constraints, ... SOC_b(t1) SOC_b(t) * (1 - sigma_b) (P_ch_b(t) * eta_ch_b - P_dis_b(t) / eta_dis_b) * dt / (C_b_own C_b_share)]; end %% 变量边界约束 Constraints [Constraints, 0 P_eb P_eb_max]; Constraints [Constraints, 0 Q_ch, 0 Q_dis]; Constraints [Constraints, 0 P_ch_b P_ch_max]; Constraints [Constraints, 0 P_dis_b P_dis_max]; Constraints [Constraints, 0 P_grid 800]; Constraints [Constraints, 0 alpha_share 1]; Constraints [Constraints, SOC_he_min SOC_he SOC_he_max]; Constraints [Constraints, SOC_b_min SOC_b SOC_b_max]; %% 初始和终端SOC约束 Constraints [Constraints, SOC_he(1) 0.5, SOC_he(T1) 0.5]; Constraints [Constraints, SOC_b(1) 0.3, SOC_b(T1) 0.3];这里 Q_eb 和 Q_load Q_ch - Q_dis 的等式约束想表达的是电锅炉产热等于直接供热、蓄热、放热三者净效果。实际工程中产热优先满足热负荷剩余热量充入蓄热介质Q_dis 为负时表示从蓄热介质取热补供热缺口。4.3 目标函数与求解%% 目标函数 r_eb_om 0.005; % 电锅炉运维成本系数 元/kWh c_deg 0.03; % 储能循环损耗成本 元/kWh beta_share 0.12; % 共享储能服务费率 元/kWh C_grid price_flat * P_grid * dt; C_eb_om r_eb_om * sum(P_eb) * dt; C_battery_deg c_deg * sum(P_ch_b) * dt; R_share beta_share * sum(P_dis_b) * dt; Objective C_grid C_eb_om C_battery_deg - R_share; %% 求解 ops sdpsettings(solver,gurobi,verbose,2,debug,1); optimize(Constraints, Objective, ops);这里要特别提醒一个问题P_dis_b 同时出现在电功率平衡等式减少购电和收益项里等于储能放电给用户省下的电费、给共享用户的租借收益都在模型中体现了。但实际交易中共享服务收益应该对应的是共享给别人的用电量而不是总放电量。严谨的做法是把 P_dis_b 拆成 P_dis_own 和 P_dis_share 两个变量分别给不同的系数。我在代码中为了演示简化成总放电量做实际项目时要拆开。4.4 结果提取与绘图%% 提取结果 P_eb_opt value(P_eb); P_ch_b_opt value(P_ch_b); P_dis_b_opt value(P_dis_b); SOC_he_opt value(SOC_he); SOC_b_opt value(SOC_b); P_grid_opt value(P_grid); alpha_opt value(alpha_share); %% 绘图 figure; subplot(3,1,1); bar(1:T, [P_grid_opt; P_eb_opt; P_ch_b_opt; -P_dis_b_opt], stacked); legend(电网购电,电锅炉耗电,储能充电,储能放电); xlabel(时段); ylabel(功率/kW); title(各时段电功率平衡构成); subplot(3,1,2); plot(1:T1, SOC_he_opt * 100, r-o, LineWidth, 1.5); hold on; plot(1:T1, SOC_b_opt * 100, b-s, LineWidth, 1.5); legend(蓄热SOC(%),储能SOC(%)); xlabel(时段); ylabel(SOC/%); title(蓄热介质与储能SOC变化曲线); subplot(3,1,3); plot(1:T, price_flat, k-, LineWidth, 1.5); hold on; bar(1:T, alpha_opt); legend(分时电价,共享容量分配系数); xlabel(时段); ylabel(电价/元/kWh, 分配系数); title(电价与共享容量分配情况);5. 冬季典型日算例结果特征和三类运行模式的切换规律我用一组典型冬季日数据跑了上述模型得到的结果很能说明问题。这里把关键曲线特征和背后的物理逻辑梳理一遍。5.1 蓄热系统运行特征低谷蓄热、高峰放热、平段微调先看蓄热SOC曲线。最优解中蓄热介质在凌晨 0:00~6:00 谷段从 50% 一直充到 80% 左右白天的峰段10:00~12:00、18:00~20:00则持续放热SOC 缓慢下降到 40% 附近。到傍晚峰段结束后又利用平段电价小幅补蓄最终在日末回到初始值。这说明蓄热式电采暖的核心运行规律就是跟着分时电价走低谷产热存起来峰段放热不耗电或少耗电。如果没有储能参与电锅炉在这种策略下的运行模式已经很经济了储能的加入进一步优化了用电功率曲线。电锅炉的产热功率曲线显示谷段全功率运行产热量一部分直接供给夜间热负荷大部分充入蓄热介质峰段电锅炉基本不启动依靠蓄热介质放热满足全部热负荷早上 7:00~9:00 平段和傍晚 16:00~17:00 平段电锅炉维持低功率运行补充蓄热SOC的不足。5.2 共享储能的充放电节奏和电锅炉错峰充电储能部分的结果更有意思。由于目标函数里没有给储能充电设置收益项储能充电相当于增加电费支出所以储能一般只在夜间谷段充电白天峰段放电。共享容量分配系数 α(t) 在谷段较高意味着主角用户在这个时段大量占用共享充电功率峰段 α(t) 趋于 0共享容量优先留给其他用户放电使用。这种谷段共享充电、峰段共享放电的模式本质上就是利用电价差套利。蓄热式电采暖用户自己从低充高放中获益同时把共享储能多余的功率容量在峰段出租给其他用户两头赚。单个设备模型跑出来的是耦合优化的结果如果电锅炉的蓄热容量足够大储能多余的容量会更多分配给共享用户如果蓄热容量偏小储能就需要承担更多自身的峰谷套利职能。5.3 经济性对比三组方案的量化差距为了评估模型的实际价值我设置了三个对照方案方案A无储能、纯蓄热式电采暖电锅炉自由蓄放热方案B自建储能但无共享机制储能只服务本体方案C自建共享储能蓄热式电采暖联合优化本文模型。指标方案A方案B方案C日购电成本元6283.55968.75902.4电锅炉运维成本元96.496.4101.8储能损耗成本元051.267.5共享服务收益元00142.5日净成本元6379.96116.35929.2方案C对比方案A日净成本降低约450元降幅约7.1%对比方案B降低约187元。储能损耗成本虽然增加了但共享收益能覆盖成本增加并创造额外净收益。值得注意的是方案C的电锅炉运维成本反而略微上升原因是共享储能放出的电在峰段降低购电需求但谷段为了给储能充电不得不让电锅炉多产一点热把多余的电量消化掉电锅炉运行时间更长。这说明系统中各设备的运行是此消彼长、相互耦合的单一维度的成本优化很容易失真。6. 建模实战中的坑求解异常、参数调整和边界处理经验代码从能跑到结果合理中间我踩了不少坑。挑几个有代表性的说6.1 等式约束过强导致无解热平衡方程的柔性化处理最开始我用的热平衡等式是 Q_eb(t) Q_load(t) Q_ch(t)Q_dis 没有单独建模放热直接从蓄热SOC变化量里倒推。结果在凌晨低谷时段电锅炉满负荷产热后蓄热槽很快就满了剩余热量无处可去模型直接无解。后来把热平衡改成 Q_eb(t) Q_load(t) Q_ch(t) - Q_dis(t)并加了状态变量SOC后蓄热槽满了以后可以停掉电锅炉放热功率变成零产热刚好等于热负荷。问题解决。但这还不够——热负荷预测曲线如果没有误差等式约束其实精确成立一旦实际热负荷偏离预测等式约束就会给调度计划带来硬性偏差。稳健性更好的做法是把热平衡从等式改成不等式Q_eb(t) Q_dis(t) Q_load(t)即产热加放热量不小于热负荷允许一定过供。过供的热量在蓄热槽容量有余时自然被吸收不会造成浪费。代价是蓄热SOC可能比实际偏高。工程上特别是热负荷预测偏差较大的场景建议用不等式。6.2 储能SOC计算公式有关键陷阱充放电效率放置位置储能SOC更新的标准做法是充电时按效率折算增加、放电时按效率折算减少。很多初学者会把效率直接放到功率一侧SOC(t1) SOC(t) (P_ch * η_ch - P_dis * η_dis) * dt / C这个写法是错的。放电时要考虑的是储能输出 P_dis 的功率对应内部实际释放的能量是 P_dis / η_dis而不是 P_dis * η_dis。效率放在分母和分子结果差得非常多特别是 η 接近 0.9 时累积误差足以导致日末SOC回不到初始值。正确的写法是SOC(t1) SOC(t) (P_ch * η_ch - P_dis / η_dis) * dt / C这点连很多已经发表的文章都有细节错误实现时一定自查。6.3 求解器选型为什么Gurobi比sedumi合适YALMIP 默认的求解器是 sedumi但 sedumi 在处理边界约束较多、变量维度上百的线性规划时速度明显落后。我做了个简单对比同样的模型sedumi 求解耗时约 3~5 秒Gurobi 不到 0.1 秒。虽然这一丁点时间对单次求解无所谓但后续要做灵敏度分析、参数遍历或多场景对比时每个方案都跑一遍差距就拉开了。如果电脑没装 Gurobi推荐先装 Cplex。这两款商用求解器在学校的学术许可下基本都是免费的装完以后用 sdpsettings(solver,gurobi) 直接调用即可。6.4 参数灵敏度分析蓄热容量和共享容量的最佳配比项目最后我对蓄热容量 C_he 和共享容量 C_b_share 做了一轮双参数灵敏度扫描范围各取 1000~6000 kWh。结果显示当蓄热容量在 3000 kWh 附近时日净成本降幅进入平台期继续增大收益递减共享容量则没有明显的饱和点随容量线性增长但共享费率 β 的设定对收益影响很大。我做这个灵敏度分析的初衷是回答自建共享储能该建多大这个现实问题。实际结论是蓄热式电采暖用户建设共享储能不必贪大应以满足自身谷段蓄热外的剩余电量为共享容量为基准按照自己冬季典型日的低谷剩余电量来定容量再乘以一个 1.2~1.5 的系数留出裕量。这样投资回收期最短共享容量利用率也最高。7. 从日前到日内这个模型还能往哪扩展目前这套模型做的是日前调度决策变量全部在日前确定。实际运行中热负荷预测误差、光伏/风电出力波动、共享储能用户的实际充放电需求都会让日前计划在日内出现偏差。我个人的经验是这个模型至少可以往三个方向扩展第一个方向是日内滚动修正。将日前调度结果作为基准值日内每 15~30 分钟滚动调整一次蓄放热计划和储能充放电功率用模型预测控制MPC做闭环修正。蓄热式电采暖在这套框架下的优势非常明显蓄热介质本身的惯性天然充当了缓冲池日内微调不需要大幅改变电锅炉出力只需微调蓄放热节奏。第二个方向是考虑共享储能的多用户博弈。把参与共享的用户各自建成独立的优化子问题共享储能的容量分配用交替方向乘子法ADMM做分布式求解避免了集中式优化需要全部用户数据、存在隐私顾虑的问题。我跑过一个小规模算例3 个用户加共享储能ADMM 分布式求解结果和集中式求解差值在 1% 以内完全可接受。第三个方向是把碳约束加进来。蓄热式电采暖本身是清洁供暖设备但储能充放电的来源如果包含燃煤机组出力全生命周期的碳排放并不低。可以在目标函数里加入碳价成本储能放电功率对应折算碳配额消耗引导调度结果朝低碳方向偏移。我最近就在往第三个方向试加了碳流追踪之后储能谷段充电选择的发电来源会被重新评估——你会发现低谷电并不天然绿充放电时序对系统碳减排的实际贡献和只看电价模型得出的结论差异不小。这个课题做下来最大的体会是设备模型简单与否还在其次把物理约束和商业逻辑之间的对应关系想清楚模型才真正能用。蓄热式电采暖的热惯性是天然的优化自由度共享储能的价值在于把这个自由度转化为经济收益——建模的时候抓住了这个本质后面所有代码和参数设置都有了依据。