前推回代算法

非常好的前推回代算法,当时的课程设计 

clear all;

clc

  %branchno.  INbus   OUTbus  Resistance(pu) Reactance(pu)

LD=[  1       1      2       0.123         0.4127                                          % i edited the 0 bus to 1 and add +1 to all the bus

      2       2      3       0.014         0.6051 

      3       3      4       0.746         1.205

      4       4      5       0.698         0.6084

      5       5      6       1.983         1.7276

      6       6      7       0.905         0.7886

      7       7      8       2.055         1.164

      8       8      9       4.795         2.716

      9       9      10       5.343         3.0264];  

     

     % bus no     activepowerPU   reactivepowerPU

  BD=[   1         0            0                                   % swing bus

         2         1.840         0.460  

         3         0.980         0.340

         4         1.790         0.446

         5         1.598         1.840

         6         1.610          0.600

         7         0.780         0.110

         8         1.150         0.060

         9         0.980         0.130

         10        1.640         0.200 ] ;

     

F=LD(:,2:3);

M=max(LD(:,2:3));

N=max(M);

f=[1:N]';

for i=1:N

    g=find(F(:,:)==i);

    h(i)=length(g);

end

k(:,1)=f;

k(:,2)=h';

  cent= input('central bus  ');

% this section of the code is to adjust line data to the standard

  NLD=zeros(N,size(LD,2));

[c r]=find(LD(:,2:3)==cent);

for i=1:length(c)

    if r(i)==2

        LD(c(i),2:3)=[LD(c(i),3),LD(c(i),2)];

    end

    

end

NLD=LD(c,:);

LD(c,:)=[];

t=find(k(:,1)==cent);

k(t,2)=k(t,2)-length(c);

j=length(c);

i=1;

while sum(k(:,2))>0

    c=[];

    b=[];

    t=[];

    [c e]=find(LD(:,2:3)==NLD(i,3));

    

    

    if size(c,2)~=0

        b=LD(c,:);

        LD(c,:)=[];

        t=find(k(:,1)==NLD(i,3));

        k(t,2)=k(t,2)-(size(c,1)+1);

        d=find(b(:,3)==NLD(i,3));

        b(d,2:3)=[b(d,3),b(d,2)];

        NLD(j+1:j+size(c,1),:)=b;

        j=j+size(c,1);

    elseif size(c,2)==0 && k(NLD(i,3),2)>0

            k(NLD(i,3),2)=k(NLD(i,3),2)-1;

    end

    i=i+1;

end

LD=NLD;

S=complex(BD(:,2),BD(:,3));% complex power

VB=ones(size(BD,1),1);% initial bus votage% 10 change to specific data value

Z=complex(LD(:,4),LD(:,5));%branch impedance

IB=zeros(size(LD,1),1);

It=input('Enter Number of Iteration: ');

for i=1:It

    

%backward sweep

I=conj(S./VB);

    for i=size(LD,1):-1:1

        c=[];

        e=[];

        [c e]=find(LD(:,2:3)==LD(i,3));

        if size(c,1)-1==0

            IB(LD(i,1))=I(LD(i,3));

        else

             IB(LD(i,1))=I(LD(i,3))+sum(IB(LD(c,1)))-IB(LD(i,1));

        end

    end

 % forward sweep

 for i=1:size(LD,1)

     VB(LD(i,3))=VB(LD(i,2))-IB(LD(i,1))*Z(i);

 end

end

Vbus=VB

Ibus=IB

PowerlossPU=sum(abs(IB).^2.*real(Z))

想了解详情请下载附件http://www.apollocode.net/a/1051.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值