主从博弈下的共享储能与综合能源微网优化运行详解
发布时间:2026/9/16 1:33:20 作者:尧图编辑部 阅读量:1,286

先说一个我最近反复在想的事同样是做综合能源微网优化很多人一上来就把“整个园区”当成一个对象来建模把储能、微燃机、可调负荷一股脑塞进同一个目标函数里看起来效率很高、成本也低但真到落地的时候问题全冒出来了——储能由谁投资电价按什么定各微网凭什么听调度中心的这些不是技术参数问题是利益主体之间的规则问题。这也是我后来转向“基于主从博弈理论的共享储能与综合能源微网优化运行研究”这条线的根本原因。简单说就是在一个园区里共享储能运营商先报出充放电价格综合能源微网再根据价格调整自己的购电、发电和用能策略。这个“运营商先动、微网后动”的结构天然适合用主从博弈Stackelberg博弈来描述。这篇文章我会把整个研究链条展开讲一遍为什么单层优化算不对、主从模型的数学骨架怎么搭、KKT条件怎么变成可求解的混合整数线性规划以及算例复现时容易踩的坑。适合正在做电力系统优化、微网调度、储能商业模式研究的同学参考也适合想搞清楚共享储能到底怎么“算账”的园区运营人员。1. 共享储能为什么非要“博弈”不可1.1 集中式优化的假设在共享储能面前站不住脚传统微网优化运行有一个隐含前提系统内所有设备属于同一个决策主体或者存在一个权威调度中心能直接命令每一台设备怎么出力。这个前提在单个微网内部是成立的因为风机、光伏、储能、负荷都在同一张损益表里优化目标就是总运行成本最小或总收益最大。但共享储能一出现这个前提就碎了。共享储能的典型商业模式是“第三方投资、第三方运营、多用户共享”运营商和微网之间没有隶属关系。储能运营商想提高充电价、降低放电价来赚取更大的价差收益微网则希望电价越低越好最好还能在高峰时段把多余的电高价卖回给储能。两边目标直接冲突没有一个全局目标函数能同时代表双方的利益。如果你硬要把两边捏成一个单层优化模型结果必然是储能容量被调度到某个折中状态但这个状态既不是运营商利润最大的策略也不是微网成本最小的响应。更麻烦的是算出来的“最优调度方案”在实际执行时根本推不下去——微网没有动力按照你给的充放电功率去执行因为那不是它自己选择的最优策略。1.2 主从结构恰好匹配共享储能的商业时序主从博弈模型的核心是“决策有先后”领导者先行动、公布策略跟随者观察到领导者的策略后再做自己的最优决策。这个时序和共享储能的真实商业过程几乎一模一样。共享储能运营商首先要确定分时电价、服务费标准然后微网看到电价后才决定我是多用电网的电还是多用储能放的电还是自己多开一点微燃机反过来储能运营商也知道微网一定会按照自身成本最小化来响应所以在定价时就会预判这种响应定出一个“让微网愿意交易、自己又能多赚”的电价。这就是Stackelberg均衡的直观含义运营商的电价是在考虑了微网最优化行为之后的最优价格微网的响应是在给定电价下的最优响应。谁都没有动机单方面改变策略。1.3 和“讨价还价”类博弈模型的区别有人会问既然是多主体博弈为什么不用Nash博弈或者交替迭代的均衡模型这里有一个关键区别Nash博弈中各方同时决策、地位对等而在共享储能的实际运营中运营商天然拥有“定价权”微网只能被动接受价格然后调整电量不存在微网反过来给储能运营商定价的通道。这个不对等关系决定了模型必须用主从结构而不是一般均衡结构。换句话说主从博弈的政治哲学是“领导者定规则跟随者在规则内做最优选择”。共享储能商业模式立法至今没有形成类似电网输配电价的强监管所以运营商和微网之间的互动本质上就是这样一个先定价、后响应的市场用主从博弈来描述最贴切。2. 主从结构的数学骨架领导者的电价策略与微网的成本响应2.1 上层共享储能运营商的收益最大化模型上层问题的核心是储能运营商它的决策变量是所有时段的充放电价或购售电价以及储能本身的充放电功率。目标函数是最大化一整天内的净收益上层目标 向微网出售电能的收入 向微网购电的支付成本如果微网向储能反售 - 储能运维成本 - 储能折旧/损耗成本。注意这里有个容易被忽略的细节在共享储能场景里“电价”不是简单的一个值而是分成充电价和放电价两条曲线甚至还有时段划分峰平谷。运营商的利润主要来自充放电价差比如低谷时段以较低价格购入电能存入储能高峰时段以较高价格放出。这个价差的设定直接决定了微网是否有动力在高峰时段多用储能、低谷时段多充给储能。储能本身的运行约束是上层模型的内部约束SOC荷电状态递推方程、充放电功率上下限、SOC上下限、以及一个调度周期始末SOC相等的约束。最后这条尤其重要它是保证储能可持续运行的关键很多初版模型漏掉它算出来储能一整天都在放电最后容量被放空显然不合理。2.2 下层多微网的独立运行成本最小化下层是各综合能源微网它们接收到运营商给出的电价序列后独立求解自己的经济调度问题。每个微网的目标函数是最小化自身运行成本下层目标 从储能购电成本 - 向储能售电的收入 向配网购电成本 - 向配网售电的收入 微燃机燃料成本 需求响应/弃负荷惩罚 设备运维成本。微网内部一般包含光伏、风机、微燃机、储能也可能没有自有储能、电负荷、热负荷如果做热电联供。约束包括电功率平衡、热功率平衡、微燃机出力的上下限及爬坡约束、可中断负荷的上下限、与外电网交换功率的限值以及自有储能如果有的运行约束。这里再强调一个关键点下层模型每个微网之间是独立的它们互不通信、各自优化。但正因为都面对同一个共享储能运营商上层可以用一个电价信号来“调度”它们。这就是共享储能的一个核心魅力——运营商并不需要直接控制微网内的每一台设备只需调整价格信号就能引导所有微网改变用能行为。2.3 上下层之间的耦合变量与均衡状态上下层之间通过“价格-电量”这对耦合变量建立联系。上层给定电价序列π_t下层求解出的购电/售电功率P_t^microgrid是电价的函数下层把这些功率反馈给上层后上层再计算收益并优化电价如此循环。Stackelberg均衡的数学定义是给定上层最优电价π_star下层在所有可行的运行策略中选择使自身成本最小的策略X_star(π_star)同时上层在下层响应策略已知的情况下选择π_star使得自身收益最大。换句话说上下层的策略组合构成了一条互锁的最优响应链。达到均衡时任何一方单方面改变策略都会让自己受损因此该策略组合是稳定的。3. 共享储能与微网联合优化模型是怎么搭起来的3.1 建模假设与场景设置模型不可能也无必要还原真实世界的所有细节我在搭建模型时一般做如下假设研究周期取一个典型日按1小时分辨率离散化为24个时段。如果做季节性分析可以选春夏秋冬四个典型日分别求解。微网与配网的电价是固定的外生参数共享储能运营商只能决定储能参与交易的电价不能影响上网/购电的目录电价。光伏、风机出力曲线和负荷曲线取给定预测值暂不考虑预测误差不确定性分析是后续延伸方向后面再讲。各微网的负荷可分为刚性负荷和可中断负荷可中断负荷在支付补偿成本后可以削减。储能寿命损耗简化为运行维护成本系数不引入电池健康状态SOH的详细退化模型避免模型非线性程度失控。3.2 微型场景的参数设定参考我自己做算例时常用的一个基础场景设置如下供复现参考参数取值微网数量3个共享储能容量1 MW / 2 MWh储能SOC范围0.1 ~ 0.9充放电效率0.95 / 0.95微燃机单机容量0.5 MW / 台微燃机爬坡率0.1 MW / 15 min光伏装机各微网0.3~0.8 MW不等可中断负荷比例不超过总负荷的10%分时电价时段峰10:00-12:00、14:00-19:00平8:00-10:00、12:00-14:00、19:00-22:00谷其余时段这样的参数规模求解速度非常快便于先跑通逻辑再逐步加大复杂度。3.3 完整约束列表别漏掉那些“小约束”在构建模型时我整理了一个约束清单基本覆盖了所有必要项功率平衡约束每个微网每个时段光伏出力微燃机出力从储能购电功率从配网购电功率 电负荷 向储能售电功率 向配网售电功率 可中断负荷削减量。这个等式是整个模型的基石任何设备出力都是通过它耦合在一起的。储能SOC递推约束SOC(t) SOC(t-1) 充电功率×充电效率 - 放电功率/放电效率同时SOC_t要落在上下限之间周期末SOC要回到初值。微燃机约束出力范围、爬坡约束、启停逻辑如果做机组组合则需引入0/1变量。联络线约束与配网的交换功率不能超过变压器容量。可中断负荷约束削减量占比不能超限且削减会带来较高惩罚成本。第3.2节表格中的参数如果觉得不够具体可以按自己研究对象调整但不建议在初版模型里加入过多细节约束比如电压无功、网络潮流等。先跑通主从博弈的价格-电量交互再逐步增加物理约束排错容易得多。4. 从均衡条件到可求解程序KKT处理与线性化细节4.1 为什么要放弃“直接迭代求解”这条简单路最直观的求解思路是上层先给一组初始电价下层求解各自的优化问题把购售电功率反馈给上层上层再用某种算法如粒子群、遗传算法更新电价如此迭代直到收敛。这个方法实现简单但我在实际测试中发现两个致命问题一是收敛性没有保证。上层价格更新步长稍大电价就会在最优值附近来回震荡甚至发散步长太小计算量又变得不可接受。二是即便迭代收敛得到的往往只是“近似均衡”不满足严格的KKT均衡条件写论文时审稿人一问“你的收敛判据理论依据是什么”很难给出令人信服的答案。所以主从博弈优化运行的正规解法是将下层问题用KKT条件替换把双层优化转化为单层带均衡约束的数学规划MPEC再线性化后交给商业求解器求解。4.2 下层问题的KKT条件替换方法下层是一个凸优化问题目标函数线性、约束线性所有不等式约束的KKT条件都是必要且充分的。把下层的每个约束都写成KKT形式即在原约束基础上增加拉格朗日乘子、对偶可行性条件、互补松弛条件对于每个下层约束 g(x) ≤ 0需要引入乘子 λ ≥ 0并满足可行性g(x) ≤ 0对偶可行性λ ≥ 0互补松弛λ × (b - Ax) 0这里用文字形式表达具体展开看原约束形式同时下层目标函数的梯度条件要求目标函数对决策变量的梯度等于各约束梯度的线性组合乘子加权。这些条件联合起来完全等价于下层优化问题的最优解。4.3 双线性项与强对偶定理的线性化处理这里有一个非常隐蔽的坑。上层目标函数中会出现“电价×电量”的乘积项例如售电收入 π_t × P_t^shop其中π_t是上层决策变量P_t^shop是下层决策变量。这两个变量相乘整个问题就变成了非线性的双线性规划求解难度剧增。标准的处理手段是利用强对偶定理在下层是凸问题的前提下下层目标函数的最优值等于其对偶问题的最优值。因此可以把上层目标函数中的P_t^shop替换成下层决策变量的某种对偶表达式消去双线性项。更实用的一种做法是直接利用KKT互补松弛条件把某些乘积项做等价替换。举一个我在代码里常用的技巧若下层某约束在最优时可能取等号也可能取松弛那么“乘子×松弛量”在互补松弛条件下等于零。把这个性质代入上层目标函数双线性项就会变成只含乘子或只含常数的线性项。具体替换关系因模型而异但思路是统一的利用互补松弛消去乘积。4.4 互补松弛条件的MILP化大M法与Fortuny-Amat变换KKT条件中的互补松弛条件“λ × s 0”依然是非线性项需要进一步线性化。常见做法是引入0/1辅助变量和大M常数对于 λ ≥ 0, s ≥ 0, λ×s 0等价于存在0/1变量 z使得λ ≤ M × zs ≤ M × (1 - z)其中M是一个足够大的正数。这里M的选取要小心M太小会错误截断可行域M太大会导致求解器数值病态。我的经验是根据模型中功率和价格的量纲估一个上限然后至少放大10倍但不要超过原量级两个数量级。4.5 完整求解流程从原问题到MILP整理一下完整转换链条写下上层问题含目标函数和约束。写下每个下层问题凸问题。将每个下层问题替换为KKT条件包含梯度条件、原始可行性、对偶可行性、互补松弛。用强对偶或互补松弛替换上层目标中的双线性项。用大M法将互补松弛条件线性化为混合整数约束。将所有部分汇总成一个单层混合整数线性规划MILP交给求解器求解。在MATLAB中我用YALMIP配合CPLEX/GUROBI求解Python生态则用Pyomo或直接调用Gurobi的Python接口。算例规模不大时3个微网1个储能24时段CPLEX求解时间通常在几秒到几十秒之间完全在可接受范围内。5. 算例复盘参数设置、曲线解读与结果里的门道5.1 为什么一定要做“对比模式”而不是只算一个主从博弈结果做这类研究单看主从博弈模式下的总成本和储能收益说服力是不够的。审稿人和读者真正关心的是共享储能加主从博弈到底比什么方案好、好在哪。所以我在算例里固定做三组对比模式A各微网独立配置储能各自独立优化无共享无主从。模式B共享储能存在但采用集中式联合优化即假设各方利益一致。模式C共享储能存在采用主从博弈优化运营商先定价、微网后响应。三组模式在相同的负荷、新能源、外网电价条件下分别求解然后对比总运行成本、储能利用率、可再生能源消纳率、各主体收益分配等指标。5.2 一组典型结果的长什么样这里给出一个我复现过的代表性结果表具体数值会因为参数不同而变但趋势基本一致指标模式A独立储能模式B集中共享模式C主从博弈共享微网总运行成本相对A100%86%89%储能年利用小时数基准较低提升约40%提升约35%可再生能源消纳率88%97%95%储能运营商是否盈利不适用不适用正收益微网之间利益分配公平性各自独立难以分配按价格信号分配从结果可以看出模式C的总成本略高于理想化的集中式共享模式B但优势在于模式C不需要一个“无私的中央调度者”运营商有真实的盈利动机微网也有自主选择空间。这个结论很重要——它说明主从博弈提供的是一个可以落地的均衡解而不是乌托邦式的最优解。5.3 曲线解读电价、SOC与微网购电行为的联动结果不能只看表格还要看曲线之间的联动关系。我整理一下比较典型的曲线特征低谷时段如23:00-次日6:00储能运营商报出较低的充电价甚至略低于外网购电价微网自然不会错过这个便宜电纷纷增加购电功率。此时储能SOC逐渐上升接近上限。高峰时段如10:00-12:00运营商报出较高的放电价微网发现用储能比向电网买电更划算于是减少从电网购电改用储能放电。储能SOC下降微网用电高峰期反而对电网的依赖变小。微燃机的出力曲线会随储能电价变化出现“平移”。储能放电价高的时候微燃机维持低出力储能放电价低的时候微燃机甚至会停机。如果算出来的电价曲线和外网购电价曲线完全重叠说明博弈结构没有起效如果SOC曲线一天之内剧烈波动来回充放十几次大概率是模型里漏了充放电次数约束或启停约束。5.4 我在复现中踩过的几个实际坑这个部分是我最想分享的因为每一步我自己都经历过。坑一大M常数设得太小导致可行域被错误压缩。我早期做MILP化互补松弛条件时M设成100结果求解器报告“不可行”。排查了一整天才发现功率和价格乘积的量级已经超过1000M设成100相当于把原本可行的互补松弛条件截断了。后来统一把M定义为“最大可能值×10”问题解决。坑二初始SOC和周期末SOC的约束冲突。如果要求SOC周期末回到初值同时SOC上限设置过紧储能的有效调节范围被压缩得非常小上层运营商算出来的收益会低得离谱。建议先把SOC范围放宽到0.1~0.9再把始末相同的约束加上去看看储能曲线是否平滑。坑三下层问题有多台机组时必须先做KKT推导再写代码。很多初学者直接套别人代码里的KKT条件模板但微燃机如果带启动/停机0/1变量下层就不再是纯凸问题KKT条件不再充分直接用大M法会得到错误结果。这种情况我建议要么对下层做机组组合的松弛处理要么先维持下层为线性规划再引入上层整数变量。坑四多个微网如果同时被定价各微网的响应是耦合的。在一个共享储能下挂多个微网时上层定价要同时驱动多个下层不能简单地一个个单独优化。因为储能容量有限一个微网多买一点另一个微网能买到的就少了。这个问题必须通过“把多个微网的下层问题合并为一个整体KKT系统”来解决才能准确反映容量竞争关系。6. 扩展空间从两阶段主从到多主体均衡的进阶方向6.1 多级主从博弈与EPEC问题如果研究对象不止“一个储能运营商多个微网”而是“多个储能运营商多个微网”或者“配网运营商在上层多个储能运营商在中层微网在下层”单个主从博弈就不够用了。此时出现了多领导者多跟随者问题数学上用EPEC带均衡约束的均衡规划描述。EPEC的求解难度比MPEC更高常用对角化方法或者非线性互补方法。如果你的论文需要创新点这是一个不错的方向但对数学和求解器功底的要求也更高。6.2 不确定性环境下的鲁棒主从博弈微网里的光伏、风机出力和负荷都是预测值实际值与预测值之间总有偏差。如果把不确定性引入主从博弈可以构造“储能运营商先定价、微网在不确定参数实现后响应”的动态模型用两阶段鲁棒优化或者分布鲁棒优化来处理不确定集合。这个方向近年非常热而且自带一定的现实说服力因为共享储能的价值恰恰就在于通过容量共享来对冲单个微网的不确定性。6.3 碳交易机制与共享储能的价值再发现双碳目标下微网运行不仅要考虑电费还要考虑碳排放配额和碳交易成本。如果把碳价引入主从博弈的下层目标函数微网会大幅提高对低碳电能比如光伏、储能放电的使用意愿储能运营商也可以通过“绿电存储”服务收取溢价。这个扩展会让模型多一个政策变量但对政策参数的含义和取值要交代清楚。最后再分享一点实践体会。我刚开始接触这个课题时以为主要难点在求解算法上花了很多时间研究各种迭代优化算法后来才真正意识到这类研究的核心价值在于“把现实中的利益博弈关系准确翻译成数学模型”而不是算法本身。模型结构只要偏离了实际多少算出来的结果搬到现实中就一定会被多少。另外建议新手在做算例分析时不要一上来就追求复杂模型先把一个单储能、单微网的主从博弈跑通验证价格-电量交互逻辑正确后再逐步扩展到多微网、多储能和不确定性。每一步都留好对比实验的结果写论文时这些就是最扎实的证据。