做能源优化方向的,谁没听过“主从博弈”这四个字呢?我最早接触这个题目,是帮一位师弟看他的课题:多能互补园区的定价与调度策略。他当时把题目拟成了“三方三层的主从博弈能源系统优化模型,粒子群算法求解研究”,第一眼看上去特别吓人——三方、三层、博弈、粒子群,又是模型又是算法又是代码,光名词就堆了一大串。但真正把框架拆开之后就会发现,这个题目的核心其实非常清晰:园区里各参与方各有各的小算盘,我们要用数学模型把这些小算盘写出来,再设计一种算法找到各方都能接受的一个稳定结果,最后用Matlab跑通整个仿真。这篇文章我就把这个过程从头讲一遍,从博弈框架的搭建、数学模型的推导,到粒子群算法怎么落进去、代码怎么组织,再到我自己调试时踩过的一堆坑,都给你捋清楚。适合正在做综合能源、微电网、电力市场相关课题的研究生,也适合想把多主体博弈模型当成工具用的工程师。
1. 项目概述:一次把“主从博弈”和“能源系统优化”之间的关系说透
1.1 这个题目到底在做什么
一句话概括:整个系统里有三个利益不完全一致的主体,它们在三个不同的调度层面上做决策,上层先动、下层后动,上层能预测到下层的最优响应,于是整个系统呈现出一种“你出牌、我跟牌、你再根据我的牌调整”的博弈关系。能源系统优化的任务,就是找到那个让任何一方都不愿意单方面改变策略的稳定点,也就是博弈论里的Stackelberg均衡。
我先说为什么这种模型越来越常见。以前的电力调度是“一本账”:调度中心说了算,电厂、用户都听指挥,优化问题只需要满足物理约束和经济性,本质上是一个单层规划问题。但现在的园区能源系统不一样,售电公司可以自己定价格,用户可以根据电价决定要不要错峰用电,配电网运营商还要管潮流和过载,大家都有自己的决策空间,谁也不能一声令下就让别人听自己的。这时候“一套指令”的优化框架就不够用了,得让各方在博弈中自己找平衡。主从博弈最擅长处理的,恰恰就是这种“先手和后手”的关系。
1.2 为什么偏偏是“三方三层”
先说三方通常指哪三方。不同论文有不同配置,但最常见的组合是:综合能源运营商(或售电公司)作为供能方,配电网运营商(或园区管理方)作为网络调度方,终端用户作为用能方。三方各自的目标差别很大。运营商想多卖能、卖高价,用户想省电费、保持舒适度,配电网运营商想保证电压不越限、线路不过载、尽量降损耗。这三方放在同一个系统里,矛盾是天然存在的,也就是博弈能玩起来的前提。
三层则对应决策层级。最上层是运营商做价格决策和容量规划策略,中间层是配电网在当前价格和需求下做潮流调度、网络管理,最底层是用户根据收到的价格信号做用能决策。三层之间有严格的信息顺序:上层给出的策略会被下层当成已知参数,下层算出自己的最优响应后,反过来又影响上层目标的实现。所以三层不是简单的三个优化模块并列,而是嵌套的、串行依赖的。有的模型会把“规划”和“运行”分成两层,再把“需求响应”挂到最下层,本质思路是一样的。
1.3 粒子群算法在这里扮演什么角色
有了模型还必须有求解工具。主从博弈模型写出来之后,上层和下层的决策变量相互嵌套,目标函数往往是非线性、非凸的,再加上设备启停、潮流约束这类复杂条件,传统的梯度类算法或者单纯依赖求解器的方法经常会遇到困难。粒子群算法(PSO)的优势这时候就体现出来了:它不要求目标函数可导,不要求问题必须写成标准凸优化格式,只要你能写清楚“一组决策变量对应一个适应度值”,就能放进粒子群框架里搜索。
粒子群原理上其实特别朴素,它就模拟一群鸟在空间里找食物的过程。每个“粒子”代表一组候选决策,粒子之间共享历史最好位置,再根据个体记忆和群体记忆不断调整自己的飞行方向。用在主从博弈里,上层决策变量编码成粒子位置,下层模型作为适应度计算的一部分被嵌入进去,粒子群在外层迭代搜索,从而找到近似均衡。这个方法在工程上极受欢迎,也是很多Matlab代码实现的首选。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三方三层博弈框架的核心设计思路
2.1 三个参与主体的目标函数与决策变量
把三方目标具体化之前,要先确立一个原则:博弈模型里每个决策者都要有自己独立的决策变量和目标函数,而且彼此之间要有耦合。如果一个主体的目标只是另一个目标的附属品,整个博弈框架就是伪的。
我按最常见的配置来说。最上层综合能源运营商,决策变量是售电价格、售热价格,可能还包括储能容量、机组额定功率这类规划变量。目标函数一般是最大化年净收益,包括售电收入、售热收入,扣掉购电成本、燃料成本还有设备运维成本,表达式可以写成:
[
\max \sum_{t} \left( p_{e,t} \cdot L_{e,t} + p_{h,t} \cdot L_{h,t} - C_{buy,t} - C_{om,t} \right)
]
其中(p_{e,t})、(p_{h,t})是运营商制定的电、热价格,(L_{e,t})、(L_{h,t})是终端用户响应后的电、热负荷需求。注意,这里的(L_{e,t})不是固定常数,而是用户看完价格后才决定的,这就是博弈耦合的核心。
中间层配电网运营商,决策变量通常是购售电计划、网络重构方案、无功补偿量等。目标函数经常是最小化运行成本,同时要保证潮流方程、节点电压和支路潮流不越限。
最下层用户,决策变量是可转移负荷的平移量、可削减负荷的削减量、储能充放电功率等。目标函数是最大化自身效用减去用能成本,比如:
[
\max ; U(L) - \sum_t p_{e,t} \cdot L_{e,t}
]
其中(U(L))是用户用电带来的效
