⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_flows.m

📁 基于PSAT 软件的多目标最优潮流计算用于中小型电力系统的分析和管理
💻 M
📖 第 1 页 / 共 2 页
字号:
function [Fij, Jij, Hij, Fji, Jji, Hji] = fm_flows(type, mu1, mu2)% FM_FLOWS compute current, active power and apparent power flow%          in transmission lines and the associated Jacobian and%          Hessian matrices%%[FIJ, JIJ, HIJ, FJI, JJI, HJI] = FM_FLOWS(TYPE,MU1,MU2)%% TYPE -> type of flows computations: (1) current flows%                                     (2) active power flows%                                     (3) apparent power flows%% MU1 -> column vector (Line.n,1) of Lagrangian multipliers for (i->j)% MU2 -> column vector (Line.n,1) of Lagrangian multipliers for (j->i)%% FIJ -> column vector (Line.n,1) of flows from bus "i" to bus "j"% JIJ -> Jacobian matrix (Line.n,Bus.n) from bus "i" to bus "j"% HIJ -> Hessian matrix (Bus.n,Bus.n) from bus "i" to bus "j"%% FJI -> column vector (Line.n,1) of flows from bus "j" to bus "i"% JJI -> Jacobian matrix (Line.n,Bus.n) from bus "j" to bus "i"% HJI -> Hessian matrix (Bus.n,Bus.n) from bus "j" to bus "i"%%Author:    Federico Milano%Date:      11-Nov-2002%Version:   1.0.0%%E-mail:    fmilano@thunderbox.uwaterloo.ca%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano%% Copyright (C) 2002-2006 Federico Milanoglobal Line Bus DAE jay% ==========================================================================% line flow solution% ==========================================================================tps = Line.con(:,11).*exp(jay*Line.con(:,12)*pi/180);VV = DAE.V.*exp(jay*DAE.a);r = Line.con(:,8);rx = Line.con(:,9);chrg = Line.con(:,10)/2;z = r + jay*rx;y = 1./z;g = real(y);b = imag(y);nl = [1:Line.n];switch type case 1  % ========================================================================  % AC Current Flows, Jacobian and Hessian  % ========================================================================  Fij = ((VV(Line.from) - tps.*VV(Line.to)).*y + ...         VV(Line.from).*(jay*chrg))./(tps.*conj(tps));  Fij = abs(Fij).^2;  Fji = (VV(Line.to) - VV(Line.from)./tps).*y + VV(Line.to).*(jay*chrg);  Fji = abs(Fji).^2;  ati = imag(tps);  atr = real(tps);  cij = cos(DAE.a(Line.from)-DAE.a(Line.to));  sij = sin(DAE.a(Line.from)-DAE.a(Line.to));  g2 = g.^2;  b2 = b.^2;  at1 = ati.^2+atr.^2;  at2 = at1.*at1;  Vij = DAE.V(Line.from).*DAE.V(Line.to);  Vi = DAE.V(Line.from);  Vj = DAE.V(Line.to);  a1 = at1.*ati.*b.*chrg;                  a2 = ati.*g2;  a3 = at1.*atr.*g.*chrg;                  a4 = atr.*g2;  a5 = at1.*ati.*g.*chrg;                  a6 = atr.*b2;  a7 = at1.*atr.*b.*chrg;                  a8 = ati.*b2;  c1 = a4+a5+a6+a7;                   c2 = a1+a2-a3+a8;  c3 = a1+a2+a3+a8;                   c4 = a4-a5+a6+a7;  d1 = 2*((at1.*chrg+b).^2+g2)./at2;       d2 = 2*at1.*(b2+g2)./at2;  d4 = 2*((at1.*chrg+b).^2+g2)./at1;       d3 = 2*(g2+b2)./at1;  e1 = 2*(c2.*sij+c1.*cij)./at2;      e2 = 2*(c2.*cij-c1.*sij)./at2;  e3 = 2*(c3.*sij+c4.*cij)./at1;      e4 = 2*(c3.*cij-c4.*sij)./at1;  Jij = [sparse(nl,Line.from,-Vij.*e2,Line.n,Bus.n) + ...         sparse(nl,Line.to,   Vij.*e2,Line.n,Bus.n), ...         sparse(nl,Line.from, Vi.*d1 - Vj.*e1,Line.n,Bus.n) + ...         sparse(nl,Line.to,   Vj.*d2 - Vi.*e1,Line.n,Bus.n)];  Jji = [sparse(nl,Line.from,-Vij.*e4,Line.n,Bus.n) + ...         sparse(nl,Line.to,   Vij.*e4,Line.n,Bus.n), ...         sparse(nl,Line.from, Vi.*d3 - Vj.*e3,Line.n,Bus.n) + ...         sparse(nl,Line.to,   Vj.*at1.*d4 - Vi.*e3,Line.n,Bus.n)];  a1 =  mu1.*Vij.*e1;  a2 = -mu1.*Vj.*e2;  a3 = -mu1.*Vi.*e2;  a4 =  mu1.*d1;  a5 = -mu1.*e1;  a6 =  mu1.*d2;  Hij = [sparse(Line.from, Line.from, a1, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -a1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-a1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   a1, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, a2, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   a3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-a2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,  -a3, Bus.n, Bus.n); ...         sparse(Line.from, Line.from, a2, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -a2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, a3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,  -a3, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, a4, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   a5, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, a5, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   a6, Bus.n, Bus.n)];  a1 =  mu2.*Vij.*e3;  a2 = -mu2.*Vj.*e4;  a3 = -mu2.*Vi.*e4;  a4 =  mu2.*d3;  a5 = -mu2.*e3;  a6 =  mu2.*d4.*at1;  Hji = [sparse(Line.from, Line.from, a1, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -a1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-a1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   a1, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, a2, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   a3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-a2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,  -a3, Bus.n, Bus.n); ...         sparse(Line.from, Line.from, a2, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -a2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, a3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,  -a3, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, a4, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   a5, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, a5, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   a6, Bus.n, Bus.n)]; case 2  % ========================================================================  % AC active power flows in each line from bus i to bus j  % ========================================================================  Fij = VV(Line.from).*conj(((VV(Line.from) - tps.*VV(Line.to)).*y + ...                             VV(Line.from).*(jay*chrg))./(tps.*conj(tps)));  Fij = real(Fij).^2;  Fji = VV(Line.to).*conj((VV(Line.to) - VV(Line.from)./tps).*y ...                          + VV(Line.to).*(jay*chrg));  Fji = real(Fji).^2;  ati = imag(tps);  atr = real(tps);  cji = cos(DAE.a(Line.to)-DAE.a(Line.from));  sji = sin(DAE.a(Line.to)-DAE.a(Line.from));  g2 = g.^2;                         b2 = b.^2;  at2 = ati.^2+atr.^2;               at4 = at2.^2;  a1 = atr.*b.*cji;        a2 = atr.*g.*sji;  a3 = ati.*b.*sji;        a4 = ati.*g.*cji;  a5 = atr.*b.*sji;        a6 = atr.*g.*cji;  a7 = ati.*b.*cji;        a8 = ati.*g.*sji;  Vij = DAE.V(Line.from).*DAE.V(Line.to);  Vi2 = DAE.V(Line.from).^2;       Vj2 = DAE.V(Line.to).^2;  Vi3 = DAE.V(Line.from).*Vi2;     Vj3 = DAE.V(Line.to).*Vj2;  v1 = Vi2.*Vj2;  v2 = Vi3.*DAE.V(Line.to);        v3 = Vj3.*DAE.V(Line.from);  v4 = Vi2.*DAE.V(Line.to);        v5 = Vj2.*DAE.V(Line.from);  B1 = -a1 - a2 + a3 - a4;        B2 =  a5 - a6 + a7 + a8;  B3 = -a5 - a6 - a7 + a8;        B4 = -a1 + a2 + a3 + a4;  C1 = B1.*B1;        C2 = B2.*B2;  C3 = B1.*B2;        C4 = B3.*B3;  C5 = B4.*B4;        C6 = B3.*B4;  C7 = B1.*g;         C8 = B2.*g;  C9 = B3.*g.*at2;    C0 = B4.*g.*at2;  Jij = [sparse(nl,Line.from, 2*(v1.*C3+v2.*C7)./at4,Line.n,Bus.n) + ...         sparse(nl,Line.to,  -2*(v1.*C3+v2.*C7)./at4,Line.n,Bus.n), ...         sparse(nl,Line.from, 2*(3*v4.*C8+v5.*C2+2*Vi3.*g2)./at4,Line.n,Bus.n) + ...         sparse(nl,Line.to,   2*(v4.*C2+Vi3.*C8)./at4,Line.n,Bus.n)];  Jji = [sparse(nl,Line.from,-2*(v1.*C6+v3.*C0)./at4,Line.n,Bus.n) + ...         sparse(nl,Line.to,   2*(v1.*C6+v3.*C0)./at4,Line.n,Bus.n), ...         sparse(nl,Line.from, 2*(v5.*C4+Vj3.*C9)./at4,Line.n,Bus.n) + ...         sparse(nl,Line.to,   2*(3*v5.*C9+v4.*C4+2*Vj3.*g2.*at4)./at4,Line.n,Bus.n)];  k1 = 2*mu1./at4;        k2 = 2*mu2./at4;  D1 =  (v1.*(C1-C2)-v2.*C8).*k1;  E1 =  (v1.*(C5-C4)-v3.*C9).*k2;  D2 =  (3*v4.*C7 + 2*v5.*C3).*k1;  E2 =  (3*v5.*C0 + 2*v4.*C6).*k2;  D3 =  (Vi3.*C7 + 2*v4.*C3).*k1;  E3 =  (Vj3.*C0 + 2*v5.*C6).*k2;  D4 =  (3*Vi2.*C8+2*Vij.*C2).*k1;  E4 =  (3*Vj2.*C9+2*Vij.*C4).*k2;  D5 =  (Vi2.*C2).*k1;  E5 =  (Vj2.*C4).*k2;  D6 =  (6*Vij.*C8+6*Vi2.*g2+Vj2.*C2).*k1;  E6 =  (6*Vij.*C9+6*Vj2.*g2.*at4+Vi2.*C4).*k2;  Hij = [sparse(Line.from, Line.from, D1, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -D1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-D1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   D1, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, D2, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   D3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-D2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,  -D3, Bus.n, Bus.n); ...         sparse(Line.from, Line.from, D2, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -D2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, D3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,  -D3, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, D6, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   D4, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, D4, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   D5, Bus.n, Bus.n)];  Hji = [sparse(Line.from, Line.from, E1, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -E1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-E1, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   E1, Bus.n, Bus.n), ...         sparse(Line.from, Line.from,-E3, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,  -E2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, E3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   E2, Bus.n, Bus.n); ...         sparse(Line.from, Line.from,-E3, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   E3, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from,-E2, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   E2, Bus.n, Bus.n), ...         sparse(Line.from, Line.from, E5, Bus.n, Bus.n) + ...         sparse(Line.from, Line.to,   E4, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.from, E4, Bus.n, Bus.n) + ...         sparse(Line.to,   Line.to,   E6, Bus.n, Bus.n)]; case 3  % ========================================================================  % AC apparent power flows  % ========================================================================  %Fij2 = VV(Line.from).*conj(((VV(Line.from) - tps.*VV(Line.to)).*y + ...  %                           VV(Line.from).*(jay*chrg))./(tps.*conj(tps)));  %Fij2 = abs(Fij2).^2;  %Fji2 = VV(Line.to).*conj((VV(Line.to) - VV(Line.from)./tps).*y + ...  %                        VV(Line.to).*(jay*chrg));  %Fji2 = abs(Fji2).^2;  i = Line.from;  j = Line.to;  cij = cos(DAE.a(i)-DAE.a(j));  sij = sin(DAE.a(i)-DAE.a(j));  conjy = conj(y);  conjt = conj(tps);  tps2 = abs(tps).^2;  ya = conjy.*conjt./tps2;  yb = conjy./conjt;  yj = conjy-jay*chrg;  yi = yj./tps2;  ga = real(ya);  ba = imag(ya);  gb = real(yb);  bb = imag(yb);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -