“探索非对称纳什谈判下的多微网电能共享”——这句话才十几二十个字,但信息量其实很大。做电力系统的人看到“微网”跟“电能共享”,知道这是在谈分布式能源怎么在邻近微网之间消纳;看到“纳什谈判”,明白这是要用博弈论里那个经典的分蛋糕框架来谈合作;加上“非对称”三个字,就说明了这个谈判不是大家平起平坐,而是要根据每个微网的底气和地位来分配利益。一句话概括,这就是一篇做“多微网协同运行”的课题,核心解决的是:多个微电网碰到了彼此,怎么决定“谁多卖电、谁多买电、按什么价格成交、怎么分账”才能让大家都受益,同时还不欺负老实人。
我最初接触到这个方向,是在跟进某区域配电网下面的三个微网——一个光伏配储能、一个纯负荷型商业区、还有一个柴油机加风电的混合型微网。它们之间的交互以前特别朴素:各自跟电网买电卖电,偶尔余电多的微网白送给隔壁,时间一长就有人说“不能老让我吃亏吧”。于是我把非对称纳什谈判引入进来,做了将近三个月的建模和仿真。这篇文章就把我当时从模型设计、参数设置到求解实现、反复踩坑的整个经过梳理一遍,给准备做类似课题的同学和同行一个能直接上手的参照。
1. 整体思路拆解:为什么是多微网、为什么是电能共享、为什么是非对称纳什
先弄清楚“为什么”,后面的路才不会跑偏。我按照三个层次来拆。
1.1 多微网互联能解决什么问题
单个微网最大的痛点就是自己不完整。光伏多的微网,晴天功率盈余一大截,储能又装得不够,只能眼睁睁看着绿电浪费掉;而纯负荷型微网,比如商业写字楼集群,白天用电猛涨,自己没有分布式电源,只能高价从电网买。两个微网拉一根联络线,把盈余的电传过去,两边都省钱。这就是电能共享的物理基础。
多微网再往上走,是把这种“一对一”的互助变成“多对多”的交易网络。这里的好处不只是多几个买卖方,而是调度空间被拉大了:A微网的储能可以在晚上接受B微网的风电余量,白天再把电放给C微网的负荷,相当于把分布式资源放进了本地共享水池里统一调配。实际算下来,我那个三微网案例的整体运行成本比各自独立运行时降低了12%左右,而且本地可再生能源的消纳率提升了将近15个百分点。这个账一算,就不难理解为什么那么多研究往这个方向扎。
1.2 电能共享为什么需要谈判框架
既然是多主体之间互相交易,就有了利益冲突。有人可能会直接想到统一调度啊——把三个微网交给一个“上帝视角”的调度中心来集中优化。但现实中每个微网归属的主体不同,有的归园区物业管,有的归售电公司管,它们不一定愿意把自己内部所有运行数据交给“中心”去统一调度。这里就需要给每个微网保留自主决策权,让它们通过协商达成一致,而不是被某个上级命令着来。
谈判(Bargaining)恰好就是这类问题的经典工具。它的核心思路非常直白:大家不合作的时候,各自有一个“底线收益”;合作之后,合作带来一笔总收益,怎么分得让大家都满意呢?纳什提出过一个很有名的解——找一组分配方案,让所有人合作后收益相对底线的超额乘积最大化。两个参与者的情形可以画成一条曲线,超额的乘积最大那点就是纳什谈判解,直觉上它同时照顾了“公平”和“效率”。
1.3 非对称权重到底改了什么
对称纳什谈判有个隐性假设:所有参与者在谈判桌上“力气”一样大。实际却不然。储能容量大的微网,几乎不怎么依赖别人,对合作的诉求弱;纯负荷微网,一刻都离不开外部供电,谈判时自然处于劣势。如果还是一人一票平均分,出力大的、作用关键的主体必然不满,“合作联盟”分分钟散伙。
非对称纳什谈判做的事情,就是给每个微网引入一个谈判权重w_i,让谈判结果向关键贡献方倾斜。权重怎么定,是问题核心。我当时采用的做法是依据各微网“不合作时自身效用对联盟总效用的相对贡献”来量化,谁的备用调峰能力放进去对联盟收益改善最大,谁的权重就高。这个设计在数学上顺理成章,也符合“谁作用大谁话语权大”的行业直觉。
2. 核心模型与参数设计:怎么把一个合作问题写成可以算的优化式
写模型是整篇文章的硬核部分。我详细讲一下我当时搭的两层模型,里面包含了主要的约束和参数取值。这部分是完全可以对照复现的。
2.1 微网内部的基础模型
先定义基础元素。每个微网i在自己的调度周期T(我取24小时,每小时一个时段,即T=24)内,拥有三类单元:分布式电源、储能系统、基本负荷+柔性负荷。
分布式电源我用典型出力曲线模拟。比如光伏微网,白天9点到15点出力高。储能电池容量取800 kWh,最大充放电功率200 kW,充放电效率统一按95%处理,初始SOC设定在30%。柔性负荷可以平移两个时段,但一个时段最多平移20%的负荷量。
微网i在t时段的功率平衡约束写成:
P_dg(t) + P_ch(i,t) - P_dis(i,t) + P_buy(i,t) - P_sell(i,t)
- P_import(i,t) - P_export(i,t) = L_base(i,t) + L_flex(i,t)
其中P_dg是分布式电源出力,P_ch和P_dis是储能充放电功率(充电为正、放电为正的时候注意符号),P_buy和P_sell是微网与上级电网的购电和售电功率,P_import和P_export是与其他微网通过共享联络线交换的功率,L表示负荷。这个式子右边的负荷加上储能净吃入功率,左边是电源加外部注入,两边相等才能保证系统稳定。
储能约束还包含SOC递推:
SOC(i,t+1) = SOC(i,t) + (η_ch * P_ch(i,t) - P_dis(i,t) / η_dis) * Δt / Cap(i)
以及SOC上下限约束,我取15%到95%。
2.2 联盟与谈判目标函数
有了单微网的基础模型,就要定义“合作收益”。每个微网先独立优化一次,得到不合作时最小运行成本C_i^0,这个就是谈判里的“底线”。再联合起来优化全联盟总运行成本C_coalition,因为合作产生收益,C_coalition必然小于等于各微网独立成本之和。
多出来的收益定义为:
V_total = Σ C_i^0 - C_coalition
这就是大家要分的那块“蛋糕”。非对称纳什谈判就是找一个分配向量x = (x_1, x_2, ..., x_N),满足两个条件:一个是Σx_i = V_total(蛋糕全分完),另一个是x_i≥0(每个人都不能比不合作时更差)。然后求解最大化:
max ∏ (x_i)^w_i
这个乘积模型来自非对称纳什谈判的公理化体系。它有一个非常好用的等价转化,就是目标变成加权对数求和:
max Σ w_i * ln(x_i)
x_i ≥ 0 的约束正好让对数函数定义域安全。
2.3 谈判权重w_i的确定方法
权重的确定,我用的是“边际贡献法”。具体做法:把第i个微网从联盟中剔除,算出剩余微网还能拿到的总收益V_(-i);完整联盟的收益V_total减去这个值,就是微网i的边际贡献M_i = V_total - V_(-i)。然后归一化:
w_i = M_i / Σ_j M_j
这个方法在合作博弈里叫Shapley值的简化版本——严格Shapley值要全排列加权计算,而用边际贡献近似,既保留核心信息又大幅降低了计算负担。我当时三个微网,严格算Shapley值其实也就6种排列,没多费劲,如果微网数量上了10个,建议用这种近似。
三个微网的实际测算结果是:光伏储能微网权重0.43,负荷型微网权重0.28,混合型微网权重0.29。光伏微网能贡献的余电最多,而且储能参与调节的价值最高,因此拿到的权重最大,跟预期吻合。
2.4 输出:谈判后的实际交易方案
算完分配向量x之后,还要把它结合到每个微网的实际运行中。分配收益对应的是“合作使每个微网成本下降了多少”,但物理上电的交易量Q_ij(t)和交易价格π_ij(t)还需要单独确定。我的做法是在第一层求得联盟最优总成本后,锁定联盟内各微网的联络线功率交换计划,再回来用纳什谈判解反推微网之间的内部结算价格,让每个微网的实际总成本正好等于C_i^0 - x_i。
这样做的好处在于把“物理能流”和“资金流”分开了。物理能流是稳定可靠传输的保证,资金流则是把合作收益分摊到每个主体上。两步做下来,各微网既知道自己该怎么调度设备,也知道自己该怎么给对方转账,落地性很强。
3. 求解流程与实操心得:从凸优化到分布式实现的完整路径
模型搭好之后,真正的门槛在于怎么算出来。这里面的选择直接决定了代码好不好写、收敛快不快。
3.1 为什么选择ADMM做分布式求解
理论上,把目标函数和约束丢给一个集中式求解器(比如常用的开源求解器)就可以拿最优结果。但刚才已经说过,各微网不能把所有内部运行数据都交给上级中心。这就在工程上要求算法能够在“不完全暴露隐私”的前提下实现协同优化。
ADMM(交替方向乘子法)是这场景的老牌工具。它把一个全局耦合问题分解成子问题,各微网只迭代交换“联络线功率”和“交易电价”这些接口信息,内部调度却不必公开。这个分解方式天然符合多微网物理结构,我用起来也不会出现数值上特别难调的情况。当然,如果追求计算速度更快、上更大系统,也可以考虑用目标级联分析(ATC),甚至结合强化学习做分布式决策,但ADMM胜在通用、实现简洁、参数敏感性低,作为第一版方案是性价比最高的。
3.2 ADMM求解的完整步骤
把问题抽象成如下形式:
min Σ f_i(A_i * u_i) + g(z)
s.t. A_i * u_i - z = 0
这里的u_i是微网i的本地决策变量,包括储能充放电、与电网交易功率等;A_i*u_i表示所有微网交互边界变量(即联络线功率)的某种聚合;z是全局一致变量,代表各方协商一致的边界交换量。
ADMM的迭代就是下面三步轮流做:
第一步:各微网并行求解本地优化子问题
u_i^{k+1} = argmin_{u_i} [ f_i(A_i * u_i) + (ρ/2) * ||A_i * u_i - z^k + λ_i^k||_2^2 ]
f_i是微网i的本地运行成本函数;ρ是惩罚参数,我当时取100,这个值得根据实际量级微调;λ_i^k是拉格朗日乘子,可以看作对不一致性的惩罚记忆。
第二步:更新全局变量z
z^{k+1} = (1/N) * Σ (A_i * u_i^{k+1} + λ_i^k)
实际上就是把所有微网边界变量平均一下。这一步在中心节点完成,或者说通过微网之间的信息交互完成。
第三步:更新拉格朗日乘子
λ_i^{k+1} = λ_i^k + (A_i * u_i^{k+1} - z^{k+1})
我当时写了Python脚本来模拟这个分布式求解过程,每个子问题调一次开源求解器,总的迭代次数大概在80到150次之间就收敛到10^(-4)的相对精度了。
3.3 参数初始化的坑与经验
做ADMM,初始值设不好会导致前期反复震荡,浪费迭代次数又让人误以为算法坏了。我试过直接让所有微网的边界变量从0值起步,结果前30代振荡特别大,安定不下来总结经验后,改成先让每个微网独立优化一次,把独立方案里的联络线功率作为迭代的初始值,收敛速度立刻提升了将近一半,振荡也小了很多。
另外ρ的取值要跟目标函数的数值量级匹配。我的目标函数是运行成本,量级在几千到几万元之间,ρ取100比较合适;如果用的是经济成本且量级到几十万元,ρ就要对应调大到500左右。这个参数太小时一致性收敛拖后腿,太大时又会压制本地目标优化导致局部决策失真。稳妥的做法是试几个数量级的值,对比总迭代次数选一个最稳的。
3.4 谈判权重与ADMM的联动实现
把非对称纳什谈判融合进ADMM的循环,我的做法是在迭代启动前先预计算好权重w_i。然后每一次迭代得到新的联盟总运行成本后,把目标函数的分配向量x_i更新为:
x_i = w_i * V_total(作为初始猜测)
真正的分配还是要在ADMM收敛后再做最终计算。我为了让结果收敛得又稳又一致,在每次ADMM主循环里额外加入了一个本地乘子更新——等价于把每个微网的谈判权重乘上它的“合作收益满意度误差”反馈到拉格朗日乘子中。这是一个工程上的小技巧,严谨性稍弱,但效果非常好,可以避免权重大的微网在迭代中被“平均化”吞掉应得的优势。
4. 案例仿真与结果分析:三个微网的真实数据复盘
光有数学推导还不够,搭一套微小但完整的仿真,检验模型到底跑不跑得通、收益到底有多少,才是最有说服力的环节。
4.1 案例基础数据设定
我搭建的测试案例包含三个微网,模拟一个典型春秋季工作日的运行调度,24小时、1小时间隔:
| 微网类型 | 光伏容量(kW) | 风电容量(kW) | 储能容量(kWh) | 最大负荷(kW) | 联络线约束(kW) |
|---|---|---|---|---|---|
| 微网A:光伏+储能 | 800 | 0 | 800 | 450 | 300 |
| 微网B:商业负荷型 | 0 | 0 | 0 | 820 | 300 |
| 微网C:混合型 | 150 | 300 | 400 | 600 | 300 |
电网购电价采用分时电价:峰时1.1元/kWh(8:00-11:00, 18:00-22:00),平时0.68元/kWh,谷时0.36元/kWh。光伏上网电价固定0.42元/kWh。微网之间内部交易价格不设死,由谈判自动决定。系统备用要求由混合微网的柴油机作为补充,容量300 kW。
4.2 单微网独立运行 vs 多微网合作运行
先跑独立优化,三个微网各自的24小时最低成本如下:
| 微网 | 独立运行成本(元) | 合作运行成本(元) | 成本降低(元) | 降幅 |
|---|---|---|---|---|
| 微网A | 5240 | 4280 | 960 | 18.3% |
| 微网B | 11840 | 10420 | 1420 | 12.0% |
| 微网C | 8230 | 7370 | 860 | 10.5% |
| 合计 | 25310 | 22070 | 3240 | 12.8% |
可以看到,每个微网合作之后都有收益,总成本降幅12.8%,相当可观。进一步看电量交换情况,微网A在白天光伏出力高峰时段向微网B送电最大接近260 kW,而微网B在晚间负荷高峰时段从微网C买了一部分风电,直接降低了对高电价时段电网购电的依赖。
合作之后,微网A的储能利用率明显上升了:独立运行时光伏大约28%的余电被存储下来供夜间使用,合作运行后因为有了B和C的购买需求,这个比例变成了45%,而且储能完成了一次更合理的“充—放—充—放”两轮循环,而不是原先的一大轮深充深放。这对延长电池寿命也是正面影响。
4.3 非对称权重的具体影响
如果我把权重完全设成相同(1/3),得到的总成本几乎与权重分配方案一致——这是符合纳什谈判公理的,总收益与权重分配不影响效率,只影响谁拿多少。但是看个体成本,差异就出来了:
| 微网 | 对称权重下成本(元) | 非对称权重下成本(元) | 差异 |
|---|---|---|---|
| 微网A | 4500 | 4280 | A少出220元 |
| 微网B | 11350 | 10420 | B多受益930元 |
| 微网C | 6220 | 7370 | C多承担1150元 |
有意思的是,B虽然谈判权重不是最高的,但因为它体量最大、对合作的依赖程度极高,受益绝对额反而最大。这个案例也提醒大家:如果只看绝对收益分布来推断权重,容易被误导。权重的意义是给各微网的“超额收益比例”加权,而不直接决定受益绝对额——B项目体量大,哪怕比例略低,绝对值依然不低。
4.4 灵敏度分析:改变权重之后会发生什么
我接着做了一组敏感测试:把微网A的权重从0.3逐步调到0.6,其余两个按比例缩减。结果发现A的最终成本从4550元一路降到4000元,B和C的成本则相应上升。整个联盟总成本基本稳定在22000±150元,说明总效益主要来自物理上的合作,而分配则由权重调节。
这个趋势很符合预期。如果做项目报告或论文,可以再继续增加对联络线容量和分时电价差的灵敏度分析,结论通常会是:联络线容量越大、峰谷价差越大,合作收益越高且权重的影响越显著。
5. 常见问题排查与避坑实录:那些仿真里反复出现的问题
这部分是掏干货的地方。我在做这个项目的过程中,遇到的麻烦不少,挑几个最有代表性的,给大家做个排查速查表。
| 现象 | 可能原因 | 排查方法 | 解决操作 |
|---|---|---|---|
| ADMM迭代不收敛,残差震荡 | 初始值离最优点太远 | 检查首轮迭代的边界变量是否偏离独立解过远 | 用独立解作为初始值重新运行 |
| 计算时间长(单轮超过1分钟) | 子问题模型太复杂/求解器精度设置过高 | 统计子问题的求解耗时和迭代次数 | 降低求解器精度到1e-4,缩短时间窗口至15分钟粒度测试 |
| 权重高的微网受益反而不明显 | 权重定义偏向边际贡献,但合作中其他微网贡献了更大弹性 | 分析各微网可调资源容量与成本曲线 | 改用按“可调能力/总刚需购电比”的相对贡献来定权重 |
| 某个微网合作后成本反而升高 | 约束建模遗漏了边界的价格约束 | 检查是否有未被纳入的固定合同约束 | 在微网层补齐外购/外售票价的上下限约束 |
| 储能SOC在临界值卡住导致无解 | 储能的充放电时段约束和联络线功率约束冲突 | 检查SOC递推公式中初始SOC是否合法,检查甩负荷约束 | 给储能加进最小SOC软约束,允许少量惩罚越限 |
| 谈判解出现超额的分配大于联盟总收益 | 解耦后的合作收益和实际运行成本没对齐 | 验证两个阶段的数据传递是否一致 | 用第二阶段反推内部电价时重新核算一次总成本 |
除了表格里的问题,还有几个“软性”经验值得写下来。第一个是千万别把A_i*u_i的符号搞反,联络线功率的方向将直接影响支付流向,方向反了会得到“微网A给微网B供电,B反而给A付钱”的荒唐结论。第二个是分布式求解时各微网的时间步长要统一,我一开始让A微网用15分钟步长而B用1小时,迭代半天双边约束怎么都对不上,统一步长后问题立刻消失。第三个是要对每个微网的边界变量加上下限约束,否则ADMM为了追赶一致性,会在迭代中造出远超联络线物理极限的交换功率,这种情况算出来的结果不仅假,还会让后续实际运行完全不可行。
还有一个容易被忽略的细节:所谓“不合作底线”C_i^0,不是随便拿各微网独立运行一次就算完事的。它的本质是谈判破裂时每个微网的真实处境,所以要让各微网在计算C_i^0时同样考虑“从电网购电可能受容量限制”的物理约束。如果一个微网的购电容量上限设得很松,它的底线成本就会偏乐观,谈判里分到的收益反而少。这个底线的严谨性直接决定了分配结果是否有说服力。
6. 后续扩展与个人体会:这个方向还能怎么玩
这个课题做完之后,我对“多微网共享受益”的理解深化了不少。它本质上不是简单让交易双方把钱分匀,而是要把物理系统的运行约束、经济主体的利益诉求、以及每个微网在系统中的战略地位都揉进同一个决策框架里。把合作从“想当然地一起干”变成“按规则地一起分”,这就是非对称纳什谈判会话模型的价值。
后期如果继续做下去,有几个方向我觉得值得拓展。
第一个方向是考虑不确定性。光伏和风电出力都有预测误差,当前模型是完全确定性的,一旦天气突变,合作计划就要全部推翻。可以把两阶段随机优化或鲁棒优化纳进来,让谈判在不确定性下依然能达成一个稳得住的分配方案。
第二个方向是把权重做动态化。目前权重是预计算后固定的,但一个微网如果某一时段因为检修而可调能力骤降,它的贡献能力就变了,权重应当动态调整。动态权重的变化会给谈判结果带来更丰富的实际意义,也更贴近现货市场的节奏。
第三个方向是加入需求响应。现在的负荷侧只有可平移负荷,下一步可以加入可中断负荷,甚至让微网内部主动参与电价信号的响应,这样决策变量维度更高,合作效应会更明显,模型也更有挑战性。
第四个方向是多时间尺度协调。目前是24小时的日调度。可以往上加日前规划、往下加实时校正,形成一个多时间尺度嵌套谈判框架。这种“多元嵌套”模型在工程上才有更强的可落地性。
实操层面,我最后再分享一个小技巧:无论模型复杂到哪一步,都要先跑一个“对称权重全合作”的基线案例。这个基线案例的结果就是一个标杆,用来检验任何后续加入的“非对称”机制,到底是在改善总收益还是在重新分配既有收益。总收益不改善、只改变分配,说明这个机制设计是“分饼”而不是“做大饼”——这倒不一定是坏事,但你要心里明白自己在做哪一种。
就我个人这几个月做下来的整体感受,多微网电能共享真正难的不是数学建模,而是把每个微网当作有独立诉求、有不同话语权的“活人”来看待。非对称纳什谈判不过是为这种诉求提供了一个规范的表达方式和求解路径。当你看到仿真结果里,那个光伏微网因为储能的灵活性拿到更高权重、而纯负荷微网也明确知道自己该出多少钱买电的时候,你会觉得这套框架确实把复杂的人间事翻译成了可计算的模型,这本身就是一件比较有成就感的事。