尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于SOCP的主动配电网动态重构建模与求解

基于SOCP的主动配电网动态重构建模与求解 简介配电网重构作为主动配电网运行优化的重要手段通过调整网络拓扑实现降损与电压改善。传统静态重构仅针对单一运行断面难以适应分布式电源出力与负荷的时序波动。二阶锥规划SOCP因其凸优化特性和高效求解能力成为动态重构建模的主流框架。通过将非凸潮流方程松弛为旋转二阶锥约束并结合开关动作代价与辐射状约束可在多时段尺度上联合优化拓扑结构。该技术适用于含高比例分布式电源的配电网规划、日前调度及实时运行场景兼顾经济性与安全性为工程实践提供了可复现的求解路径。 上周一个师弟把配电网重构的模型发给我看问了一个特别典型的问题他用静态重构算出来的“最优拓扑”放到一天24小时的负荷曲线里去跑网损反而比另一个次优拓扑更大。这个问题恰好戳中了主动配电网动态重构存在的意义——拓扑不是一天只换一次就能跟得上分布式电源和负荷波动的。而要高效求解这种带时序关系的拓扑优化问题基于二阶锥规划SOCP的动态重构建模几乎是目前工程上最实用的一条技术路线。这篇文章我会从建模动机、数学原理、约束构建、求解器配置到算例落地完整讲一遍内容偏实操适合正在做配电网重构课题的研究生、从事配电网优化运行的工程师以及想了解凸松弛在电力系统中怎么用的读者。我会把里面容易踩坑的地方单独拿出来讲尽量让这套方法可以照着复现。1. 静态重构为什么不够用动态重构的逻辑起点1.1 主动配电网到底“主动”在哪里传统配电网的运行逻辑是“被动消纳”变电站出口提供电压馈线向下游送电负荷变化基本可预测调度手段非常有限。主动配电网不一样分布式光伏、风电、储能、充电桩大量接入后潮流不再是单向、稳定、可预判的。所谓“主动”核心是配电网具备了对分布式电源和可调负荷进行主动管理的控制能力而重构就是这种控制能力里成本最低、见效最快的一种手段。主动配电网重构的特别之处在于它可以配合分布式电源出力的变化来调整网络拓扑。比如白天光伏大发时让部分区域解列运行避免倒送潮流抬高电压晚上负荷高峰时合上联络开关让多个馈线分担负荷。这种“看天调整”的运行方式是主动配电网区别于传统配电网的重要特征。1.2 静态重构的问题一个拓扑无法适配全天运行方式传统的配电网重构通常是针对某一确定的运行状态求一组开关状态使得网损最小或电压质量最好。这是典型的静态重构。单一时段下这个优化问题本身已经不好解开关状态是0-1变量潮流方程是非线性约束本质是一个混合整数非线性规划MINLP。但工程上为了求解方便很多人会把它简化成单个典型时段的问题来算。静态重构的问题在于它没有考虑一天内负荷和DG出力的时间变化。你按晚高峰负荷算出来的最优拓扑到凌晨低谷时段很可能就是次优的甚至可能出现电压偏高、线损偏大的问题。反过来按低谷时段选出来的拓扑到了高峰时段又会过载。这就是我师弟那个问题的根源——他拿全天负荷曲线去校核一个单时段最优拓扑自然对不上。1.3 动态重构解决的三个核心问题动态重构在时间维度上把全天划分成多个时段在每个时段都可以选择不同的拓扑同时约束相邻时段之间的开关动作次数。它要解决的核心问题有三个第一个是时序协调。多个时段的最优拓扑不一定相同但也不能每个时段都随便换开关设备有操作寿命限制频繁动作不现实。动态重构通过目标函数中的开关动作惩罚项或硬约束在“拓扑最优”和“动作次数最少”之间取得平衡。第二个是全局最优。把所有时段放在一起联立求解比逐时段静态求解再拼接要更接近全局最优。因为这一时段的拓扑选择会影响下一时段的可用动作次数这种耦合关系只有联立模型才能准确表达。第三个是安全校核。动态重构可以在模型里同时考虑各时段的电压约束、支路容量约束和辐射状约束保证每个时段的拓扑都是可安全运行的并且时段之间的切换过程不会引起不可控的暂态问题。从数学角度动态重构把一个单时段MINLP扩展成了多时段MISOCP混合整数二阶锥规划问题规模变大但通过SOCP松弛它变成了一类现代求解器可以高效处理的凸优化问题。这也是很多文献选择SOCP路线的原因。2. 二阶锥规划非凸问题为什么能被“松弛”出来2.1 配电网潮流方程的非凸本质先看最基本的支路潮流方程。对于一条支路(i,j)定义以下变量$P_{ij,t}$、$Q_{ij,t}$t时段由节点i流向节点j的有功、无功功率$v_{i,t}$节点i电压幅值的平方即 $v_i U_i^2$$l_{ij,t}$支路电流幅值的平方即 $l_{ij} I_{ij}^2$$r_{ij}$、$x_{ij}$支路电阻、电抗如果网络是连通的且支路闭合那么节点电压之间的关系满足$$ v_{j,t} v_{i,t} - 2(r_{ij}P_{ij,t} x_{ij}Q_{ij,t}) (r_{ij}^2 x_{ij}^2)l_{ij,t} $$这个约束本身是线性的问题出在电流平方的定义上$$ l_{ij,t} \frac{P_{ij,t}^2 Q_{ij,t}^2}{v_{i,t}} $$这个等式关系是非凸的因为 $P^2 Q^2$ 关于 $P$ 和 $Q$ 是凸函数但除以 $v_i$ 之后这个等式约束形成的可行域不是凸集。在数学上等号约束对应于一条曲线而这条曲线把可行域“弯”成了非凸的形状。如果直接把这个非凸约束扔给求解器解MINLP最直接的后果是求解时间指数级增长而且无法保证收敛到全局最优。对于多时段重构这种动辄上百个0-1变量的问题蛮力求解基本不可行。2.2 从DistFlow到二阶锥约束的数学推导前面那个非凸等式约束可以做一个经典的凸松弛。把等号放宽成不等式$$ l_{ij,t} \geq \frac{P_{ij,t}^2 Q_{ij,t}^2}{v_{i,t}} $$这个不等式等价于$$ P_{ij,t}^2 Q_{ij,t}^2 \leq v_{i,t} \cdot l_{ij,t} $$这是一个旋转二阶锥约束可以写成标准二阶锥的形式$$ \left| \begin{pmatrix} 2P_{ij,t} \ 2Q_{ij,t} \ v_{i,t} - l_{ij,t} \end{pmatrix} \right|2 \leq v{i,t} l_{ij,t} $$展开验证一下两边平方得到 $4(P^2Q^2) (v-l)^2 \leq (vl)^2$化简后正好是 $P^2Q^2 \leq v \cdot l$。这个约束定义的是一个凸锥所以原问题从非凸变成了凸问题在连续变量部分。为什么可以这么放宽直觉上讲所有可行的原问题解都满足放宽后的不等式最优解如果在满足不等式时取到了原问题的最优值那么松弛就是精确的。实际问题中目标函数通常包含线损项 $r_{ij}l_{ij,t}$而 $l_{ij,t}$ 越大越不利所以求解器会倾向于把 $l$ 压到尽量小正好落在等号上。这就是为什么这个松弛在配电网重构中普遍有效。2.3 松弛什么时候精确四个实用判断条件SOCP松弛不是无条件精确的需要满足一定条件。我在建模前会先检查以下四点第一网络拓扑是辐射状的。辐射状网络下节点电压和潮流的关系更“规整”SOCP松弛的精确性有理论保证。如果网络本身是环网松弛后可能出现闭环上的“虚假环流”导致解不是物理上可实现的。第二目标函数对 $l_{ij,t}$ 是单调递增的。网损最小就是一例。如果目标函数是“网损最小其他非凸项”松弛间隙可能会增大。第三节点电压上下限约束不能太紧。电压约束如果压得太紧SOCP松弛在某些支路上可能不紧需要额外验证。第四支路功率不能出现明显反向。如果DG渗透率极高某条支路的功率接近零甚至反向流动SOCP松弛仍然可能成立但需要更仔细地检查最优解的锥间隙。我的经验是每求解完一个动态重构模型都要做一次松弛间隙校核。具体做法是从最优解里取出所有支路的 $P,Q,v,l$计算 $\frac{P^2Q^2}{v \cdot l}$ 的值如果所有支路都接近1说明松弛是精确的如果某些支路明显小于1说明该支路的解落在锥内部需要检查原因。3. 动态重构数学模型完整拆解3.1 变量设计时间维度上的开关与潮流动态重构模型的变量分成两组一组是0-1整数变量代表线路开关状态另一组是连续变量代表各时段的潮流和电压。开关状态变量$z_{ij,t} \in {0,1}$1表示支路(i,j)在t时段闭合0表示断开支路有功$P_{ij,t}$可正可负为正表示由i流向j支路无功$Q_{ij,t}$方向定义与有功一致支路电流平方$l_{ij,t}$恒非负节点电压平方$v_{i,t}$恒正对于IEEE 33节点、24时段的典型算例支路数37条那么整数变量就是 $37 \times 24 888$ 个。这个规模的MISOCP在现代求解器下是可以接受的但如果做到69节点、96时段整数变量会到几千甚至上万就需要后面的削减技巧了。3.2 目标函数网损、开关动作、电压质量的博弈动态重构最常见的目标函数是整个调度周期内的总网损最小$$ \min \sum_{t1}^{T} \sum_{(i,j) \in E} r_{ij} l_{ij,t} $$但只有网损项还不够。如果完全不限制开关动作次数求解器可能会让每个时段的拓扑都不同结果就是开关频繁操作实际无法执行。因此目标函数里要加入开关动作惩罚项$$ \min \sum_{t1}^{T} \sum_{(i,j) \in E} r_{ij} l_{ij,t} \lambda \sum_{t2}^{T} \sum_{(i,j) \in E} \left| z_{ij,t} - z_{ij,t-1} \right| $$这里的 $\lambda$ 是开关动作的成本系数量纲要看具体折算方式。如果不希望把动作次数放进目标也可以把它作为硬约束处理比如“整个调度周期内总开关动作次数不超过N_max”两种做法都可以我通常偏好硬约束加目标惩罚混合使用更贴近工程。如果还关心电压质量可以在目标里加一项所有节点、所有时段的电压偏差平方和但这个会让目标函数里 $v$ 的系数不再单调反而可能影响SOCP松弛精确性需要谨慎。3.3 耦合线路状态的支路潮流约束连续变量部分的潮流约束可以分成三类电压降落方程、功率平衡方程、电流定义约束。电压降落方程在支路闭合时必须成立。引入开关状态后需要写成带大M的形式$$ -M(1-z_{ij,t}) \leq v_{j,t} - v_{i,t} 2(r_{ij}P_{ij,t} x_{ij}Q_{ij,t}) - (r_{ij}^2x_{ij}^2)l_{ij,t} \leq M(1-z_{ij,t}) $$当 $z_{ij,t}1$ 时这个约束退化为原始的电压降落方程。当 $z_{ij,t}0$ 时约束被松弛掉相当于这条支路不参与网络拓扑。同时断开支路的有功、无功、电流平方都必须强制为0否则会出现“虚拟潮流”$$ 0 \leq P_{ij,t} \leq M z_{ij,t}, \quad 0 \leq Q_{ij,t} \leq M z_{ij,t}, \quad 0 \leq l_{ij,t} \leq M z_{ij,t} $$这里 $P$、$Q$ 的方向处理需要注意。如果允许功率双向流动$P_{ij,t}$ 下界不能设为0否则会人为限制DG反送潮流。一般做法是把 $P$、$Q$ 定义在 $[-M, M]$ 区间然后让“等于0还是非0”由 $z$ 来控制但这样没法直接用 $0 \leq P \leq M z$ 这种单边约束。实际工程中我会先判断该支路是否可能存在反向潮流如果存在就把有功拆成两个非负变量 $P_{ij,t}^$ 和 $P_{ij,t}^-$用 $z$ 同时限制两个变量之和的上限。这个细节我在后面代码部分会体现。节点功率平衡方程是等式约束所有与节点j相连的支路功率代数和等于该节点的净注入$$ \sum_{i:(i,j)\in E} (P_{ij,t} - r_{ij}l_{ij,t}) - \sum_{k:(j,k)\in E} P_{jk,t} P_{j,t}^{load} - P_{j,t}^{DG} $$这条约束不用乘 $z$因为断开支路的 $P$ 和 $l$ 已经被强制为0自然不贡献功率。3.4 安全运行约束的建模细节电压上下限约束是最基本的安全约束用电压平方变量直接写$$ V_{min}^2 \leq v_{i,t} \leq V_{max}^2 $$注意 $v$ 是电压幅值的平方所以上下限也要取平方。IEEE 33节点系统通常取 $V_{min}0.95$ p.u.$V_{max}1.05$ p.u.对应 $v \in [0.9025, 1.1025]$。支路容量约束可以用电流平方上限表示$$ 0 \leq l_{ij,t} \leq I_{ij,max}^2 $$如果没有支路电流数据也可以用视在功率上限近似$$ P_{ij,t}^2 Q_{ij,t}^2 \leq S_{ij,max}^2 $$但这个约束不是线性的而且和二阶锥约束叠加会增加非线性所以我一般优先用电流平方上限因为模型更简洁。分布式电源的出力约束也要加进去。如果是恒功率控制的光伏/风电$P_{DG,j,t}$ 是给定的预测值直接代入功率平衡方程即可如果允许无功调节还需要加无功出力上限约束并且把 $Q_{DG}$ 作为决策变量。储能则涉及荷电状态的时序转移方程会进一步增加模型的耦合度这里先不展开。4. 两个最容易写错的约束辐射状与开关动作4.1 为什么辐射状约束不能只写“线路数节点数-1”配电网运行要求网络保持辐射状既不能有环也不能有孤岛。很多初学者一上来就写一个约束闭合支路数等于节点数减一即 $\本文还有配套的精品资源点击获取
返回列表