手算前推回代求解潮流电压分布

1.初衷

在做课程设计的时候,老师要求手算潮流,而非采用计算机算法求解(emmm,老师的心思真难猜啊),也就是采用电力系统分析课本上的前推回代求解潮流电压分布,嫌麻烦,试着用matalab编个程序实现。

2.程序的功能

这个程序可以用来针对辐射性网络求解潮流电压分布,分为一个主程序和两个子程序。如果有环网,那么就要配合此程序手动解环后,将环网分解为两个辐射性网络再来求解。程序中采用的都是标幺值。

3.思路

在编写代码时,首先需要考虑:
如何识别电网的拓扑结构,也就是说,如何知道一个节点是否还有分支。我的想法是:利用Branch矩阵中的第一列和第二列,规定功率流向必须是从第一列流向第二列,以此来确定电网的辐射情况。

4.算例

原件参数图如下所示,此参数图为有铭值,程序计算时使用的标幺值,所以需要在计算时化为标幺值,SB = 100MW,UB = 110KV
在这里插入图片描述
各节点功率情况

节点编号有功功率功率因数
14350.85
17(发出)150 *0.9115*0.9
2150.8
3250.8
4200.8
5200.8
6210.80
7150.82
16300.82
18 (发出)平衡节点平衡节点
9260.85
10240.83
11160.80
5.代码

分为1个主程序和3个子程序:
主程序 main.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                  前推回代手算潮流
clear;

% 母线Bus参数
%如果节点下面没有变压器,那么Bus参数的意思就是:
%bus_i(编号)	type(节点类型)  Pd   Qd  Gs Bs  变比(节点下面没有变压器的支路为0%如果这个节点后面还跟着变压器,那么Bus参数的意思就是:
%bus_i(编号)  type(节点类型)  Pd  Qd  Y  Zt  变比 
%节点编号规则为:PQ节点-PV节点-平衡节点
% Pd,Qd指的是消耗的功率,负荷消耗功率是负值
Bus = [ 
	1   1   0       0                       1.3674*10^(-5)*110^2/100             -6.844^(-5)*110^2/100  0;
    2	1	-0.15	-0.15*tan(acos(0.8))	(13.24-1i*19.042)*10^-5*110^2/100     (1.915+1i*39.703)*100/110^2 1.1;
	3	1	-0.25	-0.25*tan(acos(0.8))	(4.528-1i*27.68)*10^-5*110^2/100     (1.123+1i*39.703)*100/110^2 1.1;
	4	1	-0.20	-0.20*tan(acos(0.8))   (3.834-1i*23.8)*10^-5*110^2/100     (1.498+1i*31.763)*100/110^2 1.1;
	5	1	-0.20	-0.20*tan(acos(0.8))	(3.834-1i*23.8)*10^-5*110^2/100     (1.498+1i*31.763)*100/110^2 1.1;
	6	1	-0.21	-0.21*tan(acos(0.8))    (13.24-1i*19.042)*10^-5*110^2/100     (1.915+1i*39.703)*100/110^2 1.1;
	7	1	-0.15	-0.15*tan(acos(0.82))	(2.71-1i*16.116)*10^-5*110^2/100     (2.556+1i*50.82)*100/110^2 1.1;  
	8	1	0       0                       1.448*10^(-5)*110^2/100 -8.032^(-5)*110^2/100   0;
	9	1	-0.26	-0.26*tan(acos(0.85))	(3.834-1i*23.8)*10^-5*110^2/100     (1.498+1i*31.763)*100/110^2 1.1;
	10	1	-0.24	-0.24*tan(acos(0.83))	(3.834-1i*23.8)*10^-5*110^2/100     (1.498+1i*31.763)*100/110^2 1.1;
	11	1	-0.16	-0.16*tan(acos(0.8))    (13.24-1i*19.042)*10^-5*110^2/100     (1.915+1i*39.703)*100/110^2 1.1;
	12	1	0       0                       0   0   0;
    13	1	0   	0                       0   0   0;
    14  1   -0.35   -0.35*tan(acos(0.85))  0   0    0;
    15  1	0   	0                       0   0   0;
    16  1   -0.3    -0.3*tan(acos(0.82))   0   0    0;
    17  1   1.50*0.9	1.15*0.9         0   0   0;
    18  3   0       0                       0   0   0;
];

% 发电机参数:母线节点编号 节点类型 P Q U θ
% 此处PQ为发电机发出功率(正值)
Gen = [ 
        17	1   1.50*0.9	1.15*0.9	1.05	0;
        18	3   0       0	1.05	0;
        ];

% 交流分支线Branch参数:I侧母线 J侧母线 r x 1/2接地导纳 变比(没有变压器的支路为0% 变压器阻抗归算到I侧
Branch = [
    1	2	8.10*100/110^2      12.27*100/110^2       0	0;
    1   3   9.1*100/110^2       27.16*100/110^2       0   0;
	10	1	6.50*100/110^2      19.4*100/110^2        0	0;
	12	1	5.10*100/110^2       11.85*100/110^2      0	0;
    1   13  0.175*100/110^2      -0.387*100/110^2     0   0;     
	3	4	5.78*100/110^2       13.43*100/110^2      0	0;
	3	5	6.51*100/110^2       12.493*100/110^2     0	0;
	8   6   5.5*100/110^2        19.15*100/110^2      0   0;
    6   11  7.56*100/110^2       14.508*100/110^2     0   0;
    11   7  13.5*100/110^2       20.45*100/110^2      0   0;
    8	10	4.03*100/110^2       12.028*100/110^2     0	0;
    15   8  0.11*100/110^2      -0.61*100/110^2       0  0;
    12	9	3.40*100/110^2       7.90*100/110^2       0	0;
	11	12	8.61*100/110^2       16.523*100/110^2     0	0;%此处1112没有反映出他们的向下辐射情况。需要手算
    13  14  0.175*100/110^2      5.423*100/110^2   0   1;
	13  17  0.175*100/110^2     8.521*100/110^2    0   0.9091;
    15  16  0.22*100/110^2      5.491*100/110^2     0   1;
    15 18 0.11*100/110^2      8.541*100/110^2     0   0.9091;
    ];
%Bus参数后面跟着的变压器和Branch参数中的变压器的区别:
%为什么Bus参数会跟着变压器,而不都放到Branch里面呢?因为如果放到Branch里面,需要变压器支路的两端节点,
%那么就要再多标一些节点编号才行,就导致节点过于多,而这些节点编号就是为了求变压器损耗,所以就放到Bus里面,省下了节点编号的工作。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                   求节点数n和PQ节点数m
%PQ节点包含联络节点,其PQ都为0
n=size(Bus,1); %返回数组Bus的行数,即总节点数
%PQ节点数m
m=n-1;  % 先把平衡节点减掉
%然后把所有的PV节点都减掉,就求出PQ的节点数
for i=1:size(Bus,1)%返回Bus数组行数
	if Bus(i,2)==2 
		m=m-1;
	end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                节点导纳矩阵的计算
[Y,B,G,Trans_pi]= MakeYbus( n,Branch,Bus );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%               把Bus数据中的变压器参数变为Π型等效参数,更新Bus数据
for i=1:size(Bus,1)
    if Bus(i,7) ~=0
      %Bus(i,5)Y,Bus(i,6)是Zt,Bus(i,7)是变比k
      Bus(i,:)=[Bus(i,1:4) Bus(i,6)*Bus(i,7) (Bus(i,7)-1)/(Bus(i,7).*Bus(i,6)) + Bus(i,5) (1-Bus(i,7))/(Bus(i,7).^2*Bus(i,6))];
      %如果有变压器,Trans更新以后参数变为%bus_i	type	Pd   Qd  Z_pi Y_pi1 Y_pi2 
    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %         计算考虑变压器损耗的节点真实负荷(最大负荷,发电机出力为0.9)
Sj =[Bus(:,1) -(Bus(:,3)+1j*Bus(:,4))];%此处将所有的负荷功率变为正数
Si_true = zeros(18,2);%Si_true表示的意义是所有流出该节点的功率之和
for i = 1:size(Si_true,1)
   %如果节点后面跟着变压器,考虑变压器的损耗
   if Bus(i,7) ~=0 
       %Bus(:,5)Z_pi,Bus(:,6)是Y_pi1,Bus(:,7)是 Y_pi2
       Sj_pie= Sj(i,2) + 1^2*conj(Bus(i,7));
       Si_true(i,:)=[i  Sj_pie+(real(Sj_pie)^2+imag(Sj_pie)^2)/1^2*Bus(i,5)+1^2*conj(Bus(i,6))];
   else
   %如果节点后面没有变压器,那么Si_true就是原始的负荷功率
       Si_true(i,:) = Sj(i,:);
   end
end
%把节点的自导纳也算进去,也当是功率经自导纳流出该节点。此题中就815节点有自导纳,原因是他们所接的三绕组变压器
%的等效电路中,有一个导纳,这个导纳不像线路的导纳参数一样,两边都有,所以作为节点的自导纳处理
for i = 1:size(Si_true,1)
    if (Bus(i, 7) == 0)&&(Bus(i, 5) ~=0 || Bus(i, 6) ~=0)
    Si_true(i,2) = Si_true(i,2) + 1^2*conj(Bus(i,5) +1i*Bus(i,6));
    end
end
S1 = Si_true(1,2);%后面1需要重置时使用
S11 = Si_true(11,2);%后面11需要重置时使用
S12 = Si_true(12,2);%后面12需要重置时使用
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %                  前推
%%求辐射性网络
%3变电站的向下辐射的功率分布
i=3;
[s3,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%13变电站的向下辐射的功率分布
i = 13;
[s13,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%1变电站的向下辐射的功率分布
i = 1;
[s1,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%此时求出的s1即为s右
%11变电站的向下辐射的功率分布,此值不能使用子程序,因为Branch中不能反映真实的辐射情况
  a = real(Si_true(Branch(10,2),2));
  b = imag(Si_true(Branch(10,2),2));
  c =Si_true(Branch(10,2),2) +(a^2 + b^2)*(Branch(10,3) + 1i*Branch(10,4));
  s11(1,:) = [Branch(10,1) Branch(10,2) c];
  Si_true(11,2) = Si_true(11,2) + c;
%12变电站的向下辐射的功率分布
  a = real(Si_true(Branch(13,2),2));
  b = imag(Si_true(Branch(13,2),2));
  c =Si_true(Branch(13,2),2) +(a^2 + b^2)*(Branch(13,3) + 1i*Branch(13,4));
  s12(1,:) = [Branch(13,1) Branch(13,2) c];
  Si_true(12,2) = Si_true(12,2) + c;

%%求环网
%先解环
z = -[1/Y(8,10) 1/Y(10,1) 1/Y(1,12) 1/Y(12,11) 1/Y(11,6) 1/Y(6,8);];
z_sum = sum(z(1,:));
s8_10 =(Si_true(6,2)*z(1,6) +  Si_true(11,2)*sum(z(1,5:6))+Si_true(12,2)*sum(z(1,4:6))+Si_true(1,2)*sum(z(1,3:6))+Si_true(10,2)*sum(z(1,2:6)))/z_sum;
s8_6 =(Si_true(6,2)*sum(z(1,1:5)) +  Si_true(11,2)*sum(z(1,1:4))+Si_true(12,2)*sum(z(1,1:3))+Si_true(1,2)*sum(z(1,1:2))+Si_true(10,2)*z(1,1))/z_sum;
s10_1 = s8_10 - Si_true(10,2);
s1_12 = s10_1 - Si_true(1,2);
s6_11 = s8_6 - Si_true(6,2);
s11_12 = s6_11 - Si_true(11,2);
disp('s8-10');disp(s8_10);
disp('s8_6');disp(s8_6);
disp('s10-1');disp(s10_1);
disp('s1-12');disp(s1_12);
disp('s6-11');disp(s6_11);
disp('s11-12');disp(s11_12);
%确定功率分点为:12,人工修正Branch矩阵
%使用时要在此处设置断点,从而确定功率分点
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %                  人工修正Branch矩阵
Branch = [
    1	2	8.10*100/110^2      12.27*100/110^2     0	0;
    1   3   9.1*100/110^2       27.16*100/110^2     0   0;
	10	1	6.50*100/110^2      19.4*100/110^2      0	0;
	1	12	5.10*100/110^2       11.85*100/110^2    0	0;
    1   13  0.175*100/110^2      -0.387*100/110^2    0   0;     
	3	4	5.78*100/110^2       13.43*100/110^2      0	0;
	3	5	6.51*100/110^2       12.493*100/110^2     0	0;
	8   6   5.5*100/110^2        19.15*100/110^2      0   0;
    6   11  7.56*100/110^2       14.508*100/110^2     0   0;
    11   7  13.5*100/110^2       20.45*100/110^2      0   0;
    8	10	4.03*100/110^2       12.028*100/110^2     0	0;
    15   8  0.11*100/110^2      -0.61*100/110^2      0  0;
    12	9	3.40*100/110^2       7.90*100/110^2       0	0;
	11	12	8.61*100/110^2       16.523*100/110^2     0	0;
    13  14  0.175*100/110^2      5.423*100/110^2   0   1;
	13  17  0.175*100/110^2     8.521*100/110^2    0   0.9091;
    15  16  0.22*100/110^2      5.491*100/110^2     0   1;
    15 18 0.11*100/110^2      8.541*100/110^2     0   0.9091;
            ];
%成功在12节点处解环,环网转化为两个辐射性网络,再用子程序求解
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                    求环网解环后的第一个辐射性网络
x = 12;
Si_true(x,2) = s1_12;
%1变电站的向下辐射的功率分布
% i = 1;
% Si_true(1,2) = S1;%因为在计算右边辐射性网络时,此节点已经算了一次,所以要
%重置为该节点最初的负荷情况,否则,1-31-21-13支路就算了两次。
% [s1,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
% 
%1变电站的向下辐射的功率分布
i =1;
Si_true(1,2) = S1;%因为在计算右边辐射性网络时,此节点已经算了一次,所以要
% 重置为该节点最初的负荷情况,否则,12-9支路就算了两次。
[s1,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%10变电站的向下辐射的功率分布
i = 10;
[s10,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                     求求环网解环后的第二个辐射性网络
x = 12;
Si_true(x,2) = s11_12;

%11变电站的向下辐射的功率分布
i = 11;
S11 = Si_true(11,2);%重置
[s11,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%6变电站的向下辐射的功率分布
i = 6;
[s6,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%8变电站的向下辐射的功率分布
i = 8;
[s8,Si_true]=qiantui( Si_true,Branch,i,Trans_pi);
%15变电站的向下辐射的功率分布,Branch参数体现不出辐射情况,不能调用子程序
  a = real(Si_true(Branch(12,2),2));
  b = imag(Si_true(Branch(12,2),2));
  c =Si_true(Branch(12,2),2) +(a^2 + b^2)*(Branch(12,3) + 1i*Branch(12,4));
  s15(1,:) = [Branch(12,1) Branch(12,2) c];
  Si_true(15,2) = Si_true(15,2) + c;
  d = Si_true(Branch(17,2),2) + 1^2*conj(Trans_pi(3,5));
  c = d + (real(d)^2 + imag(d)^2)/1^2*(Trans_pi(3,3)) + 1^2*conj(Trans_pi(3,4));
  s15(2,:) = [Branch(17,1) Branch(17,2) c];
  Si_true(15,2) = Si_true(15,2) + c;
%18变电站的向下辐射的功率分布,Branch参数体现不出辐射情况,不能调用子程序
d = Si_true(Branch(18,1),2) + 1^2*conj(Trans_pi(4,4));
c = d + (real(d)^2 + imag(d)^2)/1^2*(Trans_pi(4,3)) + 1^2*conj(Trans_pi(4,5));
s18(1,:) = [Branch(18,2) Branch(18,1) c];
Si_true(18,2) = Si_true(18,2) + c;

s_huizong =[s1;s3;s6;s8;s10;s11;s12;s13;s15;s18];
disp(vpa(Si_true,3));
disp(vpa(s_huizong,3));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                     求解各节点电压

%初始化U8节点为1.05+1i*0,其他暂时未知
U = zeros(18,2);
U(8,:) =[8 1.05+1i*0];
%求i是8节点的时候,j的电压,确定610的电压。
i = 8;
 [u8,U]= huidai( s_huizong,Y,U,i);
%求i是6节点的时候,j的电压,确定11的电压。
i = 6;
 [u6,U]= huidai( s_huizong,Y,U,i);
%求i是11节点的时候,j的电压,确定712的电压。
i = 11;
 [u11,U]= huidai( s_huizong,Y,U,i);
%求i是12节点的时候,j的电压,确定19的电压。
i = 12;
 [u12,U]= huidai( s_huizong,Y,U,i);
%求i是10节点的时候,j的电压,确定1的电压。
i = 10;
 [u10,U]= huidai( s_huizong,Y,U,i);
%求i是1节点的时候,j的电压,确定2313的电压。
i = 1;
 [u1,U]= huidai( s_huizong,Y,U,i);
%求i是13节点的时候,j的电压,确定1417的电压。
i = 13;
 [u13,U]= huidai( s_huizong,Y,U,i);
%求i是3节点的时候,j的电压,确定45的电压。
i = 3;
 [u3,U]= huidai( s_huizong,Y,U,i);
disp(U);

子程序 MakeYbus.m

function  [Y,B,G,Trans_pi ]= MakeYbus( n,Branch,Bus )

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                   变压器π型等效阻抗参数
%Branch(:,4)*1i是阻抗,Branch(:,6)是变比
% 求出变压器个数count
count = 0;
for i=1:size(Branch,1)
    if Branch(i,6) ~=0
        count = count + 1;
    end
end
% 求变压器π型等效阻抗参数
Zt=zeros(count,3);
Trans_pi=zeros(count,5);
count = 0;
for i=1:size(Branch,1)
    if Branch(i,6) ~=0
      count= count+1;
      Zt(count,1)=(Branch(i,3)+Branch(i,4)*1i)*Branch(i,6);
      Zt(count,2)=(Branch(i,6)-1)/(Branch(i,6).*(Branch(i,3)+Branch(i,4)*1i));
      Zt(count,3)=(1-Branch(i,6))/(Branch(i,6).^2*(Branch(i,3)+Branch(i,4)*1i));
      %变压器π型参数:I侧母线 J侧母线 Z_pi Y_pi1 Y_pi2 
      Trans_pi(count,:)=[Branch(i,1:2) Zt(count,1) Zt(count,2) Zt(count,3)];
    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                节点导纳矩阵的计算

Y=zeros(n); %新建节点导纳矩阵
y=zeros(n); %网络中的真实导纳标幺值yij
%计算y(i,j)
for i=1:size(Branch,1) %与交流线联结的真实导纳
	ii=Branch(i,1); jj=Branch(i,2);
	y(ii,jj)=vpa(1/(Branch(i,3)+Branch(i,4)*1i),7);%保留七位有效数字
	y(jj,ii)=vpa(y(ii,jj),7);
end
% Trans_pi=[Trans(:,1:2) Zt(:,1) 1./Zt(:,2) 1./Zt(:,3)]; 
for i=1:size(Trans_pi,1) %与变压器联结的真实导纳
	ii=Trans_pi(i,1); jj=Trans_pi(i,2);
	y(ii,jj)=1/Trans_pi(i,3);
	y(jj,ii)=y(ii,jj);
end
%计算y(i,i)
for i=1:size(Branch,1) %与交流线联结的对地导纳
	ii=Branch(i,1); jj=Branch(i,2);
	y(ii,ii)=y(ii,ii) + Branch(i,5)*1i;
	y(jj,jj)=y(jj,jj) + Branch(i,5)*1i;
end
% Trans_pi=[Trans(:,1:2) Zt(:,1) Zt(:,2) Zt(:,3)]; 
for i=1:size(Trans_pi,1) %与变压器联结的对地导纳
	ii=Trans_pi(i,1); jj=Trans_pi(i,2);
	y(ii,ii)=y(ii,ii)+Trans_pi(i,4);    %I侧归算。输入数据时要把归算测当i
	y(jj,jj)=y(jj,jj)+Trans_pi(i,5);
end
%算上补偿电容
for i=1:size(Bus,1)
    if (Bus(i, 7) == 0)&&(Bus(i, 5) ~=0 || Bus(i, 6) ~=0)
	ii=Bus(i,1);
	y(ii,ii)=y(ii,ii)+Bus(i,5)+Bus(i, 6)*1i;
    end
end
%由y计算Y
ysum=sum(y,1); %每一行求和
for i=1:n
	for j=1:n
		if i==j
			Y(i,j)=ysum(i);
		else
			Y(i,j)=-y(i,j);
		end
	end
end
G=real(Y); %电导矩阵
B=imag(Y); %电纳矩阵

子程序 qiantui.m

%此子函数用于求某节点向下辐射(流出该节点)的功率分布,存放于s矩阵。
%同时可以将流出该节点的功率相加,存放于Si_true中
function [s,Si_true]=qiantui( Si_true,Branch,i,Trans_pi)
%i是节点,Si_true表示的是流出节点的功率和
count = 0;
%求出i节点向下辐射(功率流出该节点)的支路数
for x = 1:size(Branch(:,1))
    if Branch(x,1)== i
    count = count + 1;
    end
end
%建立s矩阵,存放某节点向下辐射(流出该节点)的功率分布
s = zeros(count,3);
count = 0;
n = 0;
%识别向下辐射(功率流出节点)的信息,是靠Branch矩阵的第一列和第二列实现,
%功率由第一列向第二列辐射,在未知功率分布情况下,先不管,因为也没求这些未知
%流向的功率分布。等到知道了功率流向以后,需要手动更新Branch矩阵的第一、二列。
for x = 1:size(Branch(:,1))
    if Branch(x,1)== i%识别功率流向
    count = count + 1;
    %分为两种情况,支路有没有变压器
        %没有变压器
        if Branch(x,6) == 0
        a = real(Si_true(Branch(x,2),2));
        b = imag(Si_true(Branch(x,2),2));
        c = Si_true(Branch(x,2),2) +(a^2 + b^2)*(Branch(x,3) + 1i*Branch(x,4));
        else 
        %有变压器
        n = n + 1;
        d = Si_true(Branch(x,2),2) + 1^2*conj(Trans_pi(n,5));
        c = d + (real(d)^2 + imag(d)^2)/1^2*(Trans_pi(n,3)) + 1^2*conj(Trans_pi(n,4));
        end
    %s矩阵存放该节点向下辐射(流出该节点)的功率分布,格式为
    %节点i 节点j  从i流向j的功率
    s(count,:) = [Branch(x,1) Branch(x,2) c];
    %更新Si_true中流出该节点的功率和
    Si_true(i,2) = Si_true(i,2) + s(count,3);
    end
end

子程序 huidai.m

  %                  回代求解各节点电压。
  function [u,U]=huidai( s_huizong,Y,U,i)
%i是节点,s_huizong 表示的是从i节点到j节点的功率分布,U矩阵存放j的的电压分布
count = 0;
%求出i节点向下辐射的支路数
for x = 1:size(s_huizong(:,1))
    if s_huizong(x,1)== i
    count = count + 1;
    end
end
u =zeros(count,2);
count = 0;
for x = 1:size(s_huizong(:,1))
    if s_huizong(x,1)== i%识别功率流向
    j = s_huizong(x,2);
    count =count + 1;
    u(count,:) =[j U(i,2) - conj(s_huizong(x,3))/abs( U(i,2))*(-1/Y(i,j))];        
    U(j,:) =[j u(count,2)];
    end
end
6.结果

先设置一个断点,打印出环网的粗略估计的功率分布。

s8-10
   0.4993 + 0.9347i

s8_6
   0.5231 + 0.7508i

s10-1
   0.2522 + 0.6918i

s1-12
   0.3141 + 0.0735i

s6-11
   0.2951 + 0.5278i

s11-12
  -0.0432 + 0.1805i

确定功率分点为12,修正Branch矩阵,继续执行程序
结果如下
流出某节点的功率和:

[  1.0,    0.257 + 0.702i]
[  2.0,    0.168 + 0.174i]
[  3.0,     0.68 + 0.745i]
[  4.0,    0.207 + 0.228i]
[  5.0,    0.207 + 0.228i]
[  6.0,      0.729 + 1.0i]
[  7.0,    0.155 + 0.157i]
[  8.0,      1.38 + 2.42i]
[  9.0,    0.267 + 0.245i]
[ 10.0,     0.534 + 1.03i]
[ 11.0,    0.458 + 0.697i]
[ 12.0, - 0.0432 + 0.181i]
[ 13.0,   - 0.994 - 0.54i]
[ 14.0,     0.35 + 0.217i]
[ 15.0,       1.69 + 2.6i]
[ 16.0,      0.3 + 0.209i]
[ 17.0,    - 1.35 - 1.04i]
[ 18.0,      1.69 + 3.01i]

功率分布:

[  1.0,  2.0,     0.172 + 0.18i]
[  1.0,  3.0,    0.757 + 0.974i]
[  1.0, 12.0,   0.319 + 0.0837i]
[  1.0, 13.0,  - 0.992 - 0.544i]
[  3.0,  4.0,    0.211 + 0.238i]
[  3.0,  5.0,    0.212 + 0.238i]
[  6.0, 11.0,    0.501 + 0.781i]
[  8.0,  6.0,     0.799 + 1.25i]
[  8.0, 10.0,     0.579 + 1.17i]
[ 10.0,  1.0,    0.287 + 0.792i]
[ 11.0,  7.0,     0.16 + 0.165i]
[ 11.0, 12.0, - 0.0407 + 0.185i]
[ 12.0,  9.0,    0.271 + 0.254i]
[ 13.0, 14.0,     0.35 + 0.225i]
[ 13.0, 17.0,   - 1.34 - 0.764i]
[ 15.0,  8.0,      1.39 + 2.38i]
[ 15.0, 16.0,      0.3 + 0.215i]
[ 18.0, 15.0,      1.69 + 3.01i]

电压分布:

1.0000 + 0.0000i   0.7665 - 0.0214i
   2.0000 + 0.0000i   0.7276 - 0.0284i
   3.0000 + 0.0000i   0.4072 - 0.1475i
   4.0000 + 0.0000i   0.3228 - 0.1754i
   5.0000 + 0.0000i   0.3242 - 0.1686i
   6.0000 + 0.0000i   0.8273 - 0.0665i
   7.0000 + 0.0000i   0.6096 - 0.0929i
   8.0000 + 0.0000i   1.0500 + 0.0000i
   9.0000 + 0.0000i   0.6065 - 0.0690i
  10.0000 + 0.0000i   0.9210 - 0.0177i
  11.0000 + 0.0000i   0.6768 - 0.0801i
  12.0000 + 0.0000i   0.7383 - 0.0575i
  13.0000 + 0.0000i   0.7661 - 0.0266i
  14.0000 + 0.0000i   0.7523 - 0.0467i
   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i
  17.0000 + 0.0000i   0.8322 + 0.0844i
   0.0000 + 0.0000i   0.0000 + 0.0000i
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值