基于Distflow的最优潮流模型(OPF)--模型推导篇

2023-10-27

开篇

前言:自打上期内容火电机组经济调度建模及求解——基础篇推出以后,有小伙伴留言:“不考虑潮流问题的经济调度都是耍流氓。”作为一个有文化的流氓,我们尝试着为大家科普潮流计算。对于电力系统而言,潮流计算是一个非常复杂且重要内容,如果我们推文中有什么不准确的地方,欢迎大家批评指正。

在讲潮流计算之前,需要回答以下八个问题:

  1. 什么是电力系统潮流?(答案来源:度娘)

    答案1:电力系统在运行时,在电源电势激励作用下,电流或功率从电源通过系统各元件流入负荷,分布于电力网各处,称为电力潮流。
    答案2:电力系统中的潮流是指,电网中各节点电压、线路上有功功率、无功功率的稳态分布。

  2. 什么是潮流计算?

    电力系统潮流计算就是对复杂电力系统正常和故障条件下稳态运行状态的计算。(《电力系统分析》——韩祯祥)

  3. 为什么要进行潮流计算?

    潮流计算的目标是求取电力系统在给定运行方式下的节点电压和功率分布,用以检查系统各元件是否过负荷、各点电压是否满足要求、功率的分布和分配是否合理以及功率损耗等。(《电力系统分析》——韩祯祥)

  4. 潮流计算的应用场景有哪些?

    对现有电力系统的运行和扩建、对新的电力系统进行规划设计以及对电力系统进行静态和暂态稳定分析都是以潮流计算为基础。(《电力系统分析》——韩祯祥)

  5. 什么是最优潮流(Optimal power flow, OPF)?

    最优潮流是从电力系统稳定运行的角度来调整系统中各种控制设备的参数,在满足节点正常功率平衡及各种安全指标的约束下,实现目标函数最小化的优化过程。(答案来源:度娘)

  6. 最优潮流计算什么?

    由于最优潮流是同时考虑网络的安全性和经济性的分析方法,是传统的经济调度方法无法取代 的,因此在复杂电力系统的可靠性分析、电力系统的安全运行、传输阻塞的经济控制、经济调度、能量管理系统等方面得到广泛的应用。其目标函数通常包括:发电费用最小、电力系统网损耗最小等。(答案来源:度娘)

  7. 在计算最优潮流的时候,为什么需要对模型进行进行松弛?

    建立的最优潮流模型是非凸模型,而目前大部分求解器只能求解凸优化问题。因此,为了保证模型在允许的运行时间内得到可行解或最优解,必须进行松弛。

  8. 常见的松弛方法有哪些?

    • 线性松弛——松弛后的模型求解速度快,精度低;
    • 二阶锥松弛——松弛后的模型求解速度中,精度中;
    • 半定矩阵松弛——松弛后的模型求解速度慢,精度高(涉及复数决策变量,需要一些特殊的求解器)。

鲁迅先生讲过,中国人喜欢采用折中的方式处理事情,所以,本期推文我们就利用二阶锥规划的方法对非凸潮流模型进行松弛,建立基于Distflow的潮流模型。

Part 1 标准潮流模型-OPF

在最优潮流模型中,通常是已知电力系统的结构(如IEEE-33节点)以及负荷参数,用于确定发电机的输出功率,实现发电成本最小( ∑ i ∈ N c i p i g \sum_{i \in \mathcal{N}} c_{i}p_{i}^g iNcipig)或者系统网损最小( ∑ i ∈ N r i j l i j \sum_{i \in \mathcal{N}} r_{i j}l_{i j} iNrijlij)的目标。本模型以最小化发电成本为例,建立基于Distflow的潮流模型:
∑ i ∈ N c i ( p i + p i c ) 变量:  { P i j , Q i j } , { l i j } , { v i } , { p i , q i } s . t .   p j = ∑ k : j → k P j k − ∑ i : i → j ( P i j − r i j l i j ) , ∀ j ∈ N q j = ∑ k : j → k Q j k − ∑ i : i → j ( Q i j − x i j l i j ) , ∀ j ∈ N v j = v i − 2 ( r i j P i j + x i j Q i j ) + ( r i j 2 + x i j 2 ) l i j , ∀ ( i , j ) ∈ E p i ‾ ≤ p i ≤ p i ‾ , ∀ i ∈ N q i ‾ ≤ q i ≤ q i ‾ , ∀ i ∈ N v i ‾ ≤ v i j ≤ v i ‾ , ∀ i ∈ N l i j ≤ l i j ‾ , ∀ ( i , j ) ∈ E ∥ 2 P i j 2 Q i j l i j − v i ∥ 2 ≤ l i j + v i , ∀ i ∈ N , ∀ ( i , j ) ∈ E \begin{aligned} & \sum_{i \in \mathcal{N}}c_{i}\left(p_{i}+p_{i}^{c}\right) \\ & \text{变量:} \ \left\{P_{i j}, Q_{i j}\right\},\left\{l_{i j}\right\},\left\{v_{i}\right\},\left\{p_{i}, q_{i}\right\} \\ s.t.\ & p_{j}=\sum_{k: j \rightarrow k} P_{j k}-\sum_{i: i \rightarrow j}\left(P_{i j}-r_{i j} l_{i j}\right), \forall j \in \mathcal{N} \\ & q_{j}=\sum_{k: j \rightarrow k} Q_{j k}-\sum_{i: i \rightarrow j}\left(Q_{i j}-x_{i j} l_{i j}\right), \forall j \in \mathcal{N} \\ & v_{j}=v_{i}-2\left(r_{i j} P_{i j}+x_{i j} Q_{i j}\right)+\left(r_{i j}^{2}+x_{i j}^{2}\right) l_{i j}, \forall(i, j) \in \mathcal{E} \\ & \underline{p_i} \leq p_i \leq \overline{p_i}, \forall i \in \mathcal{N} \\ & \underline{q_i} \leq q_i \leq \overline{q_i}, \forall i \in \mathcal{N} \\ & \underline{v_i} \leq v_{i j} \leq \overline{v_i}, \forall i \in \mathcal{N} \\ & l_{i j} \leq \overline{{l}_{i j}}, \forall(i, j) \in \mathcal{E} \\ &\begin{Vmatrix} 2 P_{i j} \\ 2 Q_{i j} \\ l_{i j}-v_{i} \end{Vmatrix}_{2} \leq l_{ij}+v_{i}, \forall i \in \mathcal{N}, \forall(i, j) \in \mathcal{E} \end{aligned} s.t. iNci(pi+pic)变量: {Pij,Qij},{lij},{vi},{pi,qi}pj=k:jkPjki:ij(Pijrijlij),jNqj=k:jkQjki:ij(Qijxijlij),jNvj=vi2(rijPij+xijQij)+(rij2+xij2)lij,(i,j)Epipipi,iNqiqiqi,iNvivijvi,iNlijlij,(i,j)E2Pij2Qijlijvi2lij+vi,iN,(i,j)E
变量包括:

  1. P i j P_{i j} Pij Q i j Q_{i j} Qij:支路有功和无功功率
  2. p i p_{i} pi q i q_{i} qi:节点有功和无功功率
  3. v i j v_{i j} vij l i j l_{i j} lij:支路电压、电流幅值的平方

参数包括:

  1. N \mathcal{N} N E \mathcal{E} E:节点和支路的集合,其中 i i i j j j:表示节点, ( i , j ) (i,j) (i,j)表示支路
  2. c i c_{i} ci:发电成本, p i c p_{i}^{c} pic:负载的有功功率
  3. r i j r_{i j} rij x i j x_{i j} xij:支路电阻和电抗
  4. ∙ ‾ \underline{\bullet} ∙ ˉ \bar{\bullet} ˉ:变量 ∙ \bullet 的下界和上界

好啦,看到上面公式的小伙伴是不是对这个模型一脸懵,想知道它是怎样推导出来的,别急,咱们一步步地推导。其中,潮流模型推导所需要的储备知识包括但不限于:

  • 复数的概念以及复数的基本运算:幅值、相角、共轭等;
  • 凸集的概念
    • 判断模型是否非凸;
    • 模型变量的松弛;
    • 约束松弛——主要涉及二阶锥松弛。

本期推文中,潮流模型的主要推导过程为:

  • 建立潮流模型架构;
  • 列写支路潮流方程;
  • 对非凸潮流模型进行松弛 { 相 角 松 弛 非 凸 约 束 松 弛 \begin{cases}相角松弛\\非凸约束松弛\end{cases} {
  • 模型的适用条件。

Part 2 基于Distflow潮流模型的推导过程

电力系统最优潮流模型-架构

∑ i ∈ N c i p i g 最小化发电成本——针对发电机有功功率 s . t .   潮流方程 V i ‾ ≤ ∣ V i ∣ ≤ V i ‾ , ∀ i ∈ N 节点电压幅值约束 s i g ‾ ≤ s i g ≤ s i g ‾ , ∀ i ∈ N 发电机功率约束(包括有功和无功功率) ∣ I i j ∣ ≤ I i j ‾ , ∀ ( i , j ) ∈ E 线路电流幅值约束 \begin{aligned} & \sum_{i \in \mathcal{N}} c_{i}p_{i}^g \quad \text{最小化发电成本——针对发电机有功功率} \\ s.t.\ & \textbf{潮流方程} \\ & \underline{V_i} \leq | V_{i} | \leq \overline{V_i}, \forall i \in \mathcal{N} \quad \text{节点电压幅值约束} \\ & \underline{s_i^g} \leq s_i^g \leq \overline{s_i^g}, \forall i \in \mathcal{N} \quad \text{发电机功率约束(包括有功和无功功率)} \\ & | I_{i j}| \leq \overline{{I}_{i j}}, \forall(i, j) \in \mathcal{E} \quad \text{线路电流幅值约束} \end{aligned} s.t. iNcipig最小化发电成本——针对发电机有功功率潮流方程ViViVi,iN节点电压幅值约束sigsigsig,iN发电机功率约束(包括有功和无功功率)IijIij,(i,j)E线路电流幅值约束

说明:

  1. 除潮流方程外,所列出的电压、电流和发电机功率约束都是线性约束;
  2. s i g s_i^g sig是发电机发出的复功率,包括实部(有功功率)和虚部(无功功率)两部分,其表达式为: s i g = p i g + j q i g s_i^g=p_i^g+jq_i^g sig=pig+jqig
  3. p i g p_i^g pig为发电机功率 s i g s_i^g sig的实部,也就是有功功率,即: p i g = R e   s i g p_i^g= Re \ s_i^g pig=Re sig
  4. V i V_{i} Vi I i j I_{i j} Iij是电压和电流的向量,也就是说电压、电流由幅值 ∣ V i ∣ | V_{i} | Vi ∣ I i j ∣ | I_{i j}| Iij和相角 ∡ V i \measuredangle V_{i} Vi ∡ I i j \measuredangle I_{i j} Iij构成;
  5. 电流 I i j I_{i j} Iij是双向流动的,可以由节点 i i i 流向节点 j j j ( i → j i \rightarrow j ij),也可以由节点 j j j 流向节点 i i i ( j → i j \rightarrow i ji)。

支路潮流方程

支路示意图

声明:

  1. 假定输电线路不考虑并联支路,即:输电线路视为串联阻抗 z i j z_{i j} zij
  2. 规定由节点 i i i 流入节点 j j j 的方向为正方向;
  3. 节点 i i i 的注入功率等于发电机的发电功率减去负载功率,即: s i = s i g − s i c s_i=s_i^g-s_i^c si=sigsic
  4. s i s_i si 是节点的复功率,其中, p i p_i pi 为有功功率( p i = R e   s i p_i=Re\ s_i pi=Re si), q i q_i qi 为无功功率( q i = I m   s i q_i=Im\ s_i qi=Im si)
  5. s i c s_i^c sic 表示负载的复功率。
    在上述假设和声明的基础上,支路潮流方程包括:

V i − V j = z i j I i j , ∀ ( i , j ) ∈ E 电压方程/欧姆定律 S i j = V i I i j ∗ , ∀ ( i , j ) ∈ E 支路首端功率 ∑ k : j → k S j k − ∑ i : i → j ( S i j − z i j ∣ I i j ∣ 2 ) = s j , ∀ j ∈ N 节点功率平衡 \begin{aligned} & V_{i}-V_{j}=z_{i j}I_{i j}, \forall(i, j) \in \mathcal{E} \quad \text{电压方程/欧姆定律} \\ & S_{i j}=V_{i}I_{i j}^{*}, \forall(i, j) \in \mathcal{E} \quad \text{支路首端功率} \\ & \sum_{k: j \rightarrow k} S_{j k}-\sum_{i: i \rightarrow j} \left(S_{i j}-z_{i j}| I_{i j}|^2\right)=s_j, \forall j \in \mathcal{N} \quad \text{节点功率平衡} \end{aligned} ViVj=zijIij,(i,j)E电压方程/欧姆定律Sij=ViIij,(i,j)E支路首端功率k:jkSjki:ij(SijzijIij2)=sj,jN节点功率平衡

其中:

  1. I i j ∗ I_{i j}^{*} Iij 表示电流的共轭。(使用共轭电流的原因请参考《电路原理》中“正弦稳态电路的功率”等相关章节的内容)
  2. ∑ k : j → k S j k \sum_{k: j \rightarrow k} S_{j k} k:jkSjk 为从节点 j j j 流出到下游节点 k k k 的总功率(与节点 j j j 连接的下游支路可能不止一条,所以需要求和);
  3. ∑ i : i → j S i j \sum_{i: i \rightarrow j} S_{i j} i:ijSij为从节点 i i i 注入节点 j j j 的总功率(与节点 j j j 连接的上游支路可能不止一条,所以需要求和);
  4. z i j ∣ I i j ∣ 2 z_{i j}| I_{i j}|^2 zijIij2 是从节点 i i i 传输到节点 j j j 的支路功率损耗。

非凸最优潮流模型

m i n   ∑ i ∈ N c i p i g = ∑ i ∈ N c i ∗ R e ( s i + s i c ) 变量:  { S i j } , { I i j } , { V i } , { s i } s . t .   V i − V j = z i j I i j , ∀ ( i , j ) ∈ E S i j = V i I i j ∗ , ∀ ( i , j ) ∈ E ∑ k : j → k S j k − ∑ i : i → j ( S i j − z i j ∣ I i j ∣ 2 ) = s j , ∀ j ∈ N V i ‾ ≤ ∣ V i ∣ ≤ V i ‾ , ∀ i ∈ N s i g ‾ ≤ s i g ≤ s i g ‾ , ∀ i ∈ N ∣ I i j ∣ ≤ I i j ‾ , ∀ ( i , j ) ∈ E \begin{aligned} & min \ \sum_{i \in \mathcal{N}} c_{i}p_{i}^g=\sum_{i \in \mathcal{N}} c_{i}*Re(s_i+s_i^c) \\ & \text{变量:} \ \left\{S_{i j}\right\},\left\{I_{i j}\right\},\left\{V_{i}\right\},\left\{s_{i}\right\} \\ s.t.\ & V_{i}-V_{j}=z_{i j}I_{i j}, \forall(i, j) \in \mathcal{E} \\ & S_{i j}=V_{i}I_{i j}^{*}, \forall(i, j) \in \mathcal{E} \\ & \sum_{k: j \rightarrow k} S_{j k}-\sum_{i: i \rightarrow j} \left(S_{i j}-z_{i j}| I_{i j}\rvert^2\right)=s_j, \forall j \in \mathcal{N} \\ & \underline{V_i} \leq | V_{i} \rvert \leq \overline{V_i}, \forall i \in \mathcal{N} \\ & \underline{s_i^g} \leq s_i^g \leq \overline{s_i^g}, \forall i \in \mathcal{N} \\ & | I_{i j}\rvert \leq \overline{{I}_{i j}}, \forall(i, j) \in \mathcal{E} \end{aligned} s.t. min iNcipig=iNciRe(si+sic)变量: {Sij},{Iij},{Vi},{si}ViVj=zijIij,(i,j)ESij=ViIij,(i,j)Ek:jkSjki:ij(SijzijIij2)=sj,jNViViVi,iNsigsigsig,iNIijIij,(i,j)E

非线性项( V i I i j ∗ V_{i}I_{i j}^{*} ViIij z i j ∣ I i j ∣ 2 z_{i j}| I_{i j}|^2 zijIij2) 所导致的非凸约束包括:
S i j = V i I i j ∗ , ∀ ( i , j ) ∈ E ∑ k : j → k S j k − ∑ i : i → j ( S i j − z i j ∣ I i j ∣ 2 ) = s j , ∀ j ∈ N \begin{aligned} & S_{i j}=V_{i}I_{i j}^{*}, \forall(i, j) \in \mathcal{E} \\ & \sum_{k: j \rightarrow k} S_{j k}-\sum_{i: i \rightarrow j} \left(S_{i j}-z_{i j} | I_{i j}|^2\right)=s_j, \forall j \in \mathcal{N} \\ \end{aligned} Sij=ViIij,(i,j)Ek:jkSjki:ij(SijzijIij2)=sj,jN

支路潮流的松弛

支路潮流的相角松弛:OPF-ar
由于上述模型中存在非凸项,造成模型求解困难。为了方便现有商业求解器的求解,采用相角松弛的方法实现非凸约束的松弛。在松弛过程中所涉及的变量包括: { S i j } \left\{S_{i j}\right\} {Sij}, { I i j } \left\{I_{i j}\right\} {Iij}, { V i } \left\{V_{i}\right\} {Vi}, { s i } \left\{s_{i}\right\} {si}。通过去掉电流、电压的相角,保留幅值,并令 l i j = ∣ I i j ∣ 2 l_{i j}=| I_{i j}|^2 lij=Iij2, v i = ∣ V i ∣ 2 v_{i}=| V_{i}|^2 vi=Vi2 可得最优潮流模型所需变量: { P i j , Q i j } \left\{P_{i j},Q_{i j}\right\} {Pij,Qij}, { l i j } \left\{l_{i j}\right\} {lij}, { v i } \left\{v_{i}\right\} {vi}, { p i , q i } \left\{p_{i},q_{i}\right\} {pi,qi}

  1. 节点功率平衡约束(有功、无功)

{ 松弛前: ∑ k : j → k S j k − ∑ i : i → j ( S i j − z i j ∣ I i j ∣ 2 ) = s j , ∀ j ∈ N 松弛后: 有功:   p j = ∑ k : j → k P j k − ∑ i : i → j ( P i j − r i j l i j ) , ∀ j ∈ N 无功:   q j = ∑ k : j → k Q j k − ∑ i : i → j ( Q i j − x i j l i j ) , ∀ j ∈ N \left\{ \begin{array} {ll} &\text{松弛前:} &\sum_{k: j \rightarrow k} S_{j k}-\sum_{i: i \rightarrow j} \left(S_{i j}-z_{i j}| I_{i j}|^2\right)=s_j, \forall j \in \mathcal{N}\\ &\text{松弛后:}\\ && \textbf{有功:}\ p_{j}=\sum_{k: j \rightarrow k} P_{j k}-\sum_{i: i \rightarrow j} \left(P_{i j}-r_{i j}l_{i j}\right), \forall j \in \mathcal{N} \\ && \textbf{无功:}\ q_{j}=\sum_{k: j \rightarrow k} Q_{j k}-\sum_{i: i \rightarrow j} \left(Q_{i j}-x_{i j}l_{i j}\right), \forall j \in \mathcal{N} \end{array} \right. 松弛前:松弛后:k:jkSjki:ij(SijzijIij2)=sj,jN有功: pj=k:jkPjki:ij(Pijrijlij),jN无功: qj=k:jkQjki:ij(Qijxijlij),jN

  1. 支路首端功率的相角松弛
    S i j = V i I i j ∗ S_{i j}=V_{i}I_{i j}^* Sij=ViIij两侧取平方或者两侧各乘以共轭,去掉相角、保留幅值。其推导过程为:

  S i j = V i I i j ∗ 等式两侧乘以各自的共轭 ⇔   S i j S i j ∗ ⏟ S i j = P i j + j Q i j S i j ∗ = P i j − j Q i j = V i V i ∗ ⏟ ∣ V i ∣ 2 I i j ∗ I i j ⏟ ∣ I i j ∣ 2 ⇔   ( P i j + j Q i j ) ( P i j − j Q i j ) = ∣ V i ∣ 2 ⏟ v i ∣ I i j ∣ 2 ⏟ l i j ⇔   P i j 2 + Q i j 2 = v i l i j \begin{aligned} & \ S_{i j}=V_{i}I_{i j}^* \\ \text{等式两侧乘以各自的共轭} & \Leftrightarrow \ \underbrace{S_{i j}S_{i j}^*}_{ \begin{array}{l} & S_{i j}=P_{i j}+jQ_{i j}\\ & S_{i j}^*=P_{i j}-jQ_{i j} \end{array}} =\underbrace{V_{i}V_{i}^*}_{|V_{i}|^2}\underbrace{I_{i j}^*I_{i j}}_{|I_{i j}|^2} \\ \Leftrightarrow & \ (P_{i j}+jQ_{i j})(P_{i j}-jQ_{i j})=\underbrace{| V_{i}|^2}_{v_i}\underbrace{| I_{i j}|^2}_{l_{i j}} \\ \Leftrightarrow & \ P_{i j}^2+Q_{i j}^2=v_il_{i j} \end{aligned} 等式两侧乘以各自的共轭 Sij=ViIij Sij=Pij+jQijSij=PijjQij SijSij=Vi2 ViViIij2 IijIij (Pij+jQij)(PijjQij)=vi Vi2lij Iij2 Pij2+Qij2=vilij

首端功率表达式为:
{ 松弛前:  S i j = V i I i j ∗ 松弛后:  l i j = P i j 2 + Q i j 2 v i \left\{ \begin{array} {ll} & \text{松弛前:}\ &S_{i j}=V_{i}I_{i j}^*\\ & \text{松弛后:}\ &l_{i j}=\frac{P_{i j}^2+Q_{i j}^2}{v_i} \end{array} \right. {松弛前: 松弛后: Sij=ViIijlij=viPij2+Qij2

  1. 电压方程/欧姆定律
    S i j = V i I i j ∗ S_{i j}=V_{i}I_{i j}^* Sij=ViIij 带入 V i − V j = z i j I i j V_{i}-V_{j}=z_{i j}I_{i j} ViVj=zijIij 可得

V j = V i − z i j S i j ∗ V i ∗ \begin{aligned} V_{j}=V_{i}-z_{i j}\frac{S_{i j}^{*}}{V_{i}^{*}} \end{aligned} Vj=VizijViSij

等式两端各乘以自身的共轭,去掉相角可得:
v j = V j V j ∗ = ( V i − z i j S i j ∗ V i ∗ ) ( V i ∗ − z i j ∗ S i j V i ) = V i V i ∗ ⏟ v i − ( z i j ∗ S i j + z i j S i j ∗ ) ⏟ 两者相加,虚部抵消 + z i j z i j ∗ S i j S i j ∗ V i V i ∗ ⏟ I i j = S i j V i = v i − 2 R e ( z i j ∗ S i j ) + ∣ z i j ∣ 2 l i j = v i − 2 ( r i j P i j + x i j Q i j ) + ( r i j 2 + x i j 2 ) l i j \begin{aligned} v_{j}& =V_{j}V_{j}^*=(V_{i}-z_{i j}\frac{S_{i j}^{*}}{V_{i}^{*}})(V_{i}^*-z_{i j}^*\frac{S_{i j}}{V_{i}}) \\ & =\underbrace{V_{i}V_{i}^{*}}_{v_{i}}-\underbrace{(z_{i j}^{*}S_{i j}+z_{i j}S_{i j}^{*})}_\text{两者相加,虚部抵消}+ z_{i j}z_{i j}^* \underbrace{\frac{S_{i j}S_{i j}^{*}}{V_{i}V_{i}^{*}}}_{I_{i j}=\frac{S_{i j}}{V_{i}}} \\ & =v_{i}-2Re(z_{i j}^{*}S_{i j})+| z_{i j}|^2l_{i j} \\ & =v_{i}-2(r_{i j}P_{i j}+x_{i j}Q_{i j})+(r_{i j}^{2}+x_{i j}^{2})l_{i j} \end{aligned} vj=VjVj=(VizijViSij)(VizijViSij)=vi ViVi两者相加,虚部抵消 (zijSij+zijSij)+zijzijIij=ViSij ViViSijSij=vi2Re(zijSij)+zij2lij=vi2(rijPij+xijQij)+(rij2+xij2)lij
因此,电压平衡方程的表达式为:
{ 松弛前:  V i − V j = z i j I i j 松弛后:  v j = v i − 2 ( r i j P i j + x i j Q i j ) + ( r i j 2 + x i j 2 ) l i j \left\{ \begin{array} {ll} & \text{松弛前:}\ &V_{i}-V_{j}=z_{i j}I_{i j}\\ & \text{松弛后:}\ &v_{j}=v_{i}-2(r_{i j}P_{i j}+x_{i j}Q_{i j})+(r_{i j}^{2}+x_{i j}^{2})l_{i j} \end{array} \right. {松弛前: 松弛后: ViVj=zijIijvj=vi2(rijPij+xijQij)+(rij2+xij2)lij
相角松弛后的支路潮流模型:OPF-ar

因为该模型中,电压、电流相角( ∡ V i \measuredangle V_{i} Vi ∡ I i j \measuredangle I_{i j} Iij)可以取任意值,因此称之为相角松弛(Angle relaxation, ar)后的潮流模型:
m i n   ∑ i ∈ N c i ( p i + p i c ) 变量:  { P i j , Q i j } , { l i j } , { v i } , { p i , q i } s . t .   p j = ∑ k : j → k P j k − ∑ i : i → j ( P i j − r i j l i j ) , ∀ j ∈ N q j = ∑ k : j → k Q j k − ∑ i : i → j ( Q i j − x i j l i j ) , ∀ j ∈ N v j = v i − 2 ( r i j P i j + x i j Q i j ) + ( r i j 2 + x i j 2 ) l i j , ∀ ( i , j ) ∈ E l i j = P i j 2 + Q i j 2 v i , ∀ ( i , j ) ∈ E v i ‾ ≤ ∣ v i ∣ ≤ v i ‾ , ∀ i ∈ N p i g ‾ ≤ p i g ≤ p i g ‾ , ∀ i ∈ N q i g ‾ ≤ q i g ≤ q i g ‾ , ∀ i ∈ N l i j ≤ I i j ‾ , ∀ ( i , j ) ∈ E \begin{aligned} & min \ \sum_{i \in \mathcal{N}} c_{i}(p_i+p_i^c) \\ & \text{变量:} \ \left\{P_{i j}, Q_{i j}\right\},\left\{l_{i j}\right\},\left\{v_{i}\right\},\left\{p_{i}, q_{i}\right\} \\ s.t.\ & p_{j}=\sum_{k: j \rightarrow k} P_{j k}-\sum_{i: i \rightarrow j} \left(P_{i j}-r_{i j}l_{i j}\right), \forall j \in \mathcal{N} \\ & q_{j}=\sum_{k: j \rightarrow k} Q_{j k}-\sum_{i: i \rightarrow j} \left(Q_{i j}-x_{i j}l_{i j}\right), \forall j \in \mathcal{N} \\ & v_{j}=v_{i}-2(r_{i j}P_{i j}+x_{i j}Q_{i j})+(r_{i j}^{2}+x_{i j}^{2})l_{i j}, \forall(i, j) \in \mathcal{E} \\ & l_{i j}=\frac{P_{i j}^2+Q_{i j}^2}{v_i}, \forall(i, j) \in \mathcal{E} \\ & \underline{v_i} \leq | v_{i} | \leq \overline{v_i}, \forall i \in \mathcal{N} \\ & \underline{p_i^g} \leq p_i^g \leq \overline{p_i^g}, \forall i \in \mathcal{N} \\ & \underline{q_i^g} \leq q_i^g \leq \overline{q_i^g}, \forall i \in \mathcal{N} \\ & l_{i j} \leq \overline{{I}_{i j}}, \forall(i, j) \in \mathcal{E} \end{aligned} s.t. min iNci(pi+pic)变量: {Pij,Qij},{lij},{vi},{pi,qi}pj=k:jkPjki:ij(Pijrijlij),jNqj=k:jkQjki:ij(Qijxijlij),jNvj=vi2(rijPij+xijQij)+(rij2+xij2)lij,(i,j)Elij=viPij2+Qij2,(i,j)Evivivi,iNpigpigpig,iNqigqigqig,iNlijIij,(i,j)E

至此,非线性项( V i I i j ∗ V_{i}I_{i j}^{*} ViIij z i j ∣ I i j ∣ 2 z_{i j}| I_{i j}|^2 zijIij2) 所导致的三个非凸约束通过相角松弛变成了凸约束。然而,由于二次及二次以上的等式约束非凸,因此,等式约束 l i j = P i j 2 + Q i j 2 v i l_{i j}=\frac{P_{i j}^2+Q_{i j}^2}{v_i} lij=viPij2+Qij2 的存在导致模型非凸。

支路潮流的凸松弛:OPF-cr
由于 OPF-ar 中存在二次等式约束 l i j = P i j 2 + Q i j 2 v i l_{i j}=\frac{P_{i j}^2+Q_{i j}^2}{v_i} lij=viPij2+Qij2 ,导致模型非凸,为实现模型求解,需要进一步放大可行域。将该等式约束的 ′ = ′ '=' =松弛为 ′ ≥ ′ '\geq' 后(Convex relaxation, cr), l i j ≥ P i j 2 + Q i j 2 v i l_{i j}\geq\frac{P_{i j}^2+Q_{i j}^2}{v_i} lijviPij2+Qij2可以改写为旋转二阶锥规划(Second Order Cone Programming, SOCP)的形式:
  P i j 2 + Q i j 2 ≤ l i j v i ⇔   P i j 2 + Q i j 2 ≤ ( l i j + v i ) 2 − ( l i j − v i ) 2 4 ⇔   ( 2 P i j ) 2 + ( 2 Q i j ) 2 + ( l i j − v i ) 2 ≤ ( l i j + v i ) 2 ⇔   ∥ 2 P i j 2 Q i j l i j − v i ∥ 2 ≤ l i j + v i \begin{aligned} & \ P_{i j}^2+Q_{i j}^2\leq l_{i j}{v_i} \\ \Leftrightarrow & \ P_{i j}^2+Q_{i j}^2\leq \frac{\left(l_{i j}+{v_i}\right)^2-\left(l_{i j}-{v_i}\right)^2}{4} \\ \Leftrightarrow & \ \left(2P_{i j}\right)^2+\left(2Q_{i j}\right)^2+\left(l_{i j}-{v_i}\right)^2\leq \left(l_{i j}+{v_i}\right)^2 \\ \Leftrightarrow &\ \begin{Vmatrix} 2 P_{i j} \\ 2 Q_{i j} \\ l_{i j}-v_{i} \end{Vmatrix}_{2} \leq l_{ij}+v_{i} \end{aligned}  Pij2+Qij2lijvi Pij2+Qij24(lij+vi)2(lijvi)2 (2Pij)2+(2Qij)2+(lijvi)2(lij+vi)2 2Pij2Qijlijvi2lij+vi
其中, ∣ ∣ ∙ ∣ ∣ 2 ||{\bullet}||_2 2表示 ∙ {\bullet} 的二范数。松弛后的表达式可以用商业求解器 (Cplex、Gurobi等) 实现OPF模型的求解。

小结——模型的适用条件

  1. 该模型适用于辐射状网络(radial networks),对于环状网络(mesh networks)不一定适用,需要加装移项变压器;
  2. 二阶锥松弛是紧的,具体证明请见文章:Branch Flow Model: Relaxations and Convexification—Part I & II。

作者| 雷克波、李同学
审核| 雷克波、李同学
校正| 丁同学
欢迎大家关注公众号获取最新资讯

参考资料

  1. 北京交通大学许寅老师的教学视频(第3讲-锥规划及其在能源系统优化中的应用 Part I)
  2. Farivar M , Low S H . Branch Flow Model: Relaxations and Convexification—Part I & II [J]. IEEE Transactions on Power Systems, 2013.

往期内容回顾

9. 火电机组经济调度建模及求解——基础篇
8. Python|Gurobi——零基础学优化建模-终章
7. Python|Gurobi——零基础学优化建模-压轴篇:多目标优化
6. Python|Gurobi——零基础学优化建模-分段模型线性化(PWL)
5. Python|Gurobi——零基础学优化建模-QCP
4. Python|Gurobi——零基础学优化建模-NLP
3. Python|Gurobi——零基础学优化建模-MIP
2. Python|Gurobi——零基础学优化建模-LP
1. Python|Gurobi——零基础学优化建模

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Distflow的最优潮流模型(OPF)--模型推导篇 的相关文章

  • 数据标准详细概述-2022

    1 数据标准的是什么 在实际的工作生产中 我们一般会参照国家标准 地方标准 行业标准等来进行具体的活动 来确保我们生成过程符合监管要求 便于上下游协同等 于是我们会见到如下的标准指导文件 同样 数据标准也会以文件的形式存在 在除了国标 行标
  • 数仓建模宽表设计

    一 宽表的设计 其实宽表是数仓里面非常重要的一块 前面我们介绍过了维度表事实表 今天我们介绍一下宽表 前面我们说过了数仓是分层的 这是技术进步和时代变化相结合的产物 数仓的分层式为了更好地管理数仓以及更加高效地进行数据开发 宽表主要出现在d
  • 数据仓库建模方法与建模案例

    1 数据仓库建模的目的是什么 2 常见的数据建模方法有哪些 3 常见的建模工具有哪些 1 数据仓库建模的目的 为什么要进行数据仓库建模 大数据的数仓建模是通过建模的方法更好的组织 存储数据 以便在 性能 成本 效率和数据质量之间找到最佳平衡
  • SSAS的入门介绍

    一 是什么 SSAS是用于SQLServer数据库用于BI的组件 通过SSAS可以创建多维数据库 并在之上进行数据挖掘操作 本文我们主要介绍一些关于SSAS数据分析的知识 接下来就让我们来一起了解一下吧 商业智能提供的解决方案能够从多种数据
  • 数仓建设-架构&建模

    目录 一 架构篇 1 1 企业架构 1 2 数据平台架构 二 建模篇 2 1 FS LDM 2 2 数据模型概念 2 2 1 概念 2 2 2 数据模型三要素 2 2 3 数据模型分类 以旅客身份识别为例 2 3 维度建模工作过程 2 3
  • 高性能Spark作业调优

    在大数据计算领域 Spark已经成为了越来越流行 越来越受欢迎的计算平台之一 Spark的功能涵盖了大数据领域的离线批处理 SQL类处理 流式 实时计算 机器学习 图计算等各种不同类型的计算操作 应用范围与前景非常广泛 在美团点评 已经有很
  • SaaS 系统完全开源介绍

    平台简介 芋道 以开发者为中心 打造中国第一流的快速开发平台 全部开源 个人与企业可 100 免费使用 架构图 管理后台的 Vue3 版本采用 vue element plus admin Vue2 版本采用 vue element adm
  • 数据仓库主题九-(事务事实表)

    事务事实表 对于单事务事实表 一个业务过程建立一个事实表 只反映一个业务过程的事实 对于多事务事实表 在同一个事实表中反映多个业务过程 多个业务过程是否放到同一个事实表中 订单作为交易行为的核心载体 直接反应了交易的状况 订单的流转回产生很
  • 如何设计一个数据库

    前言 我们知道 软件工程是为了解决软件危机的 它是采用工程的概念 原理 技术和方法来开发与维护软件 把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来 在软件开发的过程中 数据库设计是非常重要的 它需要根据需求分析设抽
  • 听说渲影很便宜,是真的吗?

    这次我比较了3个平台 炫云 渲影和渲染100 首先说结论 渲影是很便宜 但也没便宜过渲染100 而且出图大小有猫腻 具体的往下看 首先我选取了一个219M的场景 不是很大 设置的分辨率是3200 4000 提交3个平台的时候选择的参数也一样
  • 原子指标和衍生/派生指标

    按照个人的理解 不加任何修饰词的指标就是原子指标 也叫度量 一般存在于olap表中 例如订单量 用户量的等等 而在原子指标上进行加减乘除或者修饰词的限定等等都是派生指标 衍生 派生指标 原子指标 时间周期 修饰词 例如 近7天订单量 近7天
  • 阿里大数据之路:数据模型篇大总结

    第1章 大数据领域建模综 1 1 为什么需要数据建模 有结构地分类组织和存储是我们面临的一个挑战 数据模型强调从业务 数据存取和使用角度合理存储数据 数据模型方法 以便在性能 成本 效率之间取得最佳平衡 成本 良好的数据模型能极大地减少不必
  • 大数据开发:数仓建模常见数据模型

    在数据仓库搭建的过程当中 根据需求合理地选择数据模型 是非常关键的一个环节 对于数仓建模 很多人说不就是建表吗 哪有那么复杂 事实上 这是非常错误的思想 今天的大数据开发分享 我们来聊聊数仓建模常见的几种数据模型 目前来说 市场上主流的数据
  • 10道海量数据处理

    1 海量日志数据 提取出某日访问百度次数最多的那个IP 此题 在我之前的一篇文章算法里头有所提到 当时给出的方案是 IP的数目还是有限的 最多2 32个 所以可以考虑使用hash将ip直接存入内存 然后进行统计 再详细介绍下此方案 首先是这
  • 数据仓库模型设计V2.0

    一 数仓建模的意义 数据模型就是数据组织和存储方法 它强调从业务 数据存取和使用角度合理存储数据 只有将数据有序的组织和存储起来之后 数据才能得到高性能 低成本 高效率 高质量的使用 高性能 良好的数据模型能够帮助我们快速查询所需要的数据
  • 基于宽表的数据建模

    一 业务背景 1 1 数据建模现状 互联网企业往往存在多个产品线 每天源源不断产出大量数据 这些数据服务于数据分析师 业务上的产品经理 运营 数据开发人员等各角色 为了满足这些角色的各种需求 业界传统数仓常采用的是经典分层模型的数仓架构 从
  • 第四讲 系统建模方法

    系统建模一般流程 实际系统的分析方法大致类似 但对于实际系统的模型实现方式则有多种 1 面向方程 图框 的因果建模 基于图框进行系统模型实现 的软件很多 如Simulink AMESim 应用于控制领域 等 2 面向对象 非因果 的物理建模
  • 2022年第十四届电工杯赛题分析

    作为2022年上半年最后一场建模比赛的电工杯 为期72个小时 在众多建模比赛中 电工杯属于难度大 比赛时间短 知名度大的比赛 在我个人看来 电工杯可以作为美赛国赛之下第二梯队建模比赛里的头号比赛 因此 为了更好选题比赛 本次比赛我将在本篇文
  • 模型调参之网格搜索与随机搜索

    模型调参之网格搜索与随机搜索 网格搜索法 GridSearchCV GridSearchCV GridSearchCV可以拆分成GridSearch和CV两部分 即网格搜素和交叉验证 GridSearch系统地遍历多种参数组合 通过交叉验证
  • 数据湖--概念、特征、架构与案例概述

    一 什么是数据湖 数据湖是目前比较热的一个概念 许多企业都在构建或者计划构建自己的数据湖 但是在计划构建数据湖之前 搞清楚什么是数据湖 明确一个数据湖项目的基本组成 进而设计数据湖的基本架构 对于数据湖的构建至关重要 关于什么是数据湖 有如

随机推荐

  • c语言中%s的用法

    转自 https www pinlue com article 2020 03 3100 5310073904413 html C语言是计算机软件领域非常经典的编程语言 unix linux等众多操作系统均是由C语言编写而成 而在硬件控制
  • Vulkan下多线程渲染设计

    1 Vulkan 视角下的多线程渲染 首先我们需要从vulkan api的顶层框架上来看一下 它在哪些地方可以让我们并行 Vulkan API的基本框架 Vulkan不同于Gles只有一个 不被API暴露出来的 单一链条的cmdbuffer
  • java设计模式——解释器模式(Interpreter Pattern)

    概述 解释器模式是一种使用频率相对较低但学习难度较大的设计模式 它用于描述如何使用面向对象语言构成一个简单的语言解释器 在某些情况下 为了更好地描述某一些特定类型的问题 我们可以创建一种新的语言 这种语言拥有自己的表达式和结构 即文法规则
  • mac安装python3.6

    1 查看本机默认安装环境 通过uname a 查看系统位数 x86 64代表64位 使用python命令查看系统默认版本 OSX默认安装2 7 10 系统很多lib都是基于python2 7 因此还是不要卸载 2 下载python3 6 h
  • [255]如何查找Linux服务器上JDK安装路径?

    成功远程到你要部署软件的Linux服务器上 这是第一步 查看JDK版本 java version 查看java执行路径 which java 查看JAVA HOME路径 echo JAVA HOME 插卡PATH内容 echo PATH 想
  • java实现电子发票中的发票税号等信息识别的几种可用方案

    先说一下背景 今天领导突然说需要做一个电子发票中发票税号的识别 于是乎就开始去调研看有哪些方案 最先想到的就是OCR文字识别 自己去画框训练模型去识别税号等相关信息 话不多说开整思路 思路一 百度AI平台去直接调用 思路二 自己基于模型训练
  • Ubuntu /Window下 X2Go 安装&连接&同步/上传文件夹:复制、粘贴、桌面共享

    Ubuntu Window下X2Go安装 连接 同步 上传文件夹 一次性成功 X2Go 的优点 双向粘贴板 安装 就可使用 文件夹共享 在某些 linux发行版上 由于依赖包问题 解决起来麻烦 在 错误新题提示 在服务器端 为隐藏文件 在客
  • C语言中,变量的按作用域角度分类的几种情况

    c语言中 变量按作用域角度分 分为局部变量和全局变量 1 局部变量是在一个函数内部或一个代码块中定义的变量 只能在被函数和代码块范围内有效 如 void test int b 20 b是一个局部变量 在test函数内有效 int main
  • OSPF实验报告

    一 划分网段 将192 168 1 0 24划分为 192 168 1 0 26 192 168 1 128 26 192 168 1 64 26 192 168 1 192 26 二 添加ip地址 将192 168 1 0 26划分为网络
  • 蓝桥杯 调手表【第九届】【决赛】【B组】

    比较简单的题 看到网上题解基本都是bfs解法 发个贪心解法记录一下 include
  • VSCode格式化XML

    VSCode格式化XML 文章目录 VSCode格式化XML 1 结果展示 2 插件 notepad 自带的xml插件不是很好用 显示xml树的插件经常失灵 尝试在VSCode上找到了一些插件 很好的解决了XML的格式化和XML节点显示的问
  • 【华为OD机试真题 Python】数组二叉树

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • HashMap底层原理分析(结合面试问题分析)

    1 为什么HashMap底层数组的容量总是2的幂次方 答 因为hashmap的底层在计算一个entry存放在数组中的索引值的时候 采用哈希值运算 如果经过哈希算法得到的一个哈希值h的后面的二进制表示为 0101 0101 此时的数组的长度l
  • 软件构造总结笔记

    软件构造总结笔记 本笔记依据考试大纲 调整课堂讲义的分点 以知识点分化作为条理 精简原本人课堂笔记 进行总结 GitHub仓库资源 gzn00417 2020Spring Software Construction 文章目录 软件构造总结笔
  • 记一次某src得子域名接管漏洞挖掘

    如下案例是fofa找的 在火线资产里直接搜索关键词html noSuchbucket 可以看到显示如下信息
  • 无损剪切音视频文件的跨平台工具: LosslessCut

    mifi lossless cut Stars 17 3k License GPL 2 0 LosslessCut是一款跨平台的FFmpeg GUI工具 它可以对视频 音频和字幕等相关媒体文件进行快速无损操作 该软件最主要的功能是无损剪切和
  • 初识网络原理

    确定不来看看新出炉的知识 目录 1 网络互连 1 1局域网 1 2广域网 2 网络通信基础 2 1IP地址 2 2端口号 3 认识协议 3 1五元组 3 2协议分层 3 3OSI 7层模型 3 4TCP IP5层 或5层 模型 3 5网络设
  • 请求参数默认值多种实现方式

    文章目录 1 直接赋值 2 使用切面实现默认值 自定义注解 切面类 控制层使用 效果展示 3 使用过滤器Filter实现 自定义请求体 自定义过滤器 1 直接赋值 当前页码 private int pageNum 1 每页条数 privat
  • idea快速清理无效类文件

    1 右击选中的项目 如下图所示 2 在弹出框中输入 unused declaration点击选择 如下图所示 3 弹出如下图所示 点击ok 此时需要一段时间 4 结果如下图所示 5 此时 一个个选中 然后双击 有4种处理模式 如下图所示 S
  • 基于Distflow的最优潮流模型(OPF)--模型推导篇

    开篇 前言 自打上期内容火电机组经济调度建模及求解 基础篇推出以后 有小伙伴留言 不考虑潮流问题的经济调度都是耍流氓 作为一个有文化的流氓 我们尝试着为大家科普潮流计算 对于电力系统而言 潮流计算是一个非常复杂且重要内容 如果我们推文中有什