国内做新能源优化运行、尤其是多主体博弈方向的同学,这两年应该都能明显感觉到一个变化:单主体的调度模型越来越难发文章了,大家都在往“多主体协同”“利益分配”这个方向走。而这个方向里,纳什谈判理论几乎是绕不开的一块基石。特别是当系统里有风、有光、还有氢储能时,多个投资主体之间的利益博弈关系天然存在,传统的集中式调度一厢情愿地“全网最优”,在现实中根本落不了地。
我根据自己的项目经验,围绕“纳什谈判理论 风–光–氢 多主体新能源 优化运行”这个课题,把合作博弈建模、纳什谈判问题构造、分布式求解、以及实操中踩过的坑,从头到尾梳理一遍。这篇文章适合正在做多主体微电网/综合能源优化调度的研究生,也适合刚接触合作博弈、想搞清楚纳什谈判到底怎么用于能源系统的工程师。
1. 这个课题到底在解决什么问题
1.1 风-光-氢系统里天然的“利益割据”格局
传统电力系统调度,一个电网公司统一调度所有机组,目标只有一个:系统总运行成本最低。但到了新能源园区、综合能源系统这个层面,情况完全变了。风电场的投资方、光伏电站的投资方、制氢加氢站的投资方,很可能是三家公司,甚至更多。大家共用一条并网线路、共用一个园区变电站,但各自的经济收益独立核算。
这就出现了一个核心矛盾:从全社会或全园区角度看,风电、光伏发的多余电量如果能就地用于电解水制氢,减少弃风弃光,同时氢又能作为储能介质在负荷高峰时发电回补,整体效益一定是最大的。但从单个主体角度看,风电场多发出来的电卖给电网可能收益更稳定,凭什么要低价卖给制氢方?光伏电站凭什么相信制氢方在我说缺钱的时候真能反哺我?
这种“整体最优但个体不情愿”的困境,就是纳什谈判理论发挥作用的场景。
1.2 合作博弈为什么比主从博弈更适合这个场景
多主体博弈其实有两条技术路线:一条是主从博弈,也就是Stackelberg博弈,一个领导者定策略,多个跟随者响应。比如电网公司定电价,微网内的风光储各自优化。这种模式优点是模型清晰,缺点是领导者地位太强势,跟随者的利益容易被挤压,长期合作不可持续。
另一条就是合作博弈,核心逻辑是“大家先一起把蛋糕做大,再坐下来谈怎么分”。纳什谈判正属于合作博弈的范畴,它不预设谁是老大,而是假设各主体地位对等,通过谈判达成一个有约束力的合作协议。
我在做课题对比时明显感受到一点:对于风-光-氢这类“各自有产、彼此互补”的系统,合作博弈在经济学直觉上比主从博弈更合理。风电和光伏不是从属关系,氢能也不是被动接受者,大家在物理上互补,在地位上平等,天然适合谈判模型。
2. 纳什谈判理论的核心机制拆解
2.1 谈判破裂点:一切谈判的起点
纳什谈判模型里有一个概念叫谈判破裂点,也叫不一致点,用向量d表示。它指的是:如果各主体没能达成合作协议,各自回去单干,每个人能获得的最大收益是多少。说白了,这就是谈判的“保底收益”。
举个通俗例子:两个人合租一套房比分别租单间省钱,但谁多出谁少出得谈。如果他们不合作,分别租单间的成本就是保底值d1和d2。那么谈判达成的租金分配方案,必须保证每个人分摊的租金低于自己单租的成本,否则这个人直接拒绝合作。
对应到风-光-氢系统:破裂点d_w就是风电场不参与合作、独立运行时的最优收益,d_p是光伏电站不参与合作时的最优收益,d_h是氢能系统独立运行时的最优收益。这三个值怎么求?很简单,把三套独立优化问题分别求解,得出的收益就是破裂点。
注意:破裂点的求解必须采用同一套边界条件,比如同样的光照/风速曲线、同样的电价时段、同样的设备参数。很多初学者在这里犯错,独立运行时用一套参数,合作时又改了一套参数,导致破裂点失真,后面的分配结果全乱套。
2.2 纳什谈判解的效用乘积最大化
纳什1950年提出的谈判解,是在满足4条公理的前提下(帕累托最优、对称性、线性变换不变性、无关选择独立性),唯一满足条件的谈判结果。其数学形式核心是最大化各主体效用增量之积:
max ∏ᵢ (uᵢ - dᵢ)ᵢ
其中uᵢ是第i个主体在合作协议下获得的收益,dᵢ是破裂点收益,约束条件是uᵢ ≥ dᵢ,s.t. 联盟总支出 ≤ 联盟总收入。
注意一个关键点:(uᵢ - dᵢ)这个差值本质上就是“合作带来的红利增量”。纳什谈判解并不是简单地平分总收益,而是在保证每个主体至少拿到保底收益的前提下,让各方增量收益的乘积最大。这个乘积目标有几个隐性好处:
- 如果任何一个主体的增量变为0,整个乘积就是0,意味着谈判没有任何意义——这保证了合作方案必须让每个人受益。
- 乘积最大天然有“劫富济贫”的倾向,收益增量小的主体会成为优化的重点对象,保证了分配的公平性。
举例来说,A主体保底收益为100,合作后拿150,增量为50;B主体保底收益为20,合作后拿70,增量为50,这时乘积为2500。如果改成一种分配让A拿170(增量70)、B拿50(增量30),乘积变成2100,反而更小。所以纳什谈判解的分配往往比“按贡献比例分配”更照顾弱势主体。
2.3 与其他合作博弈解概念的横向对比
做合作博弈分配,常用概念至少有三种:Shapley值、核仁、纳什谈判解。我在实际项目里都跑过,简单对比一下:
| 分配方法 | 核心思想 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Shapley值 | 按边际贡献期望分配 | 有公理化基础,分配唯一 | 计算量随主体数量指数增长;只看边际贡献,可能忽略个体理性约束 | 主体数量少(≤5)时的理论对比 |
| 核仁 | 最小化最大不满 | 强个体理性保证,联盟稳定性强 | 需要遍历所有子联盟,计算复杂度高;分配的“平均主义”倾向明显 | 联盟稳定性要求极高的场景 |
| 纳什谈判解 | 最大化效用增量乘积 | 帕累托最优+个体理性兼顾;计算友好;可用分布式求解 | 需要事先确定谈判破裂点;默认各主体谈判力均等(可扩展非对称) | 多主体能源系统最常用 |
从我的实践看,纳什谈判解在工程应用中的最大优势是兼容性。它的目标函数本身是光滑可导的,可以用数学规划求解器(Gurobi、Cplex)直接处理,也可以改写成分布式形式用ADMM迭代。Shapley值和核仁在主体数量超过4个以后,子联盟数量爆炸,几乎没法实用。
3. 风-光-氢多主体系统的数学模型搭建
3.1 各主体独立运行模型的基元
搭建模型的第一步,是明确每一类主体的运行边界和收益来源。以我做的园区级系统为例,假设风电主体拥有风电机组并配有少量电储能,光伏主体拥有光伏阵列,氢能主体拥有电解槽、储氢罐、燃料电池。这三个主体之间通过一条公共母线互联,可以互相买卖电力,也可以各自向电网购售电。
风电主体在独立运行时的收益模型包含:
- 售电给电网的收入:P_wt_sell × 上网电价
- 风电运维成本:固定运维费率×出力
- 弃风惩罚(可选):如果实际出力大于可消纳范围,多余部分按惩罚系数计入
光伏主体的结构类似,但光伏的出力曲线比风电更规律,午间出力峰值明显,这就导致光伏一天的出力高峰和负荷高峰错位,更需要储能或制氢来平移。
氢能主体的模型更复杂,包括:
- 电解槽:输入功率P_el,产氢速率 = P_el × η_el / HHV(氢气高位热值)
- 储氢罐:储氢量迭代约束,S_t+1 = S_t + 产氢量 - 用氢量
- 燃料电池:输出功率P_fc,耗氢速率 = P_fc / (η_fc × HHV)
- 收益来源:售氢给加氢站、燃料电池发电卖给电网、以及消纳风光弃电的“处理服务费”收入
这里特别强调一下电解槽的模型细节。很多文章把电解槽简化为一个固定的功率上限和效率,但实际工程中,电解槽有最低运行负荷(一般为其额定容量的10%-20%),低于这个负荷就必须停机。这个约束在合作模型中至关重要,因为当风电机组出力较小时,分配给电解槽的功率可能低于最低运行限制,此时只能舍弃这部分制氢能力。如果模型里没有最低运行负荷约束,计算结果会严重偏乐观。
3.2 主体间功率耦合的约束与变量
多主体模型的耦合关系比独立模型多一层:功率平衡约束不再是一个主体内部的事,而是跨越多个主体的公共母线平衡。
设公共母线在时刻t的功率约束为:
P_wt_sell(t) + P_pv_sell(t) + P_fc_disch(t) + P_grid_buy(t) = P_load(t) + P_el_input(t) + P_grid_sell(t)
这个方程看着平常,但它其实把三个主体的运行耦合在了一个时点约束上。关键问题在于:谁的售电卖给谁?电价是多少?这正是谈判要解决的“转移支付”问题。
在我的建模里,采用的处理方式是将主体间的电力交易内生化为“虚拟价格变量”。即风电主体卖电给氢能主体的部分,按谈判后确定的内部电价λ结算;光伏主体卖给电解槽的电也按内部电价结算。这些内部电价不是外生给定,而是纳什谈判问题的对偶变量,由模型自己优化得出。
这种处理方式的好处是:内部电价的数值天然体现了一个主体对另一个主体的“边际贡献”。如果风电在夜间出力大而氢能正缺电,那么风电卖给氢能的内部电价就会升高,氢能主体支付的费用就是对风电主体合作贡献的补偿。
4. 两阶段优化求解流程的完整拆解
4.1 第一阶段:联盟总收益最大化
纳什谈判问题的求解,工程上最常用的方法是两阶段分解法。第一阶段先不管分配,只求联盟整体收益最大化:
max Σᵢ Rᵢ(xᵢ)
s.t. 联盟内所有约束(各主体内部约束+公共母线耦合约束)
这个阶段是一个标准的单目标优化问题,可以直接用求解器求解。得到联盟最大总收益R_totalmax,这是谈判能分配的“总蛋糕”上限。
注意一个重要细节:这个总收益不是为了求分配,而是为了第二阶段提供帕累托边界的上限参考。第一阶段的结果还给出了最优运行方案,比如电解槽的时序功率、燃料电池的发电时序、储能充放电策略等。
4.2 第二阶段:纳什谈判分配问题的求解
第二阶段在原联盟收益最大化问题基础上,加入各主体的收益分配变量,最大化如下目标函数:
max ∏ᵢ ∈ N (Bᵢ - dᵢ)
s.t. Σᵢ Bᵢ = R_totalmax Bᵢ ≥ dᵢ 各主体内部运行约束
其中Bᵢ是主体i在合作方案中的最终收益。
这个目标函数有一个明显特点:当主体数量较多时,乘积形式的非线性程度较高,直接求解时收敛性不好。所以工程实践中通常把乘积目标取对数,转化为对数效用项之和:
max Σᵢ ln(Bᵢ - dᵢ)
注意,这一步在数学上是等价的,因为对数函数是单调的,最大化ln∏(Bᵢ-dᵢ) 等价于最大化∏(Bᵢ-dᵢ)。但对数变换后目标函数变得光滑,有利于数值求解。
在这个阶段求解时还有一个小技巧,可以大大提高稳定性:如果某个主体的增量(Bᵢ - dᵢ)非常接近0,ln函数会趋向负无穷,导致迭代发散。实践中我会给每个增量加上一个小的正的松弛变量ε(比如10⁻³),既不影响结果精度,又能保证数值稳定。
4.3 ADMM分布式求解:兼顾隐私与效率
上面两阶段方法简单直接,但有个潜在痛点:如果三个主体归属不同的公司,谁愿意把自己内部运行数据(比如风机出力预测、光伏预测、电解槽效率曲线)全部交给一个中心求解器?商业上这是很大的障碍。
这时就要引入ADMM,交替方向乘子法。ADMM的核心思想是:把耦合在公共母线上的功率平衡约束松弛进拉格朗日函数,然后各主体分别求解自己的子问题,再通过交换边界变量(如公共母线上的注入功率和内部电价λ)迭代更新。
以风电主体为例,ADMM每个迭代轮次中,风电主体需要求解的子问题是:
min C_wt(P_internal) + Σλ_t · P_internal(t) + (ρ/2)Σ‖P_internal(t) - P_ref(t)‖²
其中P_internal(t)是风电主体通过公共母线向氢能主体输送的功率,λ_t是内部电价,P_ref(t)是上一轮其他主体传递过来的参考交换功率,ρ是罚参数。
迭代步骤概括下来就是:
- 初始化:各主体设定初始交换功率和经验电价,设λ=0,P_ref给定初值。
- 并行求解:各主体独立求解自己的子问题,得到本轮P_internal_new。
- 更新边界变量:在协调层(可以是商业机构提供的第三方平台)汇总各主体的交换功率,更新P_ref和λ。
- 收敛判断:检查相邻两轮交换功率的差值‖P_internal_new - P_ref‖是否小于阈值(一般取10⁻⁴)。若满足,则停止迭代;否则跳回第2步。
ADMM最大的优势在隐私保护。各主体只需要向协调层传递公共边界上的功率值和内部电价迭代值,不需要透露自己内部的成本函数和设备参数。这对真实商业场景非常有吸引力。
另一个ADMM的好处是收敛性质好。我实测下来,如果罚参数ρ设置合理,一般30-60轮迭代就能收敛到10⁻⁴量级精度。但ρ的选取确实有玄学成分,我后面会专门说。
5. 典型算例结果与效果分析
5.1 系统参数与场景设置
为了验证模型,我构造了一个典型园区场景:风电装机10 MW,光伏装机8 MW,电解槽容量3 MW(最低负荷30%即0.9 MW),储氢罐容量500 kg,燃料电池容量1.5 MW,园区基础负荷峰值约6 MW。调度周期为24小时,时间间隔1小时。
风光出力和负荷曲线采用所在地典型的夏季数据:光伏在10点-14点出力最大,风电在夜间出力较高,负荷峰出现在早晚两个时段。外部电网采用分时电价,峰时0.9元/kWh,谷时0.3元/kWh。
5.2 合作与非合作模式下的收益对比
先用独立运行模式求解三个主体各自的最优收益,得到破裂点:风电主体独立运行收益为4.82万元/日,光伏主体为3.15万元/日,氢能主体为0.96万元/日(主要靠售氢给加氢站,夜间购谷电制氢)。
然后再用两阶段纳什谈判模型求解合作方案。结果中联盟总收益为10.84万元/日,比三者独立运行收益之和8.93万元高出1.91万元/日,联盟增益率约21.4%。
最终的分配结果如下:
| 主体 | 独立运行收益(万元) | 合作分配收益(万元) | 增量(万元) | 增量占比 |
|---|---|---|---|---|
| 风电 | 4.82 | 5.63 | 0.81 | 42.4% |
| 光伏 | 3.15 | 3.95 | 0.80 | 41.9% |
| 氢能 | 0.96 | 1.26 | 0.30 | 15.7% |
这个分配结果很有意思,它并没有“平均分配”1.91万的增量,而是让氢能主体拿到的增量比例相对较低。原因在于,纳什谈判解考虑的是各主体从合作中获得的效用增量,而氢能主体的保底收益基数低,虽然增量只有0.30万,但它相对增长率为31%,效用提升幅度是三者中最大的。这也说明纳什谈判的公平观不是“绝对平均”,而是“效用层面的均衡”。
再看运行层面的变化:合作模式下,风电在凌晨1-5点的富余出力不再全部低价卖给电网,而是优先输送给电解槽制氢,这部分电量占比约17%;光伏午间出力除了满足园区负荷外,也有约12%直接送入电解槽。这样做的结果是园区整体弃风弃光率从独立模式下的11.6%下降到3.8%,氢能主体也获得了更便宜的绿电来制氢,降低了购氢成本。
5.3 关键参数对分配结果的敏感性
做完整算例后,我做了两组敏感性分析。
第一组是分时电价影响:将谷时电价从0.3元/kWh降到0.2元/kWh后,氢能主体独立运行收益上升(购谷电成本降了),破裂点从0.96万元变为1.21万元。这导致合作增益总量缩小到1.52万元,且氢能主体的增量从0.30万元降到0.21万元。原因不难理解:外部电价越低,氢能主体“单干”的底气越足,谈判中的保底收益越高,合作带来的额外动力就越弱。
第二组是电解槽容量影响:将电解槽容量从3 MW提高到5 MW后,合作增益总量上升到2.34万元,风电主体的增量占比提高到47%。这个结果说明,在风-光-氢组合里,制氢容量的大小直接决定了系统“消化”风光弃电的能力,制氢容量越大,风电和光伏通过合作获得的收益越多,氢能主体作为消纳方的重要性也随之提升。
这种敏感性分析在论文里非常有价值,它能直观地告诉读者:合作收益的源头到底在哪里。从工程角度看,也指导了园区规划和投资方向——如果你想让多主体合作产生足够的吸引力,保证电解槽容量与风光装机匹配是前提条件。
6. 实操经验与常见坑点
6.1 ADMM收敛性问题的处理心得
ADMM虽然理论收敛性有保证,但实际跑模型时很容易遇到振荡或收敛慢的问题。我踩过的坑主要有三个。
第一个坑是罚参数ρ的取值。ρ太大会让交换功率更新缓慢,收敛变慢;ρ太小则目标函数对交换功率偏差惩罚不足,迭代容易振荡。我的经验是:先用小算例做扫描实验,ρ从0.01取到100,观察总迭代次数和收敛曲线形态,再选一个“长尾平稳”的区间值。一般来说,ρ按耦合变量量级粗略估算,如果交换功率的量级是MW,ρ取1-10比较稳妥;如果是kW量级,ρ取0.01-1。
第二个坑是各主体子问题求解精度不一致。ADMM对子问题求解精度非常敏感,如果某个主体的子问题用默认精度求解(比如optimality tolerance取10⁻⁶),另一个主体只取到10⁻²,那么交换功率的更新会被低精度主体“拖后腿”,整体收敛速度急剧下降。我后来的做法是统一设置子问题的求解精度,并且把MIP Gap控制在1%以内再返回结果。
第三个坑是“谈判破裂点”和“合作模型”用了不同的时间粒度。独立运行模型用1小时为间隔,合作模型偏偏用15分钟间隔,得出的破裂点本身就不公平,后面一切都白搭。时间粒度不一致会导致破裂点值偏高或偏低,最终分配结果奇奇怪怪。
6.2 纳什谈判乘积模型数值稳定性技巧
在第二阶段直接求解乘积目标函数∏(Bᵢ-dᵢ)时,数值上很容易遇到问题:当某个主体的增量接近0时,乘积目标的值趋近于0,造成目标变化迟钝,难以判断收敛。
我在代码中的处理方案有以下几点:
- 一定使用对数形式的目标函数,而不是乘积原始形式。
- 如果Bᵢ-dᵢ可能为负(初始迭代点不满足个体理性约束),给目标内部加一个足够大的正移位常数,比如ln(Bᵢ-dᵢ+M),保证函数有定义。
- 迭代过程中如果出现某个Bᵢ < dᵢ的情况,不直接报错,而是检查约束构造是否正确;最常见的原因是破裂点求解时漏掉了一个收益项,导致破裂点偏低,合作分配被允许低于真实保底。
6.3 内部电价解释性不足的补充分析
很多审稿人会质疑:你模型里出现了一个内部转移电价λ,但这个λ到底是真实的电力交易价格吗?它能对应到现实中的合同电价吗?
这个问题需要在论文里解释清楚。我做的是这样处理:将内部电价λ_t的时序变化画出来,分析其与系统边际成本的关系。在一个合作运行的园区里,内部电价的本质是“影子价格”,反映了公共母线功率平衡约束的影子成本。它并不是真实的合同价格,而是为激励各主体维持合作运行方案而需要设置的“价格信号”。
如果要把这个方法落地到实际场景,通常的做法是根据纳什谈判解算出的转移支付额度,按比例折算成一个固定的合同电价,在合作期内保持不变。这样既保留了谈判结果的经济合理性,又便于工商业操作。
7. 一些实操建议与个人思考
整套模型跑通之后,我最大的感受是,纳什谈判理论用于风-光-氢多主体系统,真正的价值不在于理论的新颖度,而在于它提供了“一鱼两吃”的解决方案:既给出了系统层面的最优运行方案,又给出了可落地的利益分配机制。这一点是纯粹的集中式优化模型做不到的。
给正在做这个方向的同学三个建议。
第一,破裂点的计算多花心思。很多发表论文把破裂点当配角一笔带过,但我的经验是,破裂点一旦算错或算偏,整篇论文的经济学结论全部站不住脚。建议单独做一个敏感性分析,讨论不同外部条件下破裂点如何变化,这会让审稿人感受到你在这个问题上思考的深度。
第二,不要一上来就上ADMM。如果你只是想验证合作博弈模型的有效性,先用两阶段中心式求解看清楚逻辑,再在第二个阶段考虑分布式实现。上来直接搞ADMM,问题耦合复杂以后,调试成本会非常高,甚至让你怀疑模型本身的正确性。
第三,多主体设置要有商业逻辑的支撑。风电和氢能合作有天然逻辑(风光弃电制氢),但如果硬造一个“储能主体”加进博弈,而它在独立运行模式下几乎不赚钱,它的破裂点接近零,谈判中被“边缘化”的感觉会很明显,这种模型在经济上说服力不够。设计主体时,一定要先问清楚:为什么这个人愿意坐下来谈判?他的保底收益是什么?合作到底能给他带来什么?
最后再说一个延伸方向,那就是非对称纳什谈判。前面的模型默认所有主体谈判力相等,但实际场景中,资金雄厚的大风光企业和小制氢公司坐在谈判桌前,谈判力怎么可能完全对等?将主体议价能力差异引入权重系数,得到权重化的纳什谈判解,会更贴近工程实践。这个方向我也在持续研究,等有了更完整的算例结果再分享。