先把丑话说在前面,如果你只是想把潮流跑通、把结果画出来,其实不需要二阶锥。但如果你想做的是“配电网日前优化调度”,也就是让Wind、CB、SVG、OLTC、ESS这些设备在24小时里协同出力,那就必须用一个能嵌入优化器的潮流模型,再交给CPLEX这种商用求解器去解。这也是我后来做MATLAB代码时,最后稳定下来的一套组合:DistFlow形式+二阶锥规划(SOCP)松弛+YALMIP建模+CPLEX求解。
这套流程解决的核心问题很接地气:光伏、风电这类分布式电源接入后,节点电压可能越限,储能怎么充放电、电容器组怎么投、有载调压变压器怎么调档、SVG怎么发无功,才能让全天网损最小、电压最稳、动作次数还不至于弄坏设备。它适合两类人看,一类是电力系统方向的研究生,要复现“考虑多种调控手段的多时段优化调度”论文;另一类是做主动配电网、微电网调度平台的工程师,想把日前计划从经验试算换成可解释的数学规划模型。下面我不会把整份代码贴出来糊弄人,而是会把建模思路、代码骨架、踩过的坑讲清楚,这样你拿回去之后能自己搭。
1. 先把模型对象放对位置:这五类设备谁调有功、谁调无功、谁调电压
很多人拿到这类题目就开始写约束,结果写到一半发现设备之间的时间尺度、离散程度完全不同,根本塞不进同一个模型。我建议动手前先做一次“设备体检”。
1.1 24小时调度问题到底长什么样:从根节点到末端的一条完整链路
先画一个典型场景:一条配网馈线从上级变电站引下来,根节点可能是变电站母线,也可以带OLTC;沿线若干负荷节点,其中某些节点接了风电、储能、SVG或者并联电容器组。这里的CB别理解成断路器,它是Capacitor Bank,也就是并联电容器组,这个缩写坑过不少人,拿到旧代码时务必先改名为CapBank之类的清楚命名。
这个调度问题本质上是在做“日前最优潮流”。风电的预测出力曲线通常是给定的,负荷曲线也是给定的,决策者要回答的问题是:在接下来24小时,每个时段OLTC档位放到几档,电容器组投哪几组,SVG发出多大的无功,储能是充电、放电还是待机,必要时风电要不要弃一部分。目标可以是全天购电成本最小、网损最小,或者二者折中。
这句话看起来简单,但背后是好几层约束:每个时段的潮流要满足物理定律,储能SOC要从上一个时段递推到下一个时段,OLTC和CB有动作次数限制,电压不能越
