luojinwen 发表于 2010-10-28 11:34:36

IEEE14节点潮流程序

clear
r(14,10)=0.01938;x(14,10)=0.05917;r(10,11)=0.04699;x(10,11)=0.19797;r(10,1)=0.05811;x(10,1)=0.17632;r(14,2)=0.05403;x(14,2)=0.22304;r(10,2)=0.05695;x(10,2)=0.17388;
r(10,14)=0.01938;x(10,14)=0.05917;r(11,10)=0.04699;x(11,10)=0.19797;r(1,10)=0.05811;x(1,10)=0.17632;r(2,14)=0.05403;x(2,14)=0.22304;r(2,10)=0.05695;x(2,10)=0.17388;
r(11,1)=0.06701;x(11,1)=0.17103;r(1,2)=0.01335;x(1,2)=0.04211;r(2,12)=0.00000;x(2,12)=0.23488;r(1,3)=0.00000;x(1,3)=0.20452;r(3,13)=0.00000;x(3,13)=0.17615;
r(1,11)=0.06701;x(1,11)=0.17103;r(2,1)=0.01335;x(2,1)=0.04211;r(12,2)=0.00000;x(12,2)=0.23488;r(3,1)=0.00000;x(3,1)=0.20452;r(13,3)=0.00000;x(13,3)=0.17615;
r(1,4)=0.00000;x(1,4)=0.53894;r(3,4)=0.00000;x(3,4)=0.11001;r(4,5)=0.03181;x(4,5)=0.08450;r(12,6)=0.09498;x(12,6)=0.19890;r(12,7)=0.12291;x(12,7)=0.25581;
r(4,1)=0.00000;x(4,1)=0.53894;r(4,3)=0.00000;x(4,3)=0.11001;r(5,4)=0.03181;x(5,4)=0.08450;r(6,12)=0.09498;x(6,12)=0.19890;r(7,12)=0.12291;x(7,12)=0.25581;
r(12,8)=0.06615;x(12,8)=0.13027;r(4,9)=0.12711;x(4,9)=0.27038;r(5,6)=0.08205;x(5,6)=0.19207;r(7,8)=0.22092;x(7,8)=0.19988;r(8,9)=0.17093;x(8,9)=0.34802;
r(8,12)=0.06615;x(8,12)=0.13027;r(9,4)=0.12711;x(9,4)=0.27038;r(6,5)=0.08205;x(6,5)=0.19207;r(8,7)=0.22092;x(8,7)=0.19988;r(9,8)=0.17093;x(9,8)=0.34802;

y(14,10)=0.02640;y(10,11)=0.02190;y(10,1)=0.01870;y(14,2)=0.02460;y(10,2)=0.01700;y(11,1)=0.01730;y(1,2)=0.00640;y(2,12)=-0.31063;y(1,3)=-0.10999;y(1,4)=-0.05936;
y(10,14)=0.02640;y(11,10)=0.02190;y(1,10)=0.01870;y(2,14)=0.02460;y(2,10)=0.01700;y(1,11)=0.01730;y(2,1)=0.00640;y(12,2)=0.28951;y(3,1)=0.10757;y(4,1)=0.05752;

for m=1:14
    t(m)=0;
    for n=1:14
      t(m)=t(m)+y(m,n);
    end
    if m==4
      t(m)=t(m)+0.190;
    end
end
for m=1:14
    d(m)=0;
    for n=1:14
      if m==n
            
      elseif (r(m,n)==0)&(x(m,n)==0)
         d(m)=d(m)+0;
      else
         d(m)=d(m)+1/(r(m,n)+j*x(m,n));   
      end
    end
end
for m=1:14
    for n=1:14
      if m==n
         Y(m,n)=j*t(m)+d(m);
      elseif (r(m,n)==0)&(x(m,n)==0)
         Y(m,n)=0;
      else
         Y(m,n)=-1/(r(m,n)+j*x(m,n));
      end
    end
end
Y;
G=real(Y);B=imag(Y);
%给定节点电压初值和循环次数k=0
delt(10)=0;delt(11)=0;u(1)=1.0;delt(1)=0;u(2)=1.0;delt(2)=0;delt(12)=0;u(3)=1.0;delt(3)=0;delt(13)=0;u(4)=1.0;delt(4)=0;u(5)=1.0;delt(5)=0;u(6)=1.0;delt(6)=0;u(7)=1.0;delt(7)=0;u(8)=1.0;delt(8)=0;u(9)=1.0;delt(9)=0;
p(10)=0.183;p(11)=-0.942;p(1)=-0.478;q(1)=0.039;p(2)=-0.076;q(2)=-0.016;p(12)=-0.112;p(3)=0;q(3)=0;p(13)=0;p(4)=-0.295;p(5)=-0.09;q(5)=-0.058;p(6)=-0.035;q(6)=-0.018;p(7)=-0.061;q(7)=-0.016;p(8)=-0.135;q(8)=-0.058;p(9)=-0.149;q(9)=-0.05;
k=0;precision=1;N1=13;
%求节点功率的不平衡量�6�2P和�6�2Q
while precision>0.00001
u(10)=1.0450;u(11)=1.01;u(12)=1.07;u(13)=1.09;u(14)=1.06;delt(14)=0;q(4)=-0.166+(u(4))^2*0.190;
   for m=1:N1   
         if m<=9
             for n=1:N1+1
pt(n)=u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
qt(n)=u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));   
             end
             pp(m)=p(m)-sum(pt);qq(m)=q(m)-sum(qt);
         else
             for n=1:N1+1
f(n)=u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
             end
             pp(m)=p(m)-sum(f);qq(m)=0;
         end      
   end
%计算雅克比矩阵各元素
for m=1:N1
    for n=1:N1+1
         h0(n)=u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));
         n0(n)=-u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
         j0(n)=-u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
         L0(n)=-u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));
    end
    if m<=9
H(m,m)=sum(h0)- u(m)*u(m)*(G(m,m)*sin(delt(m)-delt(m))-B(m,m)*cos(delt(m)-delt(m)));
N(m,m)=sum(n0)-2*u(m)^2*G(m,m)+u(m)*u(m)*(G(m,m)*cos(delt(m)-delt(m))+B(m,m)*sin(delt(m)-delt(m)));
J(m,m)=sum(j0)+u(m)*u(m)*(G(m,m)*cos(delt(m)-delt(m))+B(m,m)*sin(delt(m)-delt(m)));
L(m,m)=sum(L0)+2*u(m)^2*B(m,m)+u(m)*u(m)*(G(m,m)*sin(delt(m)-delt(m))-B(m,m)*cos(delt(m)-delt(m)));
    else
H(m,m)=sum(h0)- u(m)*u(m)*(G(m,m)*sin(delt(m)-delt(m))-B(m,m)*cos(delt(m)-delt(m)));
N(m,m)=0;
J(m,m)=0;
L(m,m)=0;
    end
end
for m=1:N1
    JJ(2*m-1,2*m-1)=H(m,m);JJ(2*m-1,2*m)=N(m,m);
    JJ(2*m,2*m-1)=J(m,m);JJ(2*m,2*m)=L(m,m);
end

for m=1:N1
    for n=1:N1   
      if   (m<=9)&(n<=9)&(m~=n)                     
H(m,n)= -u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));
J(m,n)=u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
N(m,n)=-J(m,n);L(m,n)=H(m,n);
JJ(2*m-1,2*n-1)=H(m,n);JJ(2*m-1,2*n)=N(m,n);
JJ(2*m,2*n-1)=J(m,n);JJ(2*m,2*n)=L(m,n);
      elseif ((m==10)&(n<10))|((m==11)&(n<10))|((m==12)&(n<10))|((m==13)&(n<10))
H(m,n)= -u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));
J(m,n)=u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
N(m,n)=-J(m,n);
JJ(2*m-1,2*n-1)=H(m,n);JJ(2*m-1,2*n)=N(m,n);
JJ(2*m,2*n-1)=0;JJ(2*m,2*n)=0;
      elseif ((n==10)&(m<10))|((n==11)&(m<10))|((n==12)&(m<10))|((n==13)&(m<10))
H(m,n)= -u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));
J(m,n)=u(m)*u(n)*(G(m,n)*cos(delt(m)-delt(n))+B(m,n)*sin(delt(m)-delt(n)));
JJ(2*m-1,2*n-1)=H(m,n);JJ(2*m-1,2*n)=0;
JJ(2*m,2*n-1)=J(m,n);JJ(2*m,2*n)=0;
      elseif (m>=10)&(n>=10)&(m~=n)
H(m,n)= -u(m)*u(n)*(G(m,n)*sin(delt(m)-delt(n))-B(m,n)*cos(delt(m)-delt(n)));
JJ(2*m-1,2*n-1)=H(m,n);JJ(2*m-1,2*n)=0;
JJ(2*m,2*n-1)=0;JJ(2*m,2*n)=0;
      end
    end
end
% 对雅克比矩阵进行修正,使之变成非奇异阵,以便后续求逆计算
b=0;
for m=1:22
    for n=1:22
      if (m<=18)&(n<=18)
      A(m,n)=JJ(m,n);
      elseif (m>18)&(n<=18)
      A(m,n)=JJ(m+b,n);
      end   
    end
    if m>18
      b=b+1;
    end
end

b=0;
for n=1:22
    for m=1:22
      if n<=18
      A(m,n)=A(m,n);
      elseif (m<=18)&(n>18)
      A(m,n)=JJ(m,n+b);
      end
    end
    if n>18
      b=b+1;
    end
end

b=0;
for m=1:22
    for n=1:26
      if (m>=19)&(n>=19)
      D(m,n)=JJ(m+b,n);
      end
    end
    if m>18
      b=b+1;
    end
end

b=0;
for n=1:22
    for m=1:22
      if (m>=19)&(n>=19)
      D(m,n)=D(m,n+b);
      end
    end
    if n>18
      b=b+1;
    end
end

for m=1:22
    for n=1:22
      if (m>=19)&(n>=19)
      A(m,n)=D(m,n);
      else
      A(m,n)=A(m,n);
      end
    end
end
% 形成不平衡量的列矩阵
for m=1:N1
    PP(2*m-1)=pp(m);PP(2*m)=qq(m);
end
C=PP(1:1:18);
b=0;
for m=1:22
    if m<=18
    C=C;
    else
    C(m)=PP(m+b);
    b=b+1;
    end
end
% 解修正方程式,得到修正量
uu=-inv(A)*C';
precision=max(abs(uu));
% 计算个节点电压新值,即修正后值
for n=1:N1
    if n<=9
    delt(n)=delt(n)+uu(2*n-1);
    u(n)=u(n)+uu(2*n);
    else
    delt(n)=delt(n)+uu(n+9);
    u(n)=u(n);
    end
end
% 循环次数k加一,带入新值进入下一次迭代
k=k+1;
end
% 迭代完成后,求迭代次数、节点母线电压幅值与相角
k-1,(delt*180/pi)',u'
% 计算各节点的功率和线路功率
for n=1:N1+1
    U(n)=u(n)*(cos(delt(n))+j*sin(delt(n)));
end
for m=1:N1+1
    for n=1:N1+1
    I(n)=Y(m,n)*U(n);
    end
    S(m)=U(m)*sum(conj(I));
end
S
for m=1:N1+1
    for n=1:N1+1
      T(m,n)=U(m)*conj((U(m)-U(n))*(-Y(m,n)))+U(m)*conj(U(m)*j*y(m,n));
    end
end
T

原随风 发表于 2010-10-28 14:31:14

多谢楼主分享。。。。。。。。。

luojinwen 发表于 2010-10-28 20:40:12

这个好像算的结果不是很准确,但能学习下思想

lotus_cao 发表于 2010-11-12 16:42:56

楼主的分享精神不错。

wangwangmoon 发表于 2010-12-24 11:13:09

现在我们编程的缺点是不能用矩阵的思想全局的看待系统问题,会用很多for循环去实现功能

heming007 发表于 2011-11-17 19:26:20

太复杂了,看不懂、有14节点编的算节点导纳矩阵的程序么

color 发表于 2012-4-13 14:04:15

牛人啊,佩服佩服

liulina_1013 发表于 2012-4-22 19:12:09

这个程序matlab论坛里就有

姗姗来迟156 发表于 2017-1-12 20:05:26

多谢楼主,可以借鉴来学习啦
页: [1]
查看完整版本: IEEE14节点潮流程序

招聘斑竹