前阵子做园区多微网项目,碰到一个很典型的场景:三个微网共享同一条10kV母线,白天A区光伏出力远超负荷,B区工厂却满负荷生产,C区冷库的制冷机组也在高峰运行。按传统“各管各”的调度方式,A区只能弃光,B区和C区按峰价从上级电网买电。一个午间时段下来,三块区域的总购电成本高得离谱,光伏浪费却摆在明面上。后来我们换了基于多能量集成的协同优化策略,用双级两阶段框架对接多微网与多能源系统,结果明显改善——A区余电通过内部交易给了B区和C区,燃气轮机配合余热制冷继续压低缺口。这篇文章不打算复述概念,而是把框架设计、数学建模、算法迭代、参数调整和工程落地完整拆开,给正在做多微网调度或综合能源系统集成的同行一个可参考的路线。
这组词看着偏学术,实际落到工程上就是一句话:怎样让多个互相独立的微网,在保护各自隐私和控制权的前提下,把电、热、冷、气这些不同能量形式协同起来,使区域整体运行成本最低、新能源消纳最高。适合谁看呢?做园区能源管理、微电网群控制、综合能源系统优化,以及准备上分布式调度平台的技术人员。下面我按我们从项目实操中整理出的逻辑来展开。
1. 为什么双级两阶段框架能解决多微网协同中的“割裂感”
1.1 多微网系统的天然割裂:信息与资源的双重孤岛
多微网场景里最麻烦的从来不是设备不够,而是信息彼此看不见。每个微网很可能属于不同业主,甚至用着不同厂家的EMS。A区光伏的实时出力数据,B区不可能拿到;B区冷库负荷的预测曲线,C区更没必要共享。物理上大家连在同一条母线上,能量管理层面却完全隔离。
这种割裂会直接造成“一边弃风弃光,一边高价买电”的荒谬现象。我见过不止一次:晴天午间,一个微网光伏出力到4MW,本地负荷只有2MW,多余电量因为无路可去只能压低逆变器出力;隔壁微网同样是午间,负荷却飙到6MW,全靠从上级电网买高价电。如果能把这2MW跨微网送过去,两边都省钱。问题在于,调度权分散在各微网手里,谁都不愿意把设备模型和运行数据全部交出来。
另一个割裂来自能源品种。多数微网早期只做电力平衡,冷和热各自配锅炉、电制冷机。实际上,燃气轮机发电的余热可以被吸收式制冷机利用,电锅炉和热泵又能把低谷电转化成热能储存起来。把电、热、冷分开优化,等于放弃了最有价值的互补空间。
1.2 协同优化策略的收益从哪里来
协同优化策略的收益来源可以归纳成三个互补:时间互补、空间互补、能源品种互补。
- 时间互补:不同微网的负荷峰谷时段错开,A区晚高峰时B区可能已经进入低谷,协调后可降低同时率。
- 空间互补:A区光伏多、B区负荷重,通过交互功率把余电送给B区,减少向上级电网买电和弃电。
- 能源品种互补:热泵、电锅炉、燃气轮机、储热罐、蓄冷装置协同后,电热冷可以互相转换和存储。低谷时多买电制热储存在热罐里,高峰时释放,避开高价电。
下面这张表是我们在项目前期做方案论证时经常用的,对比了三种调度模式的差异:
| 对比项 | 独立调度 | 集中式全局优化 | 双级两阶段协同优化 |
|---|---|---|---|
| 全局最优性 | 差,各微网只看自己 | 理论最优 | 接近最优,收敛后可达全局最优 |
| 隐私保护 | 完全保护 | 需要全部模型和数据 | 只交换边界信息,保护内部模型 |
| 计算复杂度 | 低 | 随微网数量快速增长 | 中等,各微网可并行计算 |
| 通信依赖 | 无 | 强 | 中等,断网时有降级策略 |
| 故障隔离能力 | 弱 | 单个设备故障影响全局 | 强,单个微网异常可被隔离 |
| 工程实施难度 | 低 | 高 | 中高,但可控 |
独立调度最省事,但放弃了大量经济性收益;集中式优化虽然理想,却常常因为业主不愿交模型、数据量过大、通信不稳而落不了地。双级两阶段正好卡在中间——上级只协调边界,下级保留自治权。
1.3 什么场景适合用双级两阶段框架
不是所有多微网项目都需要上这套框架。判断标准很简单:如果各微网之间没有物理连接,或者内部没有冷热电多种负荷,直接各管各的就行;如果所有微网归同一主体运营,数据不敏感,集中式优化反而实现更轻松。
真正适合的是这三种情况:
第一,微网产权分散、归属不同主体,但需要共享同一配电网接入点。比如开发区里的工厂、数据中心、商业综合体各自建了微网,大家共用一条10kV线路。
第二,区域内存在比较强的多能互补潜力。某个微网有燃气轮机和余热制冷,某个微网有电锅炉和储热罐,冷热电可以相互转换。
第三,上级配电网对并网功率有刚性约束。比如约定整个区域从上级电网取电的峰值不能超过某数值,这时候必须有一个协调层对多个微网统一调度。
2. 双级两阶段框架的顶层设计:层级职责与信息流向
2.1 上级协调层:区域能量管理员的角色
上级协调层在双级框架里相当于“区域能量管理员”。它不关心某个微网内部哪台燃气轮机开了几小时、储能SOC是多少,它只关心每个微网作为整体,在未来若干时段愿意对外交换多少功率、愿意以什么成本提供调节能力。
具体职责包括:
- 接收各微网上报的净负荷预测、可调功率区间、报价曲线或成本函数;
- 根据区域总体的购电价格、传输容量和碳约束,计算各微网之间的交互功率计划;
- 下发边界功率参考值和内部交易价格;
- 在日内滚动阶段,根据最新超短期预测重新校正交互功率。
上级协调层的优化变量大多是“边界量”,比如微网i与公共母线之间的交换功率、微网i从上级电网购买的功率、微网间经过公共母线传递的功率。它不需要知道微网内部的设备组合,这是保护隐私的关键。
2.2 下级执行层:微网本地EMS的自治边界
每个微网的本地EMS拿到上级下发的交互功率参考值后,在保证自身功率平衡和设备约束的前提下,优化内部设备出力。下级拥有绝对自治权,储能怎么充、机组怎么发、负荷如何响应,上级一概不管。
这里的核心设计在于“自治边界”。本地EMS会把上级给的目标当成一个软约束或惩罚项,而不是硬性命令。比如上级要求微网i在11:00向公共母线送1.2MW,但微网内部此时电锅炉负荷临时上升,本地EMS可以申请调整到送0.9MW,并把可调区间上报给上级。双方通过迭代协商达成一致,这就是协同而不是指令控制。
上下级信息边界可以这样划分:
| 上行信息(下级→上级) | 下行信息(上级→下级) |
|---|---|
| 各时段净负荷预测 | 交互功率参考值 |
| 可调功率上/下限 | 内部交易价格 |
| 分段报价成本或成本函数 | 区域总购电/出力约束 |
| 实际执行偏差反馈 | 特殊时段强制约束(如峰值限制) |
2.3 两阶段的时间尺度分工
“两阶段”在我们的框架里指的是日前计划阶段和日内滚动修正阶段,它们解决的是不同性质的问题。
阶段性对比:
| 阶段 | 时间尺度 | 目标 | 不确定性 | 主要动作 |
|---|---|---|---|---|
| 日前计划 | 提前24小时,1小时间隔 | 经济最优,确定各时段交互功率基线 | 负荷和光伏预测误差较大 | 安排机组启停、储能粗略充放电计划、跨微网交易计划 |
| 日内滚动修正 | 每15分钟滚动一次 | 跟随日前计划,修正偏差 | 超短期预测误差小 | 调整储能出力、机组微调、调用需求响应、修正交互功率越限 |
日前计划解决的是“明天的总体买卖策略”,日内滚动解决的是“当前15分钟怎么执行”。没有第一阶段,第二阶段会变得短视;没有第二阶段,第一阶段计划在真实误差下会严重跑偏。两阶段配合,才能在预测不准的现实里既保证经济性又保证可靠性。
2.4 信息流向与信号类型
整个框架的信息流向可以概括为“先上传可行域,再下载计划;日内再滚动更新”。具体流程:
- 日前阶段开始前,各微网上报未来24小时的净负荷预测和可调能力区间。
- 上级协调层求解区域优化问题,下发各微网逐时段交互功率参考值和内部交易价格。
- 各微网本地求解自身优化,如果发现无法满足上级目标,把新的可行域或成本曲线上传。
- 上下级迭代至收敛,形成日前计划。
- 日内阶段每15分钟更新超短期预测,本地EMS重新优化,同时把修正后的交互功率计划上报备案。
这套机制的好处是信号种类少、结构固定。现场实施时,只要把上行和下行信号定义清楚,通信协议和数据库表结构就定了,后续扩展微网数量也只需要加节点。
3. 数学模型与耦合关系:变量、目标与约束
3.1 多能元件建模基础
建模这件事,核心不是写得越复杂越好,而是抓住每个元件在调度层面最重要的特性。
- 光伏:用预测出力曲线直接作为可用功率上限,实际出力变量在该上限以下可调,弃光时出力小于上限。
- 储能:电量递推公式,充放电效率,容量上下限,充放电功率限制。还要加上“SOC不要跑满跑空”的软约束,否则电池寿命掉得很快。
- 燃气轮机/热电联产机组:发电功率和热出力之间不是独立的,存在可行域约束;爬坡约束决定相邻时段出力变化幅度。
- 电锅炉/热泵:把电功率按效率转换成热功率,效率值一般在2.5~4之间,这是“多能量集成”最直接的体现。
- 储热罐:容量约束和储/放热功率约束,类似储能但损耗模型更简单。
- 吸收式制冷:利用燃气轮机或锅炉余热制冷,效率以热制冷系数衡量,把热和冷耦合起来。
每个元件的模型最终都会变成变量的上下界约束或线性等式,整体构成一个混合整数线性规划(MILP)或者线性规划(LP)子问题。
3.2 下级微网优化问题
每个微网i的日前优化目标是最小化自身总运行成本。写成学生能看懂的纯文本公式,大概是这样:
min F_i = Σ_t [ c_e(t) * P_buy_i(t) + c_g * G_i(t) + c_buy_h * H_buy_i(t) + c_cur * P_cur_i(t) + c_om * Y_i(t) ]
c_e(t)是时段t的上网/购电价格曲线;P_buy_i(t)是微网i在时段t从上级公共母线购电的功率;c_g是天然气价格,G_i(t)是燃气轮机和燃气锅炉消耗的气量;H_buy_i(t)是外购热量,如果区域内没有热网可能这项是0;P_cur_i(t)是弃光弃风量,加上一个较大的惩罚系数c_cur,让它尽量趋于0;Y_i(t)是机组启停等运行变量,c_om是运维成本系数。
约束条件包括:电力平衡(光伏+机组+储能放电+购电 = 负荷+电制冷+电锅炉+充电+外送);热平衡(热泵+锅炉+余热回收+储热放热 ≥ 热负荷+储热充热);冷平衡(吸收式制冷+电制冷 ≥ 冷负荷);以及每个设备的上下限约束、爬坡约束、SOC递推方程、交互功率上下限。
3.3 上级协调层优化问题
上级协调层的目标不是某个微网的利益,而是整个区域的社会福利最大化。它可以表达为“全局总成本最小”:
min F_up = Σ_t [ c_grid(t) * P_grid(t) + Σ_i ( c_buy_i(t) * P_buy_i(t) ) + c_peak * P_peak ]
P_grid(t)是区域从上级配电网购买的总功率;c_peak是峰值需量电费惩罚系数,P_peak是区域在考核周期内的最大购电功率;P_buy_i(t)是各微网购电之和,通过内部交易价格把利益在微网之间再分配。
上级约束主要有公共母线的功率平衡、各微网交互功率限值、公共变压器容量上限、区域峰值约束。如果上级还管理一个区域能源站(燃气轮机、储热罐等),还要把能源站的设备模型也放进来。
3.4 耦合关系:交互功率与边际价格
上下级问题之间的耦合变量是每个微网各时段的“净交互功率”。上级希望微网i按P_ex_i(t)执行,下级实际可发/可用功率为P_ex_i(t),协同优化必须保证两者一致。数学上就是一致性约束:
P_ex_i(t) - z_i(t) = 0
其中z_i(t)是上级下发的协调目标。这个等式约束的拉格朗日乘子λ_i(t),从经济学上讲就是“交互功率的边际价格”。它告诉微网:如果你多送1kW到公共母线,区域整体收益会增加多少;如果你多买1kW,会承担多少成本。
价格信号的价值在于,它不要求微网交出内部成本函数,只需要微网根据外部价格调整自身出力,迭代几次就能逼近全局最优。这跟电力现货市场出清的基本逻辑是一样的。
3.5 为什么不能直接集中求解
有些人会问:既然模型这么清晰,为什么不用一个大的优化模型把所有微网堆在一起直接求解?原因是多方面的。
第一,隐私。业主们可以把“可调能力区间”报给上级,但要交出完整的储能SOC曲线、设备损耗参数、生产负荷模型,没有任何一个工厂会乐意。
第二,计算规模。微网数量到5个以上,每个微网又有几十台设备,集中式MILP的整数变量爆炸式增长,在线求解掐不住时间。分布式求解可以把大问题拆成小问题,各微网并行计算。
第三,故障隔离。集中式里某个微网数据异常可能污染整个最优解;分布式结构下,某个微网不收敛或通信中断时,其他微网还能按上次计划继续运行。
4. 协同优化策略的求解算法与两阶段迭代逻辑
4.1 算法选型:从集中式到目标级联与ADMM
实际项目中,我第一版通常先用集中式MILP做理论下界:用所有真实数据,解一次全局最优,得到一个“理想成本”。然后第二版用分布式算法逼近这个下界,评估损失。如果没有这步,你根本不知道分布式算法做得够不够好。
分布式算法里,交替方向乘子法(ADMM)和目标级联法(ATC)是用的最多的两种。ADMM把全局一致性约束形成增广拉格朗日函数,每个子问题加一个二次惩罚项;ATC则更适合层级嵌套结构,强调上级“目标传递”和下级“响应修正”。两者都对凸问题有收敛保证,但工程实现上ADMM更直观,惩罚参数好调。
方法对比:
| 方法 | 核心思想 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 集中式MILP | 一锅端 | 理论最优,实现简单 | 隐私差、规模受限 | 仿真对比、小规模单一业主 |
| 目标级联法(ATC) | 上级定目标,下级回传偏差 | 层级结构清晰 | 收敛速度依赖初值 | 层级明确的分层优化 |
| ADMM | 分解+一致性约束+乘子更新 | 收敛性理论强、可并行 | 参数需调,非凸问题可能震荡 | 多微网/多区域分布式协调 |
| 共识算法 | 各节点交换拉格朗日乘子 | 无中心节点,扩展性好 | 通信迭代轮数多 | 对等节点、无中心协调者 |
在双级框架里,上级天然是中心协调者,所以我更推荐用ADMM做渐近收敛,用ATC思想做层级响应修正。两者不是互斥的,很多项目实际是把ATC的外层循环和ADMM的内层循环嵌套。
4.2 ADMM在双级框架中的改造
把ADMM套进双级框架,最关键的是引入一个辅助变量z_i(t)表示上级协调层下发给微网i的交互功率参考。每个微网的本地目标函数变成:
min F_i + Σ_t [ λ_i(t) * (P_ex_i(t) - z_i(t)) + (ρ/2) * (P_ex_i(t) - z_i(t))^2 ]
这里λ_i(t)是拉格朗日乘子,也就是前面说的边际价格;ρ是惩罚系数。二次项的作用是“拽住”微网的执行力——如果微网偏离上级目标太多,惩罚会增大,让它在自身经济性和上级协调目标之间找个平衡点。
上级更新z的方式取决于协调目标。如果只是区域总功率平衡,可以让z_i等于各微网上报P_ex_i的平均值或者某个市场出清结果;如果还要考虑线路潮流约束,z_i的更新需要解一个小的二次规划。
乘子更新公式在所有ADMM文献里都长一样:
λ_i^(k+1) = λ_i^(k) + ρ * (P_ex_i^(k+1) - z_i^(k+1))
4.3 两阶段迭代流程
完整写成伪代码,大概是这样:
阶段一:日前计划(DA) 输入:各微网24h预测数据、上级电价曲线 初始化:z_i=预测净负荷,λ_i=0,ρ=1,k=0 repeat: # 上级下发 下发 z_i^k 和 λ_i^k 给各微网 # 下级并行求解 各微网独立求解 min F_i + λ_i*(P_ex_i - z_i) + ρ/2*(P_ex_i - z_i)^2 上报 P_ex_i^(k+1) # 上级更新 求解协调问题,更新 z_i^(k+1) 更新 λ_i^(k+1) = λ_i^k + ρ*(P_ex_i^(k+1) - z_i^(k+1)) k = k+1 until 残差 ||P_ex_i - z_i|| < eps and ||z_i^(k+1) - z_i^k|| < eps 输出:日前各时段交互功率计划、储能等设备参考值 阶段二:日内滚动修正(IDR) 每15分钟: 更新超短期预测(未来4小时) 以上一轮日前计划为基础,设 z_i 为已知参考值 求解单微网滚动优化,决策未来15分钟到4小时的设备出力 若越限,上报并请求上级调整交互计划 执行当前15分钟的首个控制指令这个流程在仿真环境里迭代20~40次即可收敛,时间完全够用。实际部署时要注意把每次迭代的“下发—上报—更新”做成标准化API,否则通信层会在现场出很多幺蛾子。
4.4 收敛判据与加速机制
判定收敛不能只盯一个指标。我通常同时看原始残差和对偶残差:
- 原始残差:
r^k = ||P_ex_i^k - z_i^k||,体现上下级计划的偏差。 - 对偶残差:
s^k = ||ρ * (z_i^k - z_i^(k-1))||,体现协调变量是否还在剧烈变化。
收敛阈值按实际精度取eps_abs=1e-3(标幺值),eps_rel=1e-2。注意别取太小,否则迭代次数过多,在线运行撑不住。
调参经验有三条:
第一,惩罚系数ρ开始时取电价量级的十倍左右。比如电价在0.6元/kWh量级,ρ从1.0开始试。太大容易震荡,太小收敛慢。
第二,残差比值变化时自适应调整ρ。如果r比s大十倍,把ρ调大两倍;反之调小一半。这种自适应能让收敛速度在复杂算例里有明显提升。
第三,上一时段的优化结果作为下一时段的初值。日内滚动阶段尤其有用,每次迭代往往能少跑一半轮数。这就是“热启动”的价值。
4.5 从理论到实现:迭代次数与计算时间
我在一个三微网、全部采用MILP建模的算例里测试过:24个时段、每个微网约5000个变量,其中整数变量占一成上下,Gurobi/CPLEX单次求解时间约2~4秒。ADMM迭代需要25~35次,总耗时约90秒。如果放在日前阶段,这个速度完全可接受;放在日内阶段,就必须把单次求解时间压到0.5秒以内,不然15分钟滚动窗口会被算满。
缩短计算时间的常用办法:把微网内部的整数变量(机组启停)在日前阶段固定,日内只调连续变量;或者用热泵、储能等设备的热力学模型近似为分段线性函数。工程上“够用比精美重要”。
5. 算例分析与调参经验:从仿真到真值
5.1 算例设置:3个微网 + 1个区域能源站
我用一个典型园区改造项目的数据做示范。区域里有三个微网:
- 微网A:工业负荷,装3MW光伏、1MWh储能、少量蒸汽负荷。
- 微网B:商业综合体,冷负荷为主,装1台2MW燃气轮机,配吸收式制冷和2MWh储热罐。
- 微网C:数据中心,电负荷高、热负荷靠电锅炉,装1MW光伏和2MW电锅炉,配3MWh储热罐。
三个微网通过公共10kV母线相连,母线再经一台6.3MVA变压器接到上级电网。区域能源站另配一台燃气锅炉,通过蒸汽管网向A区供蒸汽、向C区补热。
5.2 参数配置表
| 参数 | 数值 | 备注 |
|---|---|---|
| 上级电网峰/平/谷电价 | 1.2 / 0.8 / 0.4 元/kWh | 夏季典型日 |
| 天然气价格 | 3.2 元/Nm³ | 热电联产效率按发电效率40% |
| 光伏预测误差 | 正态分布,标准差5% | 日内超短期误差1% |
| 储能容量/功率 | 1MWh / 0.5MW,效率92% | SOC范围15%~95% |
| 储热罐容量/功率 | 3MWh / 1MW,热损失3%/h | 日终SOC恢复至50% |
| 交互功率上限 | 各微网与公共母线±2MW | 变压器容量6.3MVA |
| 峰需量惩罚 | 60元/kW·月 | 按当月最大15min平均功率 |
| ADMM惩罚系数ρ | 初始1.0,自适应调整 | 残差比阈值10 |
这些参数不是随便填的,都是按照实际设备铭牌和抄表数据标定的。做仿真前最好把储能效率和热损率用一次现场实验校核,差5%以上结果就不准了。
5.3 结果对比:成本、消纳与迭代表现
算例结果分两种模式对比:一是各微网独立优化、不进行交互;二是双级两阶段协同优化。
| 指标 | 独立优化 | 双级两阶段协同 | 变化 |
|---|---|---|---|
| 区域总运行成本(万元/日) | 6.82 | 6.23 | 下降8.7% |
| 弃光率 | 12.6% | 2.1% | 下降10.5个百分点 |
| 峰值购电功率(MW) | 5.4 | 4.3 | 下降20.4% |
| 微网间交互电量(MWh/日) | 0 | 7.8 | — |
| 燃气轮机利用率 | 68% | 83% | 提高15个百分点 |
成本下降主要来自三个部分:弃光电量跨微网消纳替代高价购电,燃气轮机余热替代燃气锅炉直烧,峰值需量电费降低。迭代次数统计下来,收敛阈值在1e-3时平均需要28次,计算总耗时约105秒。
5.4 调参中的几个坑
第一个坑是惩罚系数ρ调太大。把ρ设成10以后,前几次迭代振荡得非常厉害——今天微网A报送2MW,下次迭代又变成-1MW,来回跳。原因是对偶变量更新过快,惩罚项把目标函数“掰”得太狠。改成自适应ρ,按原始残差/对偶残差异常调整,振荡就压下来了。
第二个坑是储能SOC漂移。分布式优化只盯当前时段经济性,往往会把储能在低价时段充满、高价时段立刻放光,到日末SOC回到很低甚至越限。解决办法是在日前的目标函数里加一个“日终SOC目标项”,或者把SOC递推方程作为硬约束,让储能尽可能回到初始电量。
第三个坑是热力系统非凸约束。热管网的压力-流量方程是非线性的,直接塞进MILP会出无解。我们的处理方式是把热网简化为热量平衡约束,忽略管损和压力,或者在日内修正阶段用半经验公式修正管损。结果精度可以接受,收敛稳定很多。
5.5 鲁棒性验证
仿真再漂亮,也得接受预测误差的检验。我们给光伏和负荷加上±10%的随机扰动,连续跑30天。
结果显示:日前计划在日内偏差最大时购电功率能控制在±0.3MW以内,区域总成本增加不超过3%。发生极端情况(光伏骤减+负荷骤升)时,日内修正阶段通过调用储能和削减可中断负荷,能保证不越变压器限值。
如果想把鲁棒性做得更强,可以在日前阶段引入随机场景或不确定集合,但计算代价会翻倍。部署时我的建议是:先做确定性模型跑通流程,再加鲁棒/随机模型,不要一步到位。
6. 落地实施中的工程化要点与实战建议
6.1 仿真平台与求解器选型
无论算例多漂亮,最终要接进真实系统。我们用过两套主流技术栈:
| 技术栈 | 建模框架 | 求解器 | 优点 | 缺点 |
|---|---|---|---|---|
| MATLAB | YALMIP | CPLEX/Gurobi | 快速原型、矩阵描述直观 | 部署授权贵、接口不够现代 |
| Python | Pyomo | Gurobi/SCIP | 开源灵活、便于WEB化 | 建模调试相对繁琐 |
| Python | OR-Tools | CBC/CP-SAT | 免费、安装简单 | 大规模MILP性能一般 |
我的习惯是先用MATLAB做算法验证,因为YALMIP写约束特别快;验证通过后,用Python+Pyomo重写一份用于部署。Pyomo和Gurobi配合,3个微网规模完全可以做到秒级求解。
6.2 数据接口与时间对齐
协同优化最怕数据时间戳不对齐。SCADA数据、气象超短期预测、电价文件来自三个系统,如果不同步,滚动优化会产生锯齿状控制指令。
实践上必须做三件事:统一时区基准(全部用UTC),统一采样周期(日前按小时,日内按15分钟),统一数据清洗规则(填充、平滑、剔除尖峰)。在我的项目里,我们用了一套轻量级时序数据库存所有输入输出,每次优化前先跑数据质量检查,不合格就改用上一轮预测值,绝不让坏数据进求解器。
6.3 与已有EMS的联动方式
现场最忌讳的是强行替换原有EMS。成熟微网的本地EMS已经稳定运行多年,谁都不放心你第一天就接管设备。
我们采用的稳妥路径是“三步走”:
- 影子运行:双级框架只读SCADA数据,输出指令但不执行,与原有EMS推荐值对比一个月。
- 限位接管:先把储能、可控负荷这类安全裕度大的设备切给新框架控制,机组启停维持原EMS。
- 全面切换:连续考核两周无误后,把全部可控设备移交,原EMS降到后备模式。
这套打法虽然慢,但一周就能看到收益,业主配合度高很多。
6.4 性能底线与降级策略
网状通信再可靠,也要考虑断链情况。双级框架必须设计好降级策略:
- 如果某个微网通信中断,上级对该微网采用最新一版交互计划作为硬约束,其他微网正常优化。
- 如果上级协调层宕机,各微网自动切换回独立优化模式,按日前计划保底运行。
- 所有下发指令都要有执行确认机制,本地EMS在约束越限时有权拒绝执行并上报原因。
我们在现场还把“看门狗”加进了控制循环:如果连续三个周期没收到某个微网的回报文件,自动把该微网标记为不可调,防止数据陈旧导致错误优化。
6.5 几条很实际的经验
经过两个项目打磨,我最想分享的经验排序是:
第一,先跑通单微网,再连多微网。单微网日内滚动都没调稳,直接上双级框架只会让问题翻倍。
第二,先确定性模型,再上随机/鲁棒。别一上来就挑战最难的,把基线模型交付后再逐步加复杂度。
第三,多用边界信号,少用内部调度。上级协调层只跟微网谈功率和价格,这样才能保护隐私、降低通信负担。
第四,结果的验证不是只看总成本,还要看每个微网的结算账单。如果某个微网一直是吃亏方,即便整体成本下降,它也会退出协同。所以要设计内部交易结算机制,让参与方都受益。
这套双级两阶段框架,本质上就是把“全局最优”和“个体自治”两个矛盾诉求放在一个框架里谈。实际运行一段时间后,你会发现它带来的不只是电费下降,更是把原来互相猜疑的几个业主拉到了同一个“市场规则”下。后续如果再加入碳配额、绿电凭证、现货市场价格联动,这个框架的可扩展空间还很大。我的体会是,协同优化的瓶颈从来不在于数学算法,而在于你能不能把边界规则设计到让每个参与者都愿意执行。把这个想明白了,项目就成功了一半。