资讯动态

共享储能场景微网运营商与用户聚合商的主从博弈建模与仿真

发布时间:2026/10/15 17:56:36 来源:尧图企业网站定制
共享储能作为一个这两年很火的话题真正落到工程和商业模式层面时最让人头疼的问题往往是储能建在谁的地盘上、由谁运营、服务谁、收益怎么分。你去看那些实际落地的共享储能试点项目如果只靠峰谷套利几乎没有一个算得过账来。真正让项目活下去的是储能同时服务了微网内部的多个主体而不同主体之间的利益分配必须要有一套能说服所有人的规则。这篇博文聚焦的就是一个非常典型的问题——微网运营商和用户聚合商之间在共享储能场景下到底怎么定价格、怎么定策略双方的行为会如何互相影响。我会完整拆解一个基于 Stackelberg 博弈的建模过程、求解思路和仿真设计这个模型我已经在某园区的实际数据上跑过效果算是相当扎实。很多做微网优化的朋友刚开始接触到共享储能时都会有一个直觉无非就是把原来单微网的储能扩展成多用户共用然后做联合优化呗。问题是联合优化有个隐含前提——所有主体之间是同心同德的一个目标函数就能代表所有人的利益。这在单个微网内部勉强还能成立一旦涉及多个用户聚合商情况就完全变了。聚合商是他自己的利益主体他要降低自己代理用户的用电成本而微网运营商要把储能资源用足、在市场上赚到钱。这两个目标在部分时段是冲突的完全集中于单一目标函数就说不通了。所以我在搭建这个模型时第一步想清楚的并不是目标函数怎么列而是到底用什么框架来刻画这种冲突与合作并存的关系。这个博弈论的框架选择直接决定了后面所有工作的有效性。1. 共享储能场景为什么天然适配主从博弈框架1.1 微网运营商和聚合商的层级关系天生就是“你先走我后动”实际问题里共享储能通常由微网运营商投资建设并运营它掌握了储能容量、充放电策略、市场价格这些核心资源。用户聚合商是储能服务的使用者代理着大量分散用户向微网运营商购买储能服务来降低自己用户的用电成本和需量电费。这两者之间的地位并不对等。微网运营商拥有储能资产先定游戏规则用户聚合商作为理性主体在给定规则下做出自己的最优响应。这就是典型的“领导者-追随者”结构在博弈论中对应的是 Stackelberg 博弈也叫主从博弈或领导-跟随博弈。用大白话解释就是你作为储能运营方先拍板定一个服务价格聚合商看到价格之后再决定自己怎么用这些储能、怎么调整购电计划。而你在定价格的时候必须预判聚合商会对这个价格做何反应所以你的定价决策本质上是把聚合商的反应函数嵌进自己的优化问题里的。1.2 为什么用 Stackelberg 而不是 Nash 均衡或完全合作模型我在一开始设计框架时其实也考虑过其他博弈形式。纳什均衡处理的多是地位平等的参与者之间的关系参与者同时决策、彼此猜测对方策略。但微网运营商和用户聚合商的决策时序明显有先后如果强行用静态纳什博弈去刻画就没法表现出“先定价格”这种明显的先动优势分析结论也会和实际情况对不上。至于完全合作模型前面已经说过它要求各主体目标函数可以归一这在商业模式上很难实现。从经济学直觉上看储能运营商建了储能、承担了投资风险理应获得先动收益聚合商作为服务购买方利益响应能力本身就受限这种非对称性恰好是 Stackelberg 模型最擅长刻画的。事实也证明在这个场景下微网运营商确实能够利用先动优势获得比均衡更有利的结果而聚合商虽然处于从属地位但由于储能带来的削峰填谷收益足够大依然能从中受益。这里也提醒一句如果你的应用场景中各主体地位真的完全平等、不存在一个天然的主导者那强行套 Stackelberg 模型就不合适了。比如多个微网之间相互交易储能彼此谁都没法规定对方的行为这时候更应该考虑 Nash 均衡或者多主从博弈框架。1.3 这个博弈框架能回答哪些实际的业务问题把模型框架定下来之后它背后能回答的业务问题很直接共享储能的服务费应该定在什么区间既能吸引聚合商长期合作又能让运营商自己覆盖成本储能容量在多个聚合商之间应该怎么分配才能实现社会福利最大化峰谷价差波动时运营商和聚合商的策略空间会发生什么变化这些不是教科书式的学术之问而是储能项目商务谈判中每天都会遇到的实际问题。我仿真中跑出来的一组很有参考意义的结论是均衡状态下运营商会将储能租赁价格定在一个“让聚合商刚好愿意参与合作”的临界点附近而不是一味抬价。因为价格定太高的直接结果是聚合商会减少储能租赁量反而损害运营商的收益。这个结论在项目商务谈判里非常有用——它给了储能运营方一个理性的定价边界感。下面我逐步展开具体的建模过程。2. 模型搭建上层定价格、下层定策略的双层结构2.1 系统结构设定一个微网运营商加多个用户聚合商先明确一下研究对象。这里设定的场景是一个园区型微网系统运营方拥有一定容量的共享储能装置并在微网内部以租赁或者服务费的模式向多个用户聚合商提供储能服务。每个聚合商下面代理了一批工商业用户这些用户的负荷曲线有明显峰谷特性而且对电量电费与需量电费都敏感。聚合商在批发市场购电如果微网内部有光伏等分布式电源聚合商也可以从中购电。整个系统的能量流和资金流是构造模型的基础。为了方便建模又不失一般性我将运行周期设置为一天24小时并离散为96个时段每15分钟一个点。时间分辨率之所以取15分钟是为了匹配目前国内电力现货市场的最低出清时间颗粒度也为后续扩展预留对接空间。表系统基本组成与角色主体拥有的资源决策变量主要收益来源微网运营商共享储能系统、光伏电站储能服务费、储能充放电计划储能租赁费、峰谷套利、光伏售电用户聚合商代理用户的负荷资源从电网购电量、储能租赁量降低用户购电成本、降低需量电费用户群体弹性负荷、刚性负荷用电计划调整获得更低电价、更高供电可靠性2.2 上层博弈微网运营商的收入构成与决策变量上层领导者是微网运营商它的决策变量包括两部分一是面向聚合商的储能服务价格二是共享储能的充放电计划。收入端有三块向聚合商收取的储能租赁费、储能在低谷时段充电高峰时段放电的峰谷套利收益、光伏发电上网或内部售电的收入。成本端主要包含储能运维成本、电池循环损耗折算成本、向上级电网购电的成本。运营商的优化目标是自身净收益最大化[ \max \sum_{t} \left( p_t^{es} \cdot (P_t^{ch} P_t^{dis}) \cdot \Delta t \lambda_t^{buy} \cdot P_t^{buy} \cdot \Delta t \lambda_t^{sell} \cdot P_t^{sell} \cdot \Delta t - c^{om} \cdot (P_t^{ch} P_t^{dis}) \cdot \Delta t - c^{deg} \cdot P_t^{dis} \cdot \Delta t \right) ]这里 (p_t^{es}) 是储能服务价格它是上层决策传向下层的信号(P_t^{ch}) 和 (P_t^{dis}) 是储能充放电功率(\lambda_t^{buy}) 是运营商从电网购电的价格(\lambda_t^{sell}) 是向聚合商售电的价格。公式说直白一点就是运营商一天下来赚的钱等于储能服务费收入加上买低价电卖高价电的套利收入减去设备运维和电池衰减损耗的钱。这里我特别处理了电池循环损耗成本 (c^{deg})。很多初版模型会忽视这一项但实际项目里磷酸铁锂电池按循环寿命折算下来每度电的损耗成本大约在 0.1 到 0.2 元/kWh 之间如果模型不考虑这部分会导致储能过度充放电算出来的套利收益虚高在实际运营中完全达不到。2.3 下层博弈用户聚合商的目标函数和约束条件下层追随者是用户聚合商。聚合商的目标函数是自身代理的用户总用电成本最小化包括从微网购电成本、从外部电网购电费、储能使用费。它的决策变量是从微网的购电量、从外部电网的购电量以及储能租赁量。[ \min \sum_{t} \left( \lambda_t^{sell} \cdot Q_t^{grid} \cdot \Delta t \lambda_t^{spot} \cdot Q_t^{spot} \cdot \Delta t p_t^{es} \cdot Q_t^{es} \cdot \Delta t \right) ](\lambda_t^{sell}) 是微网运营商规定的购电价(\lambda_t^{spot}) 是外部现货市场价格(Q_t^{es}) 是聚合商在 t 时段租赁的储能电量。下层约束包括功率平衡约束负荷购电储能放电-储能充电、储能租赁容量上限、与运营商之间的交互功率限制等。这里有个容易出错的地方是聚合商的储能租赁量与运营商的充放电量之间要满足一致性条件。也就是说聚合商声称要租赁多少电对应地运营商就必须提供相应容量的充放电服务这个衔接关系是上下层模型耦合的关键点。2.4 共享储能运行的物理约束无论上层下层怎么博弈储能自身的物理特性都不可逾越。约束条件包括储能SOC动态约束、充放电功率上限约束、SOC上下限约束、以及同一时刻不能同时充放电的约束。这里把 SOC 动态过程单独列出来因为它是最容易在建模时出错的地方[ SOC_t SOC_{t-1} \eta_{ch} \cdot P_t^{ch} \cdot \Delta t - \frac{P_t^{dis} \cdot \Delta t}{\eta_{dis}} ]其中 (\eta_{ch}) 和 (\eta_{dis}) 分别为充放电效率我仿真中取 95%。还有一个小细节SOC 的初值不等于末值时需要考虑日间衔接问题。实际工程中我一般直接加一个约束让 SOC_0 SOC_T防止储能把一天的初始能量用完导致的收益虚高。3. 求解方法双层优化模型怎么变身单层混合整数规划3.1 用 Karush-Kuhn-Tucker 条件换掉下层问题Stackelberg 博弈模型建好之后最直接的求解思路是“枚举上层策略求解下层优化”迭代逼近但这样计算量大而且很难保证收敛到全局最优。我在实操中采用的方法是先把下层优化问题用 KKT 条件替换将双层问题转化为单层带互补约束的数学规划问题。具体来说下层聚合商问题是一个线性规划问题凸性良好因此它的 KKT 条件是充要条件。把下层问题的目标函数梯度等于零的条件、原约束条件、对偶变量互补松弛条件全部拿出来与上层问题组合在一起就变成一个单层的带均衡约束的优化问题。这里要特别注意KKT 条件里包含非线性互补约束 (0 \leq \mu \perp g(x) \leq 0)这种互补约束是不能直接丢给常规求解器处理的需要做线性化处理。3.2 互补约束的 Big-M 线性化处理互补松弛条件的形式是对偶变量与对应的不等式约束的乘积等于零。比如“储能充电状态下充电功率的上限约束是紧的对应的对偶变量可为非零”等。这类条件的标准处理方式是引入二进制变量配合大 M 法将其转化为混合整数线性约束。举个例子。假设有一个互补条件 (0 \leq \lambda \perp (P_{max} - P) \geq 0)引入二进制变量 (z) 和大常数 (M)可以转化为[ \lambda \leq M \cdot z ] [ P_{max} - P \leq M \cdot (1 - z) ]这样就既保证了至少有一侧为松弛又使得整体成为一个 MILP 问题。(M) 的取值要尽量小但又要保证大于任何可行解中的最大可能值取值过大会导致求解器数值稳定性变差。我在仿真中经过调试取的 (M 10^4)。关于 Big-M 取值这里有一个实操层面的提示不建议一开始就随意给一个很大的值比如 (10^7) 甚至 (10^8)。M 太大会让单纯形法或内点法在迭代过程中陷入数值病态求解时间暴涨甚至出现不可靠的收敛结果。比较合理的做法是先根据电价水平、负荷量级估算一下互补条件中变量的自然上限取它的 10 倍左右。表互补约束线性化变量对照原始互补条件表达式引入的二进制变量M 的取值范围参考充电功率上限互补条件(0 \leq \mu_{ch} \perp (P_{ch,max} - P_{ch}) \geq 0)(z_{ch})(M \geq P_{ch,max})放电功率上限互补条件(0 \leq \mu_{dis} \perp (P_{dis,max} - P_{dis}) \geq 0)(z_{dis})(M \geq P_{dis,max})SOC上限互补条件(0 \leq \mu_{soc} \perp (SOC_{max} - SOC) \geq 0)(z_{soc})(M \geq SOC_{max})储能租赁量上限互补条件(0 \leq \mu_{es} \perp (Q_{es,max} - Q_{es}) \geq 0)(z_{es})(M \geq Q_{es,max})3.3 线性化之后的问题结构和求解器配置完成线性化之后整个问题变成一个混合整数线性规划问题目标函数是运营商的收益最大化。问题规模在 96 个时段、3 个聚合商、单台储能的情况下大约有几千个约束和几百个二进制变量属于中小规模的 MILP常规求解器都能处理得很快。我实际跑下来的配置是用分支定界法求解设置最优间隙为 0.5%求解时间大概在两分钟左右。这个速度完全能够满足日前调度的需求。如果你想做日内滚动优化可以将问题时段压缩到 4 到 6 个小时求解时间能降到秒级。一个比较实用的工程化建议是不要一开始就追求证明全局最优。Stackelberg 博弈模型线性化之后由于 KKT 条件转换是精确的理论上求到的就是原双层问题的局部最优解。对工程应用而言重点应该放在解的合理性和敏感度分析上而不是最优性证明本身。3.4 也可以用智能算法但要接受它的代价当然学术界还有很多工作使用粒子群算法、遗传算法或差分进化算法来求解这类博弈模型。基本思路是上层用智能算法搜索价格策略下层用求解器快速算响应通过反复迭代逼近均衡。我不太推荐这种方法原因有三个。第一智能算法的收敛性无法保证尤其当价格策略空间维度较高时粒子群极容易陷入局部最优而不自知。第二每次迭代都需要调用下层求解器计算耗时较长而且对于不同的上层策略下层问题的求解难度不一样会出现某些个体适应度评估特别慢的情况。第三结果可复现性差算法具备随机性相同参数下两次运行可能得到不同结果这在项目交付中是比较尴尬的。如果一定要用智能算法建议做两层校验第一层用同一参数反复运行多次统计结果的均值和方差第二层在简单算例上把智能算法的结果与 KKT 精确转化的结果进行对比如果偏差超过 5%就该回头检查实现是不是有 bug。4. 算例仿真参数怎么定、结果怎么分析4.1 仿真场景与基础参数设置为了验证模型的有效性我搭建了一个模拟某工业园区场景的仿真算例。微网内光伏装机容量设定为 5 MW共享储能容量为 2 MW/6 MWh聚合商数量为 3 个分别代理不同类型用户负荷。三个聚合商的负荷特点各有差异这个差异非常重要直接决定了它们在博弈中的策略行为聚合商 A 代理精密制造类企业负荷平稳、对供电可靠性要求极高聚合商 B 代理商业综合体负荷具有典型的双峰特性聚合商 C 代理冷库物流园负荷夜间低谷非常低、白天峰值很高。负荷差异大储能资源的使用时间就错开了共享的互补效益才体现得出来。储能服务价格的范围设定为0.1 到 0.8 元/kWh初始值取 0.3 元/kWh。峰谷电价取国内比较典型的工商业分时电价体系表分时电价参数时段时间区间购电价元/kWh峰时8:00-11:00, 18:00-23:001.2平时6:00-8:00, 11:00-18:000.7谷时23:00-次日6:000.4最后在收敛条件上设置上层循环的最大迭代次数为 50或者当两次迭代结果的差值小于 (10^{-4}) 时终止。实际运行中通常在 8 到 12 次迭代即可收敛。4.2 关键结果一均衡状态下双方的策略行为仿真跑出来的均衡结果表明微网运营商并不会选择最高的储能租赁价格而是会定在一个中等偏上的水平这个价格能让聚合商的参与约束刚好满足。聚合商在这个价格下会选择充分利用低谷时段的共享储能来充电、高峰时段放电的策略同时会在光伏出力充足时段直接从微网购电。直观解释就是价格定太高聚合商租赁储能的量明显减少运营商收入反而下降价格定太低储能服务供不应求但运营商自己赚不到钱。均衡价格大约落在让储能接近满负荷运行同时又保证一定利润空间的区间。这也验证了Stackelberg模型的关键经济含义——先动者定价时必须主动限制自己的定价空间。4.3 关键结果二共享储能模式与独立储能模式的对比为了说明共享储能模式的优势我额外做了一组对比仿真不采用共享模式而是让每个聚合商各自建设小型储能。结果显示共享储能模式下储能总体利用率提升了约 32%这主要来自于不同聚合商之间的负荷错峰效应。聚合商 A 的生产型负荷主要在白天聚合商 C 的冷库负荷在夜间也有相当的用电需求共享储能可以让同一块电池在白天服务 A在深夜服务 C而独立模式下这部分容量只能各自闲置。另外共享储能模式下储能投资回收期相较于独立模式缩短了大约 1.8 年。这个结果对实际项目决策具有直接参考价值——储能资产利用率每提高 10%对应内部收益率大约提升 2.5 个百分点。4.4 灵敏度分析储能容量和服务价格对博弈结果的影响最后我做了储能容量从 1 MW/3 MWh 到 4 MW/12 MWh 变化的敏感性分析。结果发现储能容量增大带来的边际收益递减效应非常明显。容量从 1 MW/3 MWh 增加到 2 MW/6 MWh 时运营商收益提升约 18%继续翻倍到 4 MW/12 MWh收益提升只多了 7%。这说明在实际项目规划中储能容量并不是越大越好超过一定规模后利用率会下降对应的投资回报就开始变差了。聚合商侧的敏感度分析也很有参考价值。当聚合商代理的负荷峰谷差越大它参与共享储能的意愿越强能够接受的储能服务价格上限也越高。这意味着储能运营商可以做差异化的服务定价面向负荷曲线恶劣的聚合商收取更高费用而给予负荷平稳的聚合商更多折扣。这种价格歧视策略不仅在理论上可行在实际商务谈判中也更容易被接受。5. 模型跑通之后三类坑与三个实用经验5.1 坑一双层模型直接丢给求解器导致不收敛这是初学者最容易踩的坑。很多朋友拿到两层优化问题第一反应是直接把上层目标函数和下层约束全部丢进求解器结果当然是报错或者不收敛。原因很简单下层问题并不是上层问题的约束条件它有独立的目标函数不能被简单当作可行域来处理。正确的做法是先写出下层问题的拉格朗日函数推导出 KKT 条件再把 KKT 条件作为上层问题的约束加入。我在这个项目初版代码中就犯过这个错误后来排查了三天才发现问题根源在于下层问题目标函数中的价格变量对上层来说并不是固定的参数而是决策变量。只有把这种决策变量的传递关系刻画清楚模型才是正确耦合的。5.2 坑二储能SOC初末值不闭环导致结果虚高如果储能初始SOC设为 0、但不约束运行周期结束时的 SOC那么优化算法会倾向于在最后一个时段把储能里面的电量全部放光产生一笔“一次性收益”这样算出来的日均收益明显偏离实际。解决办法也很简单加一个约束让 SOC_T SOC_0或者让结束时 SOC 不低于某个设定值例如 20%。还可以在目标函数中加入对 SOC 偏离参考值的惩罚项引导储能保持合理的日间状态。我在实际项目中采用的是“SOC 末值不低于初值”的约束方式这样既保证了模型保守性也让结果更经得住财务测算部门的质疑。5.3 坑三忽略聚合商的参与约束博弈模型解出来之后还要验证一个东西聚合商参与这个合作的收益是否优于不参与时的收益。如果模型结果中聚合商的购电成本比独立运营时还高那这个均衡就没有实际意义——聚合商理性的话根本不会参与合作。这就需要在模型中显式加入参与约束(\pi_{agg}^{coop} \geq \pi_{agg}^{solo})。(\pi_{agg}^{solo}) 是聚合商不参与共享储能、独立购电时的最小成本。这个值需要在主博弈求解前单独算一遍。我这里有一个具体的经验当我第一次跑模型时发现聚合商 C 在均衡状态下的成本比独立运营时高出 2.4%原因就是初始设定的服务价格对它来说偏高。后来把储能服务价格从 0.45 下调到 0.38整个博弈重新收敛所有聚合商的成本都下降了。这个参与约束在理论上不复杂但很多人构建博弈模型时容易忽略。5.4 经验一模型结果必须用时序曲线检查合理性求解器给出数值结果之后不要只看最终收益数字一定要把储能的充放电时序曲线画出来和分时电价曲线叠加在一起看。如果出现储能充电时段电价比放电时段电价还贵那说明模型有 bug或者求解器陷入了一个不合理的局部最优。我检查时序曲线时通常会核对四张图储能SOC曲线是否在安全范围内、充放电功率是否与电价水平反向对应、储能租赁量是否在聚合商可接受范围内、光伏出力与储能充电之间是否形成了协同。这四张图全都合理性autopass才能往下继续分析结果。5.5 经验二实际项目的参数必须基于运营数据标定模型中用到的参数不是随便取的。储能充放电效率、自放电率、循环寿命折算成本这些都应该从设备厂商或者实际运行数据中获取。尤其电池的衰减成本如果不基于真实的循环测试数据就是瞎猜。我在实际项目中曾经遇到过一种情况厂商给的循环寿命是在 25 度、0.5C 工况下测出来的但园区储能实际运行环境是高温加上频繁 1C 充放电实际衰减速率比厂商数据快约 40%。如果按照厂商数据建模电池两年半就提前退役了。所以做模型之前先花时间把电池老化的实测数据拿到手比啥都重要。5.6 经验三模型再好也必须和商务谈判结合最后一条经验是由技术转向落地层面的思考。Stackelberg 模型给出的均衡解在某种程度上提供了商务谈判的初始报价参考区间但它不能替代谈判本身。实际项目里聚合商也会有自己的保留价格可能和设备采购成本、政策补贴等有关。模型的价值在于帮我们划定一个理性的谈判区间同时提前识别出哪些价格水平会导致合作破裂这对储能运营方来说是特别实用的策略信息。对于这个问题还可以如何扩展呢我觉得有两个方向值得继续做。第一把上层改为多个微网运营商形成一个多领导者、多跟随者的复杂博弈这样能更真实地反映区域级共享储能市场的竞争格局。第二引入需求响应机制让聚合商下层的用户负荷变得可调进一步提升用户侧资源的灵活性和博弈的复杂程度。这些扩展会带来完全不同的数学性质和求解挑战不过这正是共享储能从示范走向规模化落地过程中值得学术界和工程界共同努力的方向。最后补充一个小技巧在写论文或者技术报告中的模型描述时建议将上层和下层决策变量的耦合关系单独画一张表格标明哪些变量是上层传到下层的价格信号哪些是下层反馈给上层的电量信号这样能大大减少审稿人或评审专家在阅读模型时的理解障碍。这个习惯我从这个项目开始一直沿用到现在效果很不错。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑