ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

综合能源园区多主体非合作博弈建模与均衡求解实践

综合能源园区多主体非合作博弈建模与均衡求解实践 最近在推进综合能源园区相关项目时我遇到一个挺典型的困境园区里的能源运营商、上游售电公司、还有实际用能的用户表面上都在同一个系统里但各自的账本完全算不到一起。运营商想靠内部多能互补把成本降下来售电公司想多卖电、多赚价差用户则希望用能成本越低越好、用能体验还不能打折。这些诉求放到同一个优化模型里就是我常说的“三本账怎么平”的问题。这篇内容围绕“面向综合能源园区的三方市场主体非合作方法探索”展开把我在这类项目里建立模型、跑通算例、处理博弈均衡的实操过程做一次完整复盘适合正在做园区能源规划、综合能源系统运行策略以及电力市场多主体协调问题的人参考。1. 项目背景综合能源园区为什么绕不开三方博弈先说清楚我理解的“综合能源园区”。它不只是简单的冷热电联供而是一个在空间上包含多种能源生产、转换、存储和消费的物理系统常见配置有燃气内燃机、余热溴化锂机组、电锅炉、光伏、储能、冰蓄冷等设备负荷侧则可能是工业厂房、办公楼、数据中心混在一起。这类园区的核心特征是能量流高度耦合燃气可以发电发电余热可以制冷制热电价和热价之间存在互相传导的关系。你改变任意一个价格用户的用电行为变设备出力跟着变最后影响的是整个园区的运行成本。但真正让问题变得难处理的不是设备模型有多复杂而是园区里没有一个“上帝视角”的决策者。1.1 多主体利益诉求的必然冲突从项目落地角度看一个综合能源园区通常至少牵扯三方利益主体。第一方是园区综合能源运营商它投了设备、建了管网负责园区内部的能源供应和多能互补调度它的核心诉求是让投资有回报希望零售价格能覆盖成本同时设备利用率尽可能高。第二方是上游售电公司或者配电网运营商它掌握关口计量、负责向园区批发售电也希望从园区获取更多购电收益或者反过来收购园区光伏余电但价格和电量要有利于自身。第三方是园区用户它有电、热、冷负荷需求可以调整生产时段和生产强度但调整的代价比如舒适度损失、加班成本、工艺调整成本用户自己会精打细算。这三方之间不是简单的上下级关系。用户不是运营商控制下的“负荷”而是会响应用能价格的理性决策者运营商也不是售电公司的“被动客户”它在气价和电价之间有自己的选择空间。这种情况下再用统筹一切的集中式优化去做运行调度往往发现在理论上最优的方案实际执行时没有任何一方愿意配合因为可能某一方的收益被明显牺牲掉了。1.2 集中式优化在真实园区落地时的尴尬集中式优化听起来很完美全网统一建模统一调度目标函数是整个园区的总成本最小或总效益最大。我在早期项目里也确实这么干过把运营商、售电公司、用户合并成一个整体设备模型、负荷响应模型、电网交互功率全部揉进一个混合整数线性规划里求解速度快结果也很“漂亮”。但问题出在落地环节。首先数据取不到。售电公司的批发电价策略、用户的真实效用曲线、运营商的设备检修计划各家都不愿意完整共享集中式优化需要的数据精度根本达不到。其次决策权分散。就算拿到了数据没有哪个主体有权力命令其他主体按照全局最优方案去执行电网侧不会无条件配合你用户也不会因为“全局最优”四个字就改变自己的生产安排。再次利益分配说不清。集中式优化只给了“总蛋糕最大”但没有回答“蛋糕怎么分”这是所有多主体项目绕不开的坎。1.3 非合作博弈怎么切中痛点非合作博弈的思路和集中式优化正好相反它先承认各方都有自己的独立利益然后通过策略互动来求解“跑得通”的均衡方案。在这个框架下每个主体只优化自己的目标函数但这些目标函数通过市场价格、交易电量、供需关系相互耦合。最终求解的目的是找到一组策略使得任何单一主体单独改变策略都无法获得更多利益也就是纳什均衡。均衡情况下各方的策略相互应答、相互兼容虽然未必是全局帕累托最优但它是各方在实际决策规则下愿意执行的结果。这正是综合能源园区运行问题需要的不是替各方做决定而是给各方一个“如果你这样我就那样”的稳定决策支点。2. 三方主体画像与博弈角色设定建模型的第一步不是堆公式而是先把三方主体的决策边界想清楚。我在这个项目里把主体划分为园区综合能源运营商、上游售电公司、用户聚合体每一方都有明确的决策变量、可行域和目标函数。2.1 主体A园区综合能源运营商园区运营商我习惯叫它CESP是博弈的枢纽。它拥有燃气内燃机、电锅炉、溴化锂机组、光伏和储能负责把外部购入的天然气和电力转换成园区用户需要的电、热、冷。运营商的决策变量分两类一类是运行变量包括各机组出力、储能充放电功率、燃气购买量、与电网交互的电量另一类是价格变量也就是它向用户公布的零售电价、热价和冷价。运营商的收益来源是向用户售能支出项包括购买燃气、从电网购电、设备运维成本和向上游售电公司购电的费用如果光伏有富余还可以反向卖给电网获得收入。目标函数是在满足用户用能需求需求本身受价格影响和自身设备运行约束的前提下最大化净收益。这里的关键难点在于零售价格与设备出力之间的耦合。价格一旦定得高单笔售能收益大但用户会削减负荷总售能收入不一定增加价格定得低用户负荷变大但边际利润被压缩。运营商必须同时决定价格和出力而不是先定负荷再调设备。2.2 主体B上游售电公司第二方上游售电公司在很多园区项目里容易被简单化成“电网”直接按固定电价处理。但如果把问题切到三方博弈售电公司必须是独立主体。售电公司的决策变量包括卖给园区运营商及内部用户的批发售电价、从园区收购余电的上网电价。它面对的约束是批发价格不能无限乱标因为园区可以选择多用气来减少购电也可能在光伏大发时反向送电给电网。售电公司的收益主要来自向园区售电的收入加上从其他用户获得的售电收入支出则包括从上级电网购电的成本和收购园区余电的支出。由于上级购电成本通常是分时变化的售电公司需要在峰平谷时段分别制定差异化电价。引入售电公司作为决策主体之后园区运营商会重新评估“用气发电”和“直接购电”的边际成本对比这个对比关系直接影响园区的内部调度策略。2.3 主体C用户聚合体园区用户通常是多个不同类型的用户我在处理时先将它们聚合成一个“用户聚合体”再做细化拆分。用户聚合体不是被动的固定负荷而是能够响应用能价格的理性决策者。它的决策变量是各时段购电量、购热量、购冷量以及可转移负荷的启停安排目标是最大化用能效用与用能成本之差。这里需要引入效用函数来描述用户对能源的偏好。工业用户和商业用户的效用函数形态不一样工业用户的生产过程刚性较强效用函数更陡峭价格变化对负荷量的影响有限商业用户则更灵活舒适度弹性较大对价格更敏感。我在模型中用二次效用函数拟合通过调节系数来体现不同用户的价格敏感度。用户价格敏感度越高整个博弈系统对价格信号的反馈就越强均衡结果也越接近竞争性市场。3. 非合作博弈模型的搭建过程主体角色设定清楚之后接下来就是把每方目标函数和约束写成可解的数学问题然后放到博弈框架下联立。这一部分我建议不要一上来就追求高深的均衡理论先把各方子问题建模扎实。3.1 决策变量、目标函数与约束的规范化表达为了让模型清晰我先定义了统一时段集合T典型场景取24小时。对于园区运营商决策变量包括t时段的燃气轮机发电出力Pg、热回收量Qhr、电锅炉产热量Qeb、吸收式制冷量Qac、电制冷量Qec、储能充放电功率Pch/Pdis、向电网购电功率Pgrid、售给用户的电功率Pe、热功率Qh、冷功率Qc以及内部零售电价πe、热价πh、冷价πc。运营商的优化问题可以写成Max ∑ (πe·Pe πh·Qh πc·Qc πup·Ppv_sell − πgas·Fgas − πb·Pgrid − Com其中πup是上网电价Ppv_sell是光伏余电上网量πgas是天然气价格πb是售电公司批发售价Com是设备运维费用。约束条件包括设备出力上下限、爬坡约束、储能SOC状态更新、电/热/冷能量平衡方程。电平衡表达式为Pe Ppv_sell Pch Pgrid Ppv Pdis Pg其中Ppv代表光伏出力同一时段所有电力供给和消费必须平衡。热平衡要考虑燃气轮机余热、电锅炉产热、储热如果配置与用户热负荷的平衡。冷平衡则由吸收式制冷和电制冷共同满足冷负荷。对于售电公司决策变量是t时段的批发售电价πb和上网收购价πup目标函数考虑向上级电网的分时购电成本、向园区售电收入、收购园区余电支出、以及面向外部其他用户的售电收入。约束条件是批发价和上网价的上下限避免出现极端价格信号。对于用户聚合体决策变量是各时段购电量Le、购热量Lh、购冷量Lc目标函数是总效用减去总购能成本。严格来说用户的价格响应函数可以由一阶最优性条件推出形成带价格弹性的需求函数供运营商的定价子问题使用。3.2 用户需求响应模型效用函数与价格弹性用户侧的建模我踩过一次坑最开始直接用线性需求曲线也就是负荷和价格成简单反比关系跑出来的结果无法体现不同用户之间响应行为的差异。后来改成二次效用函数U(L) α·L − 0.5·β·L²用户优化问题Max U(L) − π·L的一阶条件是α − β·L − π 0也就是L (α − π)/β。这个形式的好处很明显α代表用户对能源的刚性需求水平β代表价格敏感程度β越大则负荷对价格越敏感。实际标定这两个参数时我会用园区历史负荷数据和对应价格数据做线性回归把L对π的散点拟合成直线截距对应α/β斜率对应−1/β。如果拿不到历史数据就按行业经验值给定范围再通过敏感性分析看看结果对参数变化是否稳定。用户响应模型看似只是整个博弈里的一小块但它决定了价格能否有效传导到负荷侧直接影响均衡结果千万不能拍脑袋随便写。3.3 园区设备运行与内部定价的耦合关系定价策略和设备运行策略必须联合优化这是综合能源园区和单纯售电公司的本质区别。举一个具体的例子某个时段售电公司的批发价很高同时园区燃气轮机的发电成本相对较低那么运营商的理性策略是用燃气轮机多发电减少购电甚至在满足内部用户需求之后把多余电力卖给电网。这个策略直接影响用户支付的零售电价因为运营商的供电成本结构变了。反过来如果天然气价格突然上升燃气轮机发电边际成本高于电网购电成本运营商就会选择少发电、多购电零售电价可能下调但同时热负荷的供应来源也得跟着调整因为燃气轮机不出力意味着余热减少溴化锂制冷机的制取能力下降需要用燃气锅炉备热或电制冷来顶上。这种“电-热-冷”三级联动在传统电力市场博弈模型里是不存在的它让运营商的决策变量维度明显增加也让均衡求解变得更加复杂。3.4 纳什均衡的存在性与求解思路对于这类非合作博弈理论上可以证明如果每个主体的策略空间是非空紧凸集且各自目标函数在其策略上是连续且拟凹的那么博弈至少存在一个纯策略纳什均衡。园区运营商的目标函数并不是严格凹的因为它包含价格乘以需求量的双线性项所以不能直接套用严格凸优化的结论。实际处理时我先将整数变量固定比如机组启停状态、储能充放电状态在连续策略空间中找均衡再通过枚举或启发式方法处理整数组合。数值求解方面我的首选方案是采用对角化迭代算法。其基本思路是在每一轮迭代中固定其他两个主体的策略只优化当前主体的子问题按顺序更新各主体的策略反复循环直到策略变化量小于收敛阈值。这个方法实现简单逻辑直观在主体数量不多、策略维度可控的情况下相当好用。如果需要更严格的均衡解可以将各子问题的KKT条件联立利用强对偶理论把双层问题转化为单层混合整数规划一次性求解但这个方法对模型规模很敏感园区设备多、时段长时求解时间会呈指数上升。4. 实操过程算法框架与算例分析模型搭好之后真正进入“跑数”阶段。我把整个求解流程写成了可复用的Python框架核心是基于Gauss-Seidel思想的对角化迭代。这里分享一下我的实现细节和实际跑出来的算例结果。4.1 对角化迭代求解框架与Python实现要点求解框架的流程大概是这样的初始化给出售电公司批发电价、园区零售电价、用户负荷的初始值。固定售电公司策略和用户策略求解园区运营商子问题得到新的设备出力和零售电价。固定园区运营商策略和用户策略求解售电公司子问题得到新的批发电价和上网电价。固定售电公司策略和园区运营商策略求解用户子问题得到新的购能负荷。判断本轮策略与上一轮策略的差值范数是否小于阈值如果满足则输出均衡结果不满足则返回第2步继续迭代。我在实现这个框架时特别注意几点。第一每个主体子问题都做成独立的优化模型用Gurobi或Cplex求解这样各子问题可以单独调试。第二收敛阈值一般设置为相对偏差小于0.001如果发现结果在阈值附近震荡会适当加大迭代上限并增加阻尼系数。第三在迭代过程中保存每一轮的价格和出力数据方便复盘收敛轨迹和诊断问题。4.2 关键参数配置与数据准备算例使用了某典型工业园区的数据。园区配置2台200kW燃气内燃机额定电效率40%余热回收效率45%1台额定制冷量500kW的溴化锂吸收式机组COP约1.22台250kW电锅炉效率0.95光伏装机800kW储能容量500kWh最大充放电功率200kW充放电效率95%。天然气价格按2.8元/立方米计算低热值9.7kWh/立方米折算燃气轮机发电的燃料成本约0.55元/kWh。售电公司侧的参数设置向上级电网购电价格为峰时0.9元/kWh、平时0.6元/kWh、谷时0.3元/kWh。批发给园区的售电价初始值设为0.8元/kWh上网收购价初始值为0.4元/kWh。用户侧分工业用户和商业用户两类工业用户用电弹性系数设为0.15商业用户设为0.35热需求弹性相对较小设为0.1。数据准备阶段最容易忽略的是“时序匹配”。光伏出力曲线、用户负荷曲线、上级分时电价必须用同一时间分辨率统一到15分钟一个时段再聚合成1小时时段做日前优化。我建议先把三份原始数据画在一张图里做可视化检查确认峰值时段是否合理避免后面迭代半天发现数据口径不一致。4.3 典型日结果价格迭代轨迹与三方收益均衡以夏季典型日为例在初始价格下用户负荷偏高运营商为了满足负荷不得不在峰时大量购电成本很高于是第一轮迭代中运营商会主动上调零售电价抑制用户负荷。价格上调后用户响应减少用电运营商购电压力下降边际供电成本回落第二轮迭代中运营商又会小幅下调零售价。售电公司这边看到园区购电需求下降为保持售电量它会主动下调批发价格而批发价格下调反过来刺激运营商增加购电、减少燃气发电形成新一轮策略调整。整个迭代过程大概在17轮左右达到收敛。收敛后的均衡结果为园区零售电价峰时0.86元/kWh、平时0.62元/kWh、谷时0.34元/kWh售电公司批发价格峰时0.82元/kWh、谷时0.32元/kWh用户负荷相比初始方案削减了8.7%其中商业用户削减比例明显高于工业用户。从三方收益看运营商日净收益约为1.8万元售电公司日净收益约1.2万元用户用能总效用约3.5万元。如果采用集中式优化在不考虑利益补偿的情况下系统总剩余会高出约1.8%但会导致售电公司收益下降约9%显然这种方案在实际中无法被执行。这个结果很直观地说明了非合作均衡的意义它是各方愿意接受的稳定点效率损失换来的是可执行性。4.4 敏感性分析价格弹性与气价变化的影响做敏感性分析时我会重点关注两个维度。第一个维度是用户价格弹性。把商业用户弹性系数从0.35提高到0.6后均衡零售电价明显下降用户负荷响应幅度更大运营商和售电公司收益都有一定损失但用户总效用上升系统总剩余变化不大。这说明用户越灵活博弈均衡越接近完全竞争结果价格加成越小。对实际运营者来说如果面对的是高弹性用户群就不能再靠高定价赚取利润必须靠多能互补降低真实供能成本来提升收益空间。第二个维度是天然气价格。把气价从2.8元/立方米上调到3.4元/立方米后燃气轮机发电的边际成本超过峰时购电价格运营商在峰时的最优策略从“以气定电”转向“以电定热”优先从电网购电燃气轮机只在热需求较高时低负荷运行。均衡结果是园区购电量上升售电公司收益改善但零售电价也会小幅上行用户效用受到一定挤压。这个结论提示我们天然气价格跟电网批发电价的比价关系实际上决定了园区的技术路线选择博弈模型正好能把这个传导过程量化出来。5. 常见问题与排查技巧实录做这类多主体博弈项目模型跑不通是常态跑通了结果不合理也经常发生。我把自己在调试过程中遇到的典型问题整理成一份速查表供后面做类似项目的人参考。5.1 迭代不收敛或结果周期性振荡遇到不收敛的情况我首先会看是否所有主体都存在“唯一最优响应”。如果某个主体的目标函数存在多峰也就是在当前其他主体策略下有多个局部最优解那么每轮迭代就会在不同解之间跳来跳去。排查方法是固定其他两个主体的策略画出当前主体的目标函数曲线直接观察是否存在多个峰值。如果多峰确实存在优先修正模型比如给目标函数增加惩罚项、增加约束的严格凸性。另一个常见原因是迭代步长过大。处理方法是给策略更新加一个阻尼系数新的策略值取本次优化解和上次策略值的加权平均阻尼系数取0.3到0.7之间。我实测发现阻尼系数从0.5降到0.3之后很多原本发散的问题都能稳定收敛只是迭代次数会从十几轮增加到三十多轮整体求解时间仍然可以接受。5.2 存在多个纳什均衡时怎么取舍非合作博弈中多个均衡并存是正常现象不是说模型错了。我在不同初始点下跑了多次发现价格变量的均衡值有时会落在两个不同的水平其他变量的结果也跟着不同。处理办法是设计多组初始点比如从低价启动、高价启动、均衡价格上下浮动10%启动三类分别求解看最终收敛到哪些均衡点。如果多个均衡之间的收益差异不大我会选择任意一个并注明结果依赖初值。如果收益差异明显就需要从实际可执行性角度做筛选比如选择用户效用更高或者运营商收益更高的均衡作为推荐方案。另一种更严格的做法是引入均衡选择理论中的风险占优或帕累托占优概念但实操中很少用那么复杂的方法通常通过多初值对比加利益相关方讨论来敲定最终方案。5.3 用户响应模型太粗糙导致结果失真当我把用户模型简化为固定负荷时均衡结果几乎没有任何参考价值零售价格上涨只会影响运营商利润用户负荷完全不变博弈变成了运营商与售电公司的纯买卖对话。引入二次效用函数之后价格信号才能真正传递到负荷侧但参数标定又成为问题。我踩过的坑是用全园区总电量和平均电价去拟合弹性参数结果高估了用户的价格响应能力均衡价格被压得异常低。后来按用户类型分别统计分时用电数据并加入温度、生产班次等外部影响变量弹性参数才合理。如果你实在没有历史分时电价数据做拟合我建议参考公开文献中的弹性取值范围并做灵敏度分析看关键结论是否随弹性参数变化发生方向性的改变。5.4 数据隐私与分布式求解的现实取舍园区三方主体通常不愿意完全共享自己的内部数据尤其不愿意共享成本曲线和真实效用函数这给集中式求解带来很大阻力。我实际推进项目时通常采取“联合建模、分方填充”的折中方案模型结构由三方共同确认参数各自填入只共享优化结果不共享底层敏感数据。如果对隐私性要求再高一些可以引入交替方向乘子法或基于分解的分布式优化框架各主体只交换边界变量和价格信号。不过这类方法的工程实现复杂度要明显高于对角化迭代需要处理收敛系数选择和乘子更新规则等细节。对大多数咨询类项目来说先把集中式均衡模型跑通、把机制讲清楚再讨论隐私化改造是效率更高的路径。6. 后续扩展方向与个人实操体会这个三方非合作博弈框架在目前项目里只解决了日前调度层面的策略问题但它还有很大的扩展空间。首先是实时市场与日前市场的衔接园区内的可调节资源参与需求响应后实时运行阶段的价格偏差如何反馈到日前博弈策略中是一个很自然的延伸问题。其次是引入合同机制把非合作博弈得到的均衡结果作为谈判基准点让三方通过双边合同或收益分配协议对损失做补偿这样既可以保留非合作博弈的可执行性又能部分弥补效率损失。我在操作过程中也发现纯数学意义上的纳什均衡虽然理论严谨但在实际项目中不能直接拿来当最终报价用。更务实的做法是先跑出均衡解作为参考基准然后结合每家的商业诉求做微调比如运营商可以在均衡电价基础上给重点用户一定优惠来锁定长期负荷售电公司也可以设计阶梯价套餐来提升售电规模。换句话说非合作博弈的价值不是代替商业谈判而是给谈判提供一个透明、可解释的初始方案让各方在同一个信息基线上讨论问题。如果让我给同类项目的执行排一个优先级我的建议是把60%的精力放在主体建模和数据清洗上20%放在博弈求解算法上剩下20%放在结果可视化和机制解释上。很多团队把算法研究做得很深但忽略了基础数据质量结果模型再精巧也没法落地。另外博弈论模型跑出来的结论往往比较“冷静”你可能会发现运营商最优零售价并不是一个特别高的价格因为太高会逼走用户。这种结论在向企业汇报时需要有充分的机制解释能力否则对方的第一反应可能是“你这个价格太低了我们赚不到钱”。提前准备好敏感性分析和场景对比图表能让沟通顺畅很多。
返回列表