1. 为什么“资源共享”比“单打独斗”更划算:多微网电能共享的问题背景
先说一个我实际接触过的场景。当时我在参与一个靠近工业园区的多微网规划项目,三个微网彼此相邻:一个以光伏为主,白天发电富余,晚上负荷高得不行;一个配了风电和储能,夜间出力旺但白天经常需要买电;还有一个是带热电联产的传统工业负荷,负荷曲线平缓但总量大,且价格敏感度很高。最初每个微网都是独立调度、独立结算,自己只管自己的平衡。结果跑了一年数据下来,光伏微网白天弃光率超过15%,风电微网夜间被迫低价卖电甚至限出力,工业微网则在下午高峰期以最高电价大量购电。三个微网各自的“最优运行”放在一起,整体上却非常不经济。
这就是多微网电能共享最核心的驱动力:单个微网的可调节资源有限、电源与负荷往往不完全匹配,但当多个微网组成一个可以互相交换电能的联盟时,峰谷互补、源荷互济的潜力就出来了。不过这里有一个容易被忽视的问题——电能共享不是一个简单的“拉一根线一起用”的物理问题,它同时也是经济问题。谁家的光伏给谁家用?白天多发的电按照什么价格结算?储能帮别人调峰该收多少钱?这些问题只要有一个说不清楚,联盟立刻解体,大家宁可各过各的。
这也是为什么我后来把目光放到了博弈论里的纳什谈判(Nash Bargaining Solution, NBS)上。纳什谈判解决的就是“合作后收益如何分配”这件事,它给出一套既满足个体理性又满足集体理性的分配规则。而“非对称”三个字,对应的是现实中更常见的情况:各个微网的规模不同、资源禀赋不同、话语权不同,不可能像教科书里假设的那样“人人平等”地分钱。非对称纳什谈判就是把这种议价能力差异正式纳入模型,让分配结果既公平又不脱离实际。
这篇文章我会把非对称纳什谈判在多微网电能共享中的完整建模、两阶段求解思路、分布式迭代算法以及一个三微网的仿真案例从头到尾捋一遍。适合正在做微电网、综合能源系统、分布式能源交易方向研究的同学,也适合那些想在地面项目中推行多主体协同调度的工程师——哪怕你不打算完整复现模型,里面关于“收益分配决定合作是否可持续”的分析思路,也是可以直接借鉴的。
1.1 单微网独立运行的“三条死胡同”
独立运行的微网,最常撞上的困境就三类。
第一类是新能源消纳天花板。光伏在正午时段的出力远超本地负荷,储能要是容量不够,多余的电只能弃掉;风电夜间大发,本地负荷却几乎为零。弃风弃光的本质不是发电能力不够,而是“自己用不完、又没有一个值得信任的邻居可以送”。如果旁边有一个白天疯狂用电的工业微网,这笔交易本来是双赢的,但如果没有共享机制,光伏微网就只能眼睁睁看着该发的电变成0。
第二类是峰谷购电的差价损失。分时电价环境下,独立微网需要在谷时多买、峰时少买,但负荷不会按电价走。晚间高峰时段,负荷恰好冲上来,储能又已经放空了,只能硬着头皮按最高价从电网购电。如果这时候附近有一个风电夜间出力充足的微网,以比电网售电价更低的内部价格买过来,双方都能获利,可没有共享通道,这种空间上的“互补差价”就只能浪费。
第三类是备用和调节容量的重复投资。独立运行时,每个微网都要为极少数极端场景配置足够的储能和可调负荷容量,结果就是谁都养着一大块常年闲置的“保险资产”。联盟运行后,这些调节资源可以跨微网调度,总备用容量能降下来,投资成本也就降下来了。
这三条死胡同叠在一起,结论非常清楚:多微网共享的收益不是边际性的小改善,而是结构性的显著收益。但“有收益”和“能分好收益”是两码事。后面我会展开讲,为什么分不好收益,合作就维持不住。
1.2 电能共享的物理基础与市场基础
多微网电能共享能在工程上落地,前提有两个:物理上要“连得起来”,市场上要“算得清楚”。
物理基础是微网之间的联络线。现在产业园区、数据集群、农村台区改造里,相邻微网之间架设中低压联络线已经很常见了,联络线容量一般从几百千瓦到几兆瓦不等。联络线存在,电能才能真正双向流动;联络线的容量约束,也会直接影响共享方案的设计——如果两个微网之间的联络线只能跑300kW,那就算双方都愿意多交易,调度模型里也得把这条约束写死,不然算出来的方案在现场根本执行不了。
市场基础则是内部结算价格机制的设计。多微网共享和电网统购统销不一样,它更像一个“批发市场”:电网公司给出的分时电价是每个微网可以选择的外部参考价,而微网之间的内部交易电价应该在“卖方的边际成本”和“买方的替代成本”(即从电网购电的价格)之间形成。内部电价定得太低,卖方不愿意;定得太高,买方不如直接找电网。这个区间就是电能共享合作的经济空间。
纳什谈判模型做的正是这件事:它不仅告诉你合作后总成本能降多少,还算出了每个微网最终应该承担多少成本、应该拿到多少补偿。也就是说,运行调度和财务结算在同一个模型框架里完成,而不是“先算物理电量,再随便定个价格”。
1.3 传统合作收益分配方法解决不了的争议
在纳什谈判之前,最常见的工作量分配法其实是Shapley值。Shapley值在数学上是优雅的:它按每个成员对所有可能联盟组合的边际贡献来分配总收益,公理性强,每个成员分到的金额和它带来的增量贡献严格挂钩。
但Shapley值在工程实践中有个很大的痛处:计算复杂度。N个微网要枚举2的N次方减1个非空子集。三个微网还好,只需要算7个联盟;到五个微网就是31个;到十个微网就是1023个。每个联盟都要做一次成本优化仿真,这个计算量在地面运行系统里基本不可接受,更不用说日内滚动优化了。
另外,Shapley值隐含了一个假设:所有成员在合作中的地位完全对称,分配只看边际贡献。但在实际项目中,有的微网是园区“地主”,有的微网只是租户,有的微网拥有关键储能资产,有的微网只用得起光伏板——它们的谈判地位天然不同。Shapley值算出“公平”的结果,未必是各方能谈拢的结果。模型再公平,只要有一方觉得“我明明更强势、贡献更大,凭什么只分这么多”,合作就会陷入僵局。
非对称纳什谈判正好在这个点上做了调整。它在标准NBS里引入一组权重,权重越大,谈判力越强,合作后分到的收益越多。这样算出来的结果,是“考虑了各方现实议价能力之后的合作均衡”,比我见过的大多数纯“公平分配”模型更容易落袋。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从对称到非对称:非对称纳什谈判的建模逻辑
纳什谈判模型的数学基础是纳什在1950年提出的谈判博弈。它的原始形式是这样的:假设有N个参与者,每个参与者在谈判破裂(也就是达不成合作协议)时有一个保留效用 d_i,谈判成功时可以获得一个效用 u_i,那么谈判问题的解是一个效用组合 (u_1^, u_2^, ..., u_N^*),在所有可行效用组合中,最大化各参与者“合作超出破裂点的增量效用”的乘积。
标准NBS的优化目标写出来是这样:
max ∏(u_i - d_i),其中 u_i ≥ d_i。
对于多微网电能共享问题,参与者的效用和成本是负相关的。为了符合通常的“成本越小越好”的直观,我们把效用 u_i 定义为负的运行成本 C_i,保留效用就是负的独立运行成本 C_i^0。于是每个微网的“合作收益增量”可以写成:
u_i - d_i = (-C_i) - (-C_i^0) = C_i^0 - C_i。
这个东西看起来只是一个符号变换,但意义很重要:C_i^0 - C_i 就是第i个微网因为参与合作而省下来的钱,我习惯把它的总和叫作“联盟总节约成本”。标准NBS要求这些节约成本的乘积最大化,直观理解就是:让每个成员都能拿到实实在在的节约,而不是某几个成员赚得盆满钵满、另一些成员只比单干时好一点点。
2.1 谈判破裂点与效用函数怎么定
谈判破裂点(disagreement point)是整个模型的地基,也是实际建模中最容易出问题的地方。它代表的是“如果合作谈崩了,每个微网能拿到的底线水平”。在多微网电能共享里,谈判破裂点很自然就是各微网完全独立运行时不参与任何共享的最优成本。
如何确定这个成本?基本做法是:对每个微网单独求解一个并网运行优化问题,目标函数是购电费用减去售电收入再加上储能损耗与运维成本,约束是本地功率平衡、储能充放电约束、联络线功率上下限等。把每个微网独立优化的最优成本记作 C_i^0,这就是它参与合作的机会成本底线。
需要注意一个细节:谈判破裂点的选取不是唯一的。有的文献把“不合作但可以参与电网辅助服务市场”作为破裂点,有的把“按固定比例共享但不进行经济结算”作为破裂点。选取不同,最终分配结果会差很多。我的建议是,破裂点对应的场景必须和实际运行的计划模式一致,否则模型预测的成本节约会和现实对不上。比如某个微网本来就在参与需求响应,那它的破裂点就应该包含需求响应收益,而不是把它当作一个完全被动的负荷。
效用函数的标定也有讲究。上面用“负运行成本”作为效用,是最简洁也最常用的做法。但如果你要考虑风险偏好,可以把效用函数改写成某个风险规避函数,比如 u_i = -exp(α_i C_i),其中 α_i 是风险规避系数,表示这个微网对成本波动的敏感程度。加了这个之后,模型会倾向于给风险规避程度高的微网更平滑的成本曲线。不过这样会让后面的求解复杂度明显上升,刚入门的时候不建议直接上这个版本,先把线性效用跑通再说。
2.2 非对称权重代表什么:议价能力的量化
标准NBS把所有参与者的地位视为一致,这在两个机械制造厂之间玩合作时也许说得过去,但放到真实的微网联盟里就不够用了。现实中,一个拥有大容量储能的微网往往掌握着联盟内“削峰填谷”的关键能力,一个园区平台运营方可能天然拥有交易规则制定权,一个负荷弹性大的工商业用户则有更多谈判筹码。这些结构性差异,通过一组谈判权重 ω_i 引入目标函数就能体现:
max ∏(C_i^0 - C_i)^{ω_i},其中 Σω_i = 1,ω_i > 0。
从数学上看,权重 ω_i 的作用是改变每个成员在谈判中“每个单位的收益增量”对整体目标的边际贡献。权重越大,谈判解会朝对这个成员更有利的方向移动:它在合作中承担的成本越低,或者说分到的收益增量越大。当所有 ω_i 相等时,这个模型退化成标准NBS。
那这个权重具体怎么取?工程上有两类做法。第一类是主观协商权重,由联盟各方的决策者直接根据地位、资源投入比例、历史合作贡献度共同商定。这个过程看起来不“高级”,但实际操作中最常用,因为它把不可量化的“话语权”显式地放到了桌面上谈。第二类是客观计算权重,依据各微网可量化的指标计算,比如:
- 可再生能源装机占比(装机越多,可贡献的绿色电量越多,权重可上调)
- 储能调节容量占比(储能是柔性调节的关键,容量越大,议价能力越强)
- 负荷可调度比例(可削减、可转移的负荷越多,对联盟越有价值)
- 日前预测精度(预测越准,联盟运行风险越低,权重可上调)
- 历史参与合作的总贡献度(参与越深、响应越好,累积信誉越高)
把这些指标归一化后加权求和,就得到一组有数据支撑的权重。这部分的具体计算我会在第3.3节展开说。
我在这里想强调一点:非对称权重不是“大头欺负小头”的数学工具,它的正确用法是量化各方在合作中的真实投入和风险承担。权重高的微网分到的收益多,但它通常也承担了更多的联络线投资、储能损耗或者说灵活性义务。如果权重设定和实际贡献严重脱节,那模型算出来再漂亮,现场也执行不下去。
2.3 一个关键定理:如何把NBS拆成“先优化总成本,再分配收益”
直接求解带权重的NBS目标函数会遇到一个棘手的问题:C_i^0 - C_i 是负数空间里的正数,乘积形式的目标函数在原始变量(各微网出力、储能动作、交易功率)下不是凸函数,求解难度很大。但好消息是,这个非凸问题可以被人为地拆成两个凸问题,这是非对称纳什谈判建模里最重要的一个理论性质。
第一层是联盟运行优化。在合作博弈的理论框架下,纳什谈判解必须落在帕累托前沿上。也就是说,如果还有办法在不降低任何成员收益的前提下提高联盟总收益,那这个解就不可能稳定,因为谈判者完全可以提出一个“大家都不会更差、至少一个人更好”的新方案。于是,第一步我们只需要优化联盟总成本:
min ∑C_i,约束包括各微网内部约束和微网之间的功率平衡约束。
这一步算出来的结果,是联盟整体最优的调度方案——各微网何时充放电、何时通过联络线共享电能、从电网购电多少,全部确定。重要的是,这一步完全不涉及“谁付给谁多少钱”的内部结算。
第二层才是收益分配。在联盟总成本已经固定的前提下,总节约量也就确定了:
ΔC_total = ∑C_i^0 - min ∑C_i。
接下来要让这个总节约量在N个微网间分配,使得带权重的NBS达到最大。这一步才是非对称权重发挥作用的舞台。它的数学本质是:在一个固定的“节约蛋糕”上,找一个带权重的纳什均衡切法。这里有一个非常有用的性质:对于固定的总节约量,带权重的NBS目标在均衡点处等价于令每个成员的收益增量正比于其权重。也就是说,在最优状态下,各方的节约比例会趋向于等于权重比例,这给工程人员提供了一个很直观的结算参考。
这个两阶段分解不是近似,而是精确等价,前提是联盟总成本函数是凸的,且内部结算变量不影响物理运行约束。这也是为什么我在建模时会反复检查目标函数和约束的凸性——一旦约束里出现双线性项(比如电压和功率相乘、储能荷电状态和充放电功率同时作为决策变量),分解性质就可能被破坏,整个两阶段框架就需要重新审视。
3. 两阶段模型落地:电能共享调度与支付结算
理论性质说得再漂亮,到了代码和模型层面还是要一步步落地。这一节我把两阶段的具体模型结构、约束条件、以及最容易被忽略的支付变量建模展开讲。
3.1 第一阶段:联盟总成本最小化模型
第一阶段的目标函数是整个联盟在调度周期内的总运行成本最小。调度周期通常取24小时,时间间隔取1小时;如果做日内滚动,可以取15分钟一个点。为了说明方便,我按小时建模,这也是多数文献的基准设置。
目标函数由三部分构成:向外部电网购电的成本、向外部电网售电的收入(可以理解为给电网的“反送”收益,也可能是负成本)、以及储能和可控机组的运行维护成本。可以写成:
min ∑{t=1}^{24} ∑^{N} [ λ_buy(t) · P_igrid_buy(t) - λ_sell(t) · P_igrid_sell(t) + c_ess · (P_icharge(t) + P_idischarge(t)) + c_mt · P_imt(t) ]。
其中:
- λ_buy(t) 和 λ_sell(t) 是电网在时段t的购电价和上网电价
- P_igrid_buy(t) 和 P_igrid_sell(t) 是微网i在时段t从电网购电和向电网售电的功率,二者不能同时非零
- c_ess 是储能循环损耗折算成本系数
- c_mt 是燃气轮机/柴油发电机等可控机组的单位发电成本
- P_icharge(t)、P_idischarge(t)、P_imt(t) 是各类设备的出力功率
约束条件分三类。第一类是每个微网内部的功率平衡:
P_i光伏(t) + P_i风电(t) + P_imt(t) + P_igrid_buy(t) + P_i放电(t) + ∑{j∈N(i)} P_ij(t) = P_iload(t) + P_i充电(t) + P_igrid_sell(t) + ∑ P_ji(t)。
这里 P_ij(t) 是微网i在时段t通过联络线输送给微网j的功率,N(i)表示和微网i相邻的微网集合。联络线功率有方向,所以每个联络线需要处理双向变量,或者用一个带正负的连续变量。
第二类是储能约束。储能最重要的约束是荷电状态(SOC)的时间递推关系:
SOC_i(t+1) = SOC_i(t) + η_charge · P_icharge(t) · Δt - (1/η_discharge) · P_idischarge(t) · Δt。
同时,充放电功率有上下限,SOC有上下限,并且充电和放电不能同时进行。这些约束看着简单,但实际建模时如果同时引入0-1变量来规避充放电同时性,问题就从LP变成了MILP,求解时间会成倍增长。如果只是做日前计划、时间粒度1小时,用MILP是可以接受的;但如果要做日内滚动,建议干脆把储能当成“可以同时轻微充放”的理想模型,在成本系数上加一个很小的惩罚项来抑制无效循环,这样能保持LP/QP形式,求解速度会快很多。
第三类是联络线容量约束和电网交互功率约束。联络线容量就是第1.2节说的物理约束:
- P_ij_max ≤ P_ij(t) ≤ P_ij_max。
电网交互功率也要限制,有些地方配电变压器压降大,不能让某个微网在峰值时段向电网倒送太多,所以要加装功率上限约束。
第一阶段求解完成后,会得到一组各微网的最优运行计划,以及微网之间的联络线交换功率序列 P_ij^*(t)。这个序列就是后面结算的事实依据——“谁在什么时候给谁供了多少电”。
3.2 第二阶段:非对称收益分配的支付问题
第二阶段的目标是决定一个内部结算电价 λ_ij(t),让各微网按照这个价格结算共享电量后,最终的实际成本满足非对称纳什谈判的分配结果。
首先定义每个微网的实际结算成本。微网i的成本由三部分影响:第一阶段算出的自身运行成本 C_i^op(包含购电收入等,但不包含微网间共享电量的结算)、和电网结算的成本、以及和其他微网结算的成本。因为第一阶段已经决定了物理电量,内部支付就是“交易电量 × 内部交易电价”:
C_i^final = C_i^op + ∑_{j∈N(i)} ∑_t λ_ij(t) · P_ij(t)。
这里 P_ij(t) 的正负表示功率方向。当微网i向微网j送电时,P_ij(t) > 0,如果λ_ij(t) > 0,微网i从这笔交易中获得收入,微网j付出购电成本。
第二阶段的目标是在第一阶段确定的调度方案下,找到一组内部交易电价 λ_ij(t),使得各微网的最终成本满足:
C_i^0 - C_i^final ∝ ω_i
也就是说,各微网的单位权重节约成本相等。当ω_i = 1/N时,就是最原始的按节约额“平均分”(在联盟总成本固定的情况下,最大化对称NBS的节约分配结果是在允许转移支付时各成员节约相等,这里略去了严格的证明,但直觉上这样理解没有方向性错误)。
求解这样一个支付问题时有个常用的技巧:省略显式电价变量,直接在“节约额分配”层面求解。设 s_i = C_i^0 - C_i^final 是微网i从合作中获得的节约量,那么总节约量∑s_i固定,带权重的NBS最大化问题就变成:
max ∏ s_i^{ω_i},s.t. Σs_i = ΔC_total,s_i ≥ 0。
这个优化问题对数是凸的,可以直接用KKT条件求解析解。对每个变量求导后可以得到:
s_i^* = ω_i · ΔC_total。
这就是带权重的纳什谈判解在固定总蛋糕下的精确分配:每个参与者的节约额等于其权重乘以联盟总节约量。这个简洁的结论非常有用,它说明“谈判权重”直接对应到“节约份额的比例”,而不是“成本的比例”。后面我还会在仿真案例里用这个公式做对照验证。
明确了 s_i^* 之后,第二阶段的目标就是从支付电价 λ_ij(t) 中倒推出能够实现这个节约分配的实际交易价格。这一步需要先确定一个结算基点,通常的做法是约定:首先从电网购电的成本按电网电价结算,微网之间的共享电量再按协商的内部电价结算。把第二阶段的目标函数改写成关于 λ 的方程,解一组线性方程组就可以得到一组可行的内部结算电价。如果联络线网络是树状结构(实际上绝大多数多微网联络线都是辐射状),这个线性方程组还是可分解的,逐条联络线求解即可。
3.3 权重怎么算:熵权法与综合打分法
权重 ω_i 是非对称纳什谈判的灵魂,但它不是模型自带的数据,需要你根据项目背景去构造。我这里给出两种已经在多个项目里验证过、且容易落地的做法。
第一种:熵权法,适合你手头有各微网历史运行数据,并且希望数据自己“说话”的情况。熵权法的基本思路是:某个指标在各个微网之间的差异越大,这个指标在权重构成中的信息量越大,就应该被赋予更高的权重。
具体步骤是这样:
- 构建一个 m 行 n 列的指标矩阵 A = [a_ik],m是微网数量,n是指标数量。比如三个微网、五个指标,矩阵就是3×5。
- 指标标准化。正向指标(数值越大越好,如储能容量、预测精度)用公式 a'_ik = (a_ik - min a_k) / (max a_k - min a_k);负向指标(数值越大越差,如弃光率)用 a'_ik = (max a_k - a_ik) / (max a_k - min a_k)。
- 计算每个指标下各微网所占的比重 p_ik = a'_ik / Σi a'_ik。
- 计算每个指标的熵值 E_k = - (1/ln m) Σi p_ik ln p_ik,注意 p_ik = 0 时需要特殊处理,通常设 p_ik ln p_ik = 0。
- 计算差异系数 d_k = 1 - E_k,差异越大权重越高。
- 归一化得到指标权重 w_k = d_k / Σk d_k。
- 每个微网的最终议价权重 ω_i = Σk (w_k · a'_ik),做完归一化处理使总和为1。
这套流程在Excel里就能手动算,用Python的pandas加numpy写脚本也就二三十行,非常适合在项目启动阶段做快速测算。
第二种:综合打分法,适用于数据不完整、更多依赖专家经验的早期规划阶段。做法是让各参与方的代表坐在一起,对每个微网在“资源贡献能力”“灵活性调节能力”“风险承担意愿”“历史合作信誉”四个维度上打分,1到5分,然后按维度权重(比如0.3、0.3、0.2、0.2)加权求和,再归一化。打分制看起来简单,但在实际项目中有一个好处:它逼着各方在项目一开始就把“各自的贡献和期望收益”摊到桌面上谈,避免后面执行时再扯皮。
不管用哪种方法,我都会建议在算完权重之后做一次敏感性分析:把权重上下浮动10%到20%,看各微网最终成本的变化是否在可接受范围内。如果权重的小幅波动导致某个微网的成本剧烈波动,说明这个微网对合作机制的依赖度极高,谈判时会非常脆弱,需要在方案设计阶段就重点保护。
4. ADMM求解:如何在保护隐私的前提下算到均衡解
两阶段模型本身清晰了,但还有一个工程问题没解决:第一阶段联盟总成本最小化是一个“集中式”模型,它要求某个中心节点拿到所有微网的负荷、光伏、储能、可控机组、联络线参数等信息。但真实项目中,这些微网往往属于不同运营主体,数据涉及商业机密,谁也不愿意把自己底牌全亮给一个“中心调度员”。
解决办法是用交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)把集中式问题改写成分布式问题。各微网只需要和邻居交换联络线功率计划和电价信号,不需要上报内部私有参数。这也是我一直喜欢用ADMM处理这个问题的原因——它让纳什谈判模型从“理论上可解”变成“工程上可部署”。
4.1 为什么要用ADMM而不是集中式求解
你可能会问:如果所有微网属于同一个运营方,数据都在一个平台里,直接用求解器算集中式模型不就行了吗?确实可以,但有几个现实问题。
第一是数据归属权。多微网共享通常意味着不同业主、不同利益主体合作,数据是否愿意共享本身就是合作能否启动的前置条件。如果为了算一个优化模型,先要各方把全套私有数据交出来,项目在商务谈判阶段就会卡住。ADMM的核心特点是:各微网的内部数据只留在本地,联络线上的信息才参与交换,这在商务层面是更容易被接受的。
第二是计算可扩展性。集中式模型的规模随微网数量增长很快,而且一旦某个微网改了内部参数(比如新增了一台储能),中心平台需要更新整个模型并重新求解。分布式求解时,一个微网的内部参数变化只需要它自己在本地子问题里调整,对全局只需重新跑几轮信息交换即可。
第三是容错性和自治性。ADMM框架下,每个微网依然保留自己的调度决策权,中心协调员退化为一个信息交换节点。即使某个微网临时掉线,其余微网可以降级为独立运行或者两两共享,系统可用性明显更高。
ADMM的缺点也很明显:收敛速度受问题结构影响大,需要调惩罚参数;如果问题非凸,收敛到全局最优的目的地没有保证。所以在实战里,我的做法是先用集中式模型跑一遍离线仿真,得到基准解;在线运行则用ADMM做分布式滚动优化,用两者的偏差来评估分布式算法的退化程度。
4.2 分布式迭代的完整数学格式
这里我给出用ADMM求解第一阶段联盟总成本最小化的标准迭代格式。首先,把微网i的本地优化改写为:
min C_i(x_i) + Σ_j (λ_ij^T P_ij + (ρ/2) ‖P_ij - P_ij^target‖²)
其中 x_i 是微网i的所有内部决策变量,P_ij 是微网i通过联络线向相邻微网j输送的功率向量,λ_ij 是对偶变量(影子价格),ρ 是ADMM惩罚参数,P_ij^target 是参考方向量。这个目标函数的意思是:每个微网在本地最小化自身运行成本的同时,受到联络线交换功率偏离参考值的惩罚,以及交易价格λ_ij的引导。
ADMM的每一次迭代包含三组更新:
第一步:在给定对偶变量和参考功率的条件下,每个微网求解本地子问题:
x_i^{k+1} = argmin C_i(x_i) + Σ_j (λ_ij^k^T P_ij + (ρ/2) ‖P_ij - P_ij^target,k‖²)。
这个子问题的规模和单个微网独立运行优化完全一样,用Cplex、Gurobi或者开源的Cbc、HiGHS都能解。每个微网本地算完,把自己送出的功率序列 P_ij^{k+1} 发给邻居。
第二步:中心协调节点收集所有联络线的功率信息,更新对偶变量。对每一条联络线(i,j):
λ_ij^{k+1} = λ_ij^k + ρ · (P_ij^{k+1} + P_ji^{k+1})。
这个更新公式非常简洁。λ 的物理含义是这笔电力交易的“协商价格信号”,收敛后,它恰好等于两阶段模型里内部结算电价的拉格朗日乘子。也就是说,ADMM跑完,你不仅拿到了最优调度方案,还捎带算出了共享电能的影子价格,可以直接用来做第二阶段支付的初始值。
第三步:更新参考方向量。常用方法是取两个微网申报功率的平均值:
P_ij^target,k+1 = (P_ij^{k+1} - P_ji^{k+1}) / 2。
第三步做完,回到第一步,直到满足收敛条件。
整个算式的实际执行流程可以用文字描述:各微网本地优化自己的运行计划,向邻居发一份联络线计划;协调节点统计连线两侧计划是否一致,不一致就调整个影子价格并反馈给各微网;各微网带着新价格重新优化。如此反复,直到联络线两侧的计划完全一致,也就是说共享电量“买卖双方对得上账”了。
4.3 收敛判据与参数调优经验
ADMM的收敛判据通常有两类:原始残差(primal residual)和对偶残差(dual residual)。原始残差衡量联络线两侧功率计划的不一致程度:
r_k = Σ_{(i,j)} ‖P_ij^k + P_ji^k‖₂。
对偶残差衡量两次迭代之间参考功率的变化程度:
s_k = ρ · Σ_{(i,j)} ‖P_ij^target,k - P_ij^target,k-1‖₂。
终止条件一般是两个残差同时小于设定的阈值,比如10^-3或10^-4(以功率标幺值为基准)。实际操作中,我通常还会额外加一个“经济性终止条件”:连续两轮迭代的联盟总成本变化小于0.1%,才认为结果稳定可用。这能避免在解的数学残差已经很小但经济量还在轻微漂移的情况下过早停机。
惩罚参数ρ的选取是ADMM最容易踩坑的地方。ρ太大,收敛快但解的精度会受影响,交易电价λ可能波动很大;ρ太小,收敛慢,迭代次数多到让人怀疑人生。我的经验是:先用小规模算例(比如三个微网、24个时段)做一个ρ扫描,从0.1到100取对数等距点,画出迭代次数和最终联盟成本的曲线,选取使迭代次数最少且成本误差小于0.5%的那个ρ。大多数情况下,这个问题里的ρ落在1到10之间。如果系统里有储能且SOC约束比较紧,还需要把ρ适当调大一点,否则储能相关的对偶变量收敛会很慢。
此外,最好在代码里实现动态ρ调整:每20轮迭代检查一次,如果原始残差和对偶残差的比值大于3倍,就增大ρ;小于1/3就减小ρ。这个方法虽然简单,但在工程里出奇地有效,基本能保证不同规模算例下都稳定收敛。
5. 三微网仿真案例:节约了多少钱,按什么比例分
模型讲了一大堆,还是得上一个实际算例才能让人信服。我构造了一个三微网测试系统,参数尽量贴近真实项目,方便你照着复现。
5.1 测试系统与参数设计
三个微网的配置如下:
- MG1(光伏+储能):光伏装机3MW,储能1MW/2MWh,最大负荷2.8MW,负荷曲线呈“早低晚高”形态,白天光伏大发时本地负荷只有1.5MW左右,夜间峰值负荷接近2.8MW。
- MG2(风电+储能):风电装机2.5MW,储能0.8MW/1.6MWh,最大负荷1.5MW,夜间负荷很低(0.6MW左右),风电大发时本地用不完,白天反而需要买电。
- MG3(工业负荷+燃气轮机):最大负荷3.5MW,燃气轮机装机1MW,发电成本0.65元/kWh,负荷曲线平缓但量大,几乎没有新能源装机。
三个微网之间的联络线连接成三角形拓扑,每条联络线容量设0.8MW,双向使用。电网分时电价按国内一般工商业峰谷平电价设置:峰时10:00-15:00和18:00-21:00,电价1.08元/kWh;平时6:00-10:00、15:00-18:00和21:00-23:00,电价0.68元/kWh;谷时23:00-次日6:00,电价0.36元/kWh。上网电价固定为0.35元/kWh。
独立运行时,三个微网各自优化,得到的总成本作为谈判破裂点。这里需要注意,独立运行时MG1白天多出的光伏电量只能按0.35元/kWh上网,而晚上用电高峰期需要按1.08元/kWh从电网购电,这一高一低之间损失很大。MG2的情况类似,只是时段反过来了。MG3则几乎全天高价买电,夜间也没有便宜电源可用。
用集中式模型求解三个微网独立运行的成本,结果是:MG1约9200元、MG2约6800元、MG3约7500元,联盟总计23500元。
5.2 调度结果对比
把三个微网放到同一联盟里求解第一阶段模型后,得到的联盟总成本是19800元,相比独立运行节约3700元,节约比例约15.7%。这个数字比我预期的稍微高一点,主要原因是三个微网的曲线互补性太强了。
调度方案的关键结果如下:
- 白天10:00-15:00,MG1光伏发电在满足本地负荷后,剩余电量优先通过联络线送到MG3,替代MG3从电网购电;部分时段还送到MG2补充其白天负荷。MG1的光伏弃电量从独立运行的15%降到接近0。
- 夜间23:00-次日5:00,MG2的风电大发,除了给本地储能充电外,通过联络线送到MG1和MG3。此时MG1和MG3的储能也抓住谷时电价充电,留到上午和晚间高峰放电。
- MG3的燃气轮机在晚间峰时段出力明显减少,因为MG1白天的光伏和MG2夜间的风电已经把它的购电压力消化掉了一部分。燃气轮机整体发电量下降约30%,燃料成本节约显著。
联络线利用率方面,在峰时段MG1到MG3的联络线基本跑满0.8MW上限,说明联络线容量确实是这个场景下的关键瓶颈。如果联络线容量扩到1.2MW,联盟总成本还能再降约300元,这在后续规划里是有参考价值的敏感性分析点。
5.3 非对称性对分配结果的直接影响
第二阶段的核心变量是权重。我分别测了三种权重方案。
方案一:对称权重(标准NBS),即ω = (1/3, 1/3, 1/3)。此时每个微网节约额相等:s_i = 3700/3 ≈ 1233元。最终各微网实际运行成本分别为7967元、5567元、6267元。这样一个结果的问题在于:MG1只装了光伏和储能,没有可控机组,调节能力一般,却在分配上和拥有燃气轮机的MG3完全相同,谈判时MG1的代表觉得自己“吃亏了”。
方案二:按资源贡献计算权重。采用储能容量、新能源装机占比、联络线投资比例三个指标做综合打分,得到权重ω = (0.25, 0.35, 0.40)。此时各微网节约额分别为925元、1295元、1480元,最终成本为8275元、5505元、6020元。MG3因为联络线投资最大、燃气轮机提供了兜底能力,权重最高,分享到的节约也最多。
方案三:按预测精度和参与意愿调整权重,把预测精度高的MG2权重上调至0.5,ω = (0.2, 0.5, 0.3)。此时节约分配为740元、1850元、1110元,最终成本为8460元、4950元、6390元。MG2成为最大赢家,但相应地,它也承担了每日向MG1和MG3送电的调度义务,如果风电预测有偏差,联盟的运行风险也主要由它承担。
三种方案的分配对比如表所示:
| 权重方案 | MG1节约 | MG2节约 | MG3节约 | MG1实际成本 | MG2实际成本 | MG3实际成本 |
|---|---|---|---|---|---|---|
| (1/3, 1/3, 1/3) | 1233元 | 1233元 | 1233元 | 7967元 | 5567元 | 6267元 |
| (0.25, 0.35, 0.40) | 925元 | 1295元 | 1480元 | 8275元 | 5505元 | 6020元 |
| (0.2, 0.5, 0.3) | 740元 | 1850元 | 1110元 | 8460元 | 4950元 | 6390元 |
这个对照表很直观地展示了同一个物理调度方案下,不同的博弈权重如何改变经济结果。物理上谁给谁送了多少电完全一样,但财务上的“谁赢谁输”差异很大。所以确定权重之前,务必让所有参与方明白一点:权重不仅是一个数学参数,它直接决定了各自的利润和成本。
5.4 与Shapley值的对比:得失权衡
我还针对这个三微网算例跑了Shapley值分配,作为对照。三微网情况下需要枚举的联盟数量是7个,每个联盟做一次独立优化,计算量完全可控。Shapley值分配的结果是:MG1约节约1120元、MG2约节约1410元、MG3约节约1170元。
和对称NBS相比,Shapley值给了MG1更少的份额,因为MG1单独加入联盟时的边际贡献略低于MG3;给了MG2最多的份额,因为MG2是联盟中“最不可或缺”的角色——没有它,夜间就没有便宜风电可用。这个结果从边际贡献的角度看很公平,但它忽略了MG1在白天光伏贡献中的“不可或缺性”。
Shapley值和NBS各有拥趸。我的看法是:如果项目参与方较多(超过5个),不要用Shapley值做在线计算,计算量不现实;即使离线算,也要注意不同联盟组合下的优化结果可能存在多解,导致边际贡献不稳定。NBS的优势在于计算路径清晰、和电网调度模型天然耦合,尤其适合做成日内滚动优化;Shapley值更适合做年度/季度的事后收益清算,或者作为NBS权重设定的参考基准。
6. 工程落地时容易被忽略的几个关键问题
模型、算法、算例都跑通了,但要把这套东西真正放到项目里运行,还有几个平时论文里不怎么写、但实际经常绊倒人的问题。这一节就当排坑分享了。
6.1 交易电价是否可信:结算机制的落地
模型算出内部交易电价λ_ij(t),但现场执行的时候,调度系统和财务系统是两拨人管。调度系统关心功率指令,财务系统关心结算账单。如果模型电价和财务系统的结算口径对不上,现场就会出乱子。
我在项目中踩过的坑是:财务系统用的是“净电量结算”,也就是一天结束时看联络线正反向净电量,按一个综合电价结算;但模型里用的是“分时净计量”,每个时段的正向电量按一个价、反向电量按另一个价,而且时段不同价格不同。两套口径算出来的账单差距可以达到5%到8%,直接导致合作方对账时起争执。
解决方法是:在项目上线前,把两阶段模型输出的分时功率序列和分时电价序列转换成财务系统要求的标准报表格式,并且反复做“台账对平”测试。一定要确认每个时段每个微网的购电成本、售电收入、共享电费,加总之后和模型里第二阶段算出的结果一致。如果模型用了ADMM分布式求解,还要额外核对:各微网本地账本汇总后的总成本和集中式基准解的偏差是否在可接受范围内。
另外,还要提前约定好内部电价的调整机制。模型给出的内部电价是“影子价格”,它会随着负荷、新能源出力、电网电价的变化而波动。实际运行中,可能今天的影子价格和明天的就完全不同。如果协议里没有规定“影子价格如何用于结算”,那每次调度结果出来,财务都会来问“这个价格是怎么来的,凭什么是这个数”。我习惯的做法是:日前调度采用“日前影子价格+固定服务费”作为内部结算价,日内调整只处理极少数的偏差电量,偏差电量按电网实时电价结算。这样既保留了影子价格的经济引导作用,又给了财务一个稳定可预期的结算框架。
6.2 权重动态调整与长期合作稳定性
很多人以为权重是一次性设定、永久有效的,这其实是大忌。微网的负荷特性会随着用户入驻而变化,光伏组件会衰减,储能容量会扩容,甚至某个微网可能换了业主。权重如果不变,合作初期的“均衡”会随着时间推移逐渐失衡,最终有一方觉得“我贡献越来越大,分的还是那么少”,合作破裂的种子就从这里种下。
我在实际项目里一般建议按季度或半年为周期重新计算权重。重新计算时用过去一个周期的实际运行数据,比如各微网实际参与共享的电量、实际响应调度指令的准确率、实际减少的弃风弃光率等,用第3.3节的熵权法重新算一轮权重。同时对权重变化设定一个限制幅度,比如单次调整不超过5%,否则某次预测数据异常会导致权重剧变,影响联盟的财务稳定性。
还要考虑权重调整的“说服成本”。哪怕模型算出来某个微网权重应该从0.3降到0.25,负责商务的同事也需要向该微网解释清楚为什么降了。建议在权重计算表中保留每个指标的原始数值和计算过程,让数据自己说话,比任何公关话术都有力。
6.3 通信失败、预测偏差等边界情况处理
再好的优化模型也逃不过现场的不确定性:光伏被云遮了、风电没风、某条联络线检修、通信链路断了、某个微网的AGC系统没有按指令执行。这些边界情况必须提前写好应对策略。
我的做法是给系统设计三层保护。第一层,日前计划生成时预留联络线功率裕度,比如联络线容量是0.8MW,日前计划最多用到0.7MW,留0.1MW作为实时偏差调整空间。第二层,日内滚动优化每15分钟跑一次,基于最新的超短期预测修正计划。第三层,当某个微网通信中断或者执行指令失败时,自动降级为“联络线功率冻结”模式:联络线实功率按最近一次成功指令保持,其他微网在本地优化时把这个联络线功率当作固定边界条件。这样即使极端情况下联盟退化为“物理上仍然相连、但经济上不再协商”的运行模式,也不会出现功率越限或电压越界的安全事故。
预测偏差对纳什谈判分配的影响也不容忽视。如果MG2实际风电出力比预测少了30%,它承诺送给MG1和MG3的夜间电量就兑现不了,联盟需要临时从电网高价购电来补缺口。这笔额外的成本谁承担?这就需要在合作协议里对“偏差责任”做出约定。比较常见的做法是:各微网对自身新能源出力预测偏差负责,联盟内部按预测电量结算,实际偏差电量按电网实时电价由责任方自行承担。这样让预测能力强、预测精度高的微网在权重计算中获得优势,同时也把预测风险压实到产生风险的源头,逻辑上是自洽的。
最后再分享一个我在现场项目里的体会:非对称纳什谈判模型的收敛性质、简约形式和清晰的经济解释,使它非常适合作为一个多方利益协调的“共同语言”。模型算出来的结果不是用来替代谈判的,而是用来给谈判提供参照系的。权重怎么定、偏差怎么罚、电价怎么算,这些在代码里都是几行参数的事,但在会议室里,每一行都对应着真金白银和漫长的协商。把这套模型当做一个决策支持工具,而不是自动决策机器,它在实际项目中的生命力会远远超出你最初写论文时的预期。
