做多微网协调调度的朋友,应该都有过这种困惑:手里三四个微网,有的光伏出力大、白天电用不完,有的晚上负荷尖峰高、储能又不够用,明明彼此之间拉一条联络线就能把电送过去,可真正做优化调度的时候,却不知道该怎么下手。一开始我直接建了一个大而全的联合优化模型,把所有微网的设备、负荷、储能全塞进一个目标函数里,让“系统总成本最小”。结果跑出来的方案,某个微网成本暴增,换来的却是另一个微网大幅省钱。现场一沟通,成本暴增的那个微网负责人直接拒绝执行——人家的诉求是自己利益最优,凭什么为了全局牺牲自己?这就是单层联合优化的死穴。
后来我改用双层优化模型来做这件事,上层是“多微网协调调度中心”,做全局协调,定交互电价、定各微网之间的功率交换计划、定需求响应补偿价格;下层是每个微网自己的能量管理系统,在给定上层信号的前提下,优化内部各设备出力,追求自身成本最小。上下层之间不是简单的隶属关系,而是一种博弈关系。上层不能直接命令下层“你光伏必须给我发多少”,只能通过价格和交互功率来引导。这种模型跑出来的结果,才真正符合实际运行中各微网独立决策的客观事实。
这篇内容我就以一套完整可复现的Matlab实现为例,把这个模型从数学建模、KKT推导到代码落地、调试经验,完整拆开讲一遍。适合正在做微网优化调度、写毕业论文或者准备竞赛方案的同学参考。
1. 为什么多微网协调调度必须拆成两层,而不是一个大的优化问题
1.1 单层联合优化的根本矛盾:全局最优不一定等于局部最优
先回顾一下我最初踩过的坑。单层联合优化的思路很简单:把所有微网的分布式电源、储能、负荷、交互功率全部划归到一个决策者手中,设置一个总目标,通常是系统总运行成本最低或总碳排放最低,然后求解。数学上完全可行,求解效率也高,但工程上很难落地。
因为实际运行中,每个微网都有自己独立的运营主体和考核指标。MG1的储能是它的资产,MG2的负荷是它的用户,各自都有自己的成本核算。你让MG1牺牲自己的经济性去帮MG3消纳光伏,如果没有足够的价格激励,它凭什么听你的?联合优化等于假设所有微网“利益完全一致”,这在实际中几乎不存在。所以模型算出来的“最优调度方案”,经常会在执行层面被卡住,这也是很多论文里的模型“学术上完美、工程上落不了地”的根本原因。
1.2 双层模型天然契合“上级定规则、下级做决策”的真实博弈过程
双层优化(Bilevel Optimization)的结构,天然就是一个Stackelberg博弈过程。上层是领导者(Leader),下层是跟随者(Follower)。领导者先行动,发布价格信号和协调策略;跟随者在看到这些信号后,做出自己利益最大化的响应。领导者在决策时,要预判跟随者的响应行为——也就是说,上层最优化问题的约束里,包含了下层的最优化问题。
放到多微网场景里就是:
- 上层(协调调度中心):制定各微网间交互电价、向电网购售电的指导计划、需求响应补偿价格,目标是整个多微网系统的总运行成本最小化。
- 下层(各微网):根据上层给出的价格信号,优化各自的光伏/风电出力、储能充放电、可转移负荷安排、从电网或其他微网购电的功率,目标是本微网运行成本最小化。
上下层通过耦合变量连接起来。上层决策会通过价格和交互功率影响下层,下层的响应行为又会反过来决定上层目标函数能否实现。这种“上层出价、下层响应、上层再调整”的递推过程,用单层模型根本表达不了。
1.3 双层模型在数学上等价于带最优性条件的“大优化问题”
很多初学者问,既然双层模型要靠迭代或者博弈去理解,那Matlab里怎么求解?其实不用真的去模拟迭代收敛过程。经典的解法是:把下层优化问题用它的KKT最优性条件替代。KKT条件包括:下层目标函数的梯度条件、原问题可行性约束、对偶变量非负约束、互补松弛条件。把这些条件全部作为约束加入上层模型中,原来求解速度极慢的双层问题就变成了一个带互补约束的单层数学规划问题(MPEC)。
再把互补松弛条件里“约束量 × 对偶变量 = 0”这种非线性约束,用大M法线性化,整个问题就进一步转成一个混合整数线性规划(MILP),可以直接丢给Gurobi、Cplex这类商业求解器求解。这是目前学术界和工业界处理双层优化的主流路线,也是我下面要重点拆解的部分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 上层定规则、下层追利益:双层模型的决策变量与目标函数拆解
2.1 上层的角色和职责:协调中心不是万能命令者
上层协调调度中心掌握的信息是全局的,但它的权力是有限的。它不能直接控制微网内部的柴油发电机启停,也不能直接命令某台储能“必须充电”。它能做的事情只有三类:
第一,制定微网之间的交互功率计划。也就是告诉MG1和MG2之间,在某个时段,MG1可以向MG2输送多少功率。这个交互功率是物理层面的功率流,受到联络线容量限制。
第二,制定激励型需求响应的补偿价格。比如在晚高峰时段,协调中心希望各微网削减一部分可中断负荷,它会给出一个补偿单价,微网根据这个单价和自己削减负荷的舒适度成本,决定到底削多少。互补的价格,就是上层引导下层行为的关键杠杆。
第三,制定多微网系统与外部电网之间的购售电计划。协调中心可以代表整个多微网系统,向配电网购电或者卖电,这块电量是各微网内部功率平衡后的缺额或盈余之和。
上层的目标函数是使整个多微网系统的总运行成本最小,包括:
- 向上级电网购电的费用(购电功率 × 分时电价);
- 向上级电网售电的收入(售电功率 × 上网电价,通常小于购电价);
- 需求响应补偿费用(响应量 × 补偿单价);
- 各微网设备运行费用(这个实际上由下层决定,但会通过KKT条件反映到上层)。
2.2 下层的角色和职责:每个微网都是独立的经济主体
每个微网内部,是一个典型的经济调度问题。下层的决策变量主要有:
- 分布式电源出力:
