clear
format long
dt=[2 2 -1 -1 1
0 1 3 -1 2
0 2 13 -1 3
0 13 5 -1 4
0 4 6 -1 5
0 5 7 -1 6
2 6 -1 -1 7
0 13 9 -1 8
0 8 10 -1 9
0 9 11 -1 10
0 10 12 -1 11
2 11 -1 -1 12
1 3 4 8 13]
ct=[1 -1 -1 2 -1
1 1 -1 3 -1
1 2 -1 13 -1
0 5 13 -1 -1
1 6 -1 4 -1
1 7 -1 5 -1
1 -1 -1 6 -1
1 13 -1 9 -1
0 8 10 -1 -1
1 11 -1 9 -1
1 12 -1 10 -1
1 -1 -1 11 -1
1 3 -1 4 8]
lt=[101 38 -1 -1
63 38 24 -1
39 24 7 -1
0 18 7 -1
18 18 12 -1
30 12 16 -1
46 16 -1 -1
18 7 18 -1
0 18 18 -1
18 18 12 -1
30 12 27 -1
57 27 -1 -1
32 7 7 7]
x1=[]%源点矩阵
x2=[]%断点矩阵
x3=[]%T点
y1=[]
y2=[]
y3=[]
y4=[]
y5=[]%馈线偶
z1=[]
z2=[]
z3=[]
u=1%随机变量 用时重赋值
v=1%随机变量 用时重赋值
v=1
g=1
for a=1:1:13
if dt(a,1)==2
x1(1,v)=a
v=v+1
end
end
v=1
for a=1:1:13
if ct(a,1)==0
x2(1,v)=a
v=v+1
end
end
v=1
for a=1:1:13
if dt(a,1)==1
x3(1,v)=a
v=v+1
end
end
b1=ct(x2(1,1),2)
b2=ct(x2(1,1),3)%第一断点的两上源
b3=ct(x2(1,2),2)
b4=ct(x2(1,2),3)%第二断点的两上源
v=b1%从断点上开始
u=2
y1(1,1)=x2(1,1)
y1(1,2)=b1
while v>0
v=ct(v,2)
u=u+1
y1(1,u)=v
end
u=length(y1)
y1(:,[u])=[]
length1=length(y1)
v=b2%从断点上开始
u=2
y2(1,1)=x2(1,1)
y2(1,2)=b2
while v>0
v=ct(v,2)
u=u+1
y2(1,u)=v
end
u=length(y2)
y2(:,[u])=[]
length2=length(y2)
v=b3%从断点上开始
u=2
y3(1,1)=x2(1,2)
y3(1,2)=b3
while v>0
v=ct(v,2)
u=u+1
y3(1,u)=v
end
u=length(y3)
y3(:,[u])=[]
length3=length(y3)
v=b4%从断点上开始
u=2
y4(1,1)=x2(1,2)
y4(1,2)=b4
while v>0
v=ct(v,2)
u=u+1
y4(1,u)=v
end
u=length(y4)
y4(:,[u])=[]
length4=length(y4)
if lt(x1(1,1),1)>lt(x1(1,2),1)
ltmax=lt(x1(1,1),1)
ltmaxsource=x1(1,1)
ltmaxnumber=1
ltmin=lt(x1(1,2),1)
ltminsource=x1(1,2)
ltminnumber=2
else
ltmax=lt(x1(1,2),1)
ltmaxsource=x1(1,2)
ltmaxnumber=2
ltmin=lt(x1(1,1),1)
ltminsource=x1(1,1)
ltminnumber=1
end
if lt(x1(1,3),1)> ltmax
ltmax=lt(x1(1,3),1)
ltmaxsource=x1(1,3)
ltmaxnumber=3
end
if lt(x1(1,3),1)< ltmin
ltmin=lt(x1(1,3),1)
ltminsource=x1(1,3)
ltminnumber=3
end %ltmax ltmin最大小负荷值 ltmaxsource ltminsource最大小负荷源点 ltmaxnumber ltminnumber对应源点的数组位置
rlcmax1=ltmax(1,1)./ltmin(1,1)
z1=x2
%y7=y1
%y8=y2
%y1=y3
%y2=y4
%y3=y8
%y4=y7
%length1=length(y1)
%length2=length(y2)
%length3=length(y3)
%length4=length(y4) %测试4中情况的正确性
for a=1:1:20
v=1
for a=1:1:13
if ct(a,1)==0
x2(1,v)=a
v=v+1
end
end
b1=ct(x2(1,1),2)
b2=ct(x2(1,1),3)
b3=ct(x2(1,2),2)
b4=ct(x2(1,2),3)
v=b1%从断点上开始
u=2
y1(1,1)=x2(1,1)
y1(1,2)=b1
while v>0
v=ct(v,2)
u=u+1
y1(1,u)=v
end
u=length(y1)
y1(:,[u])=[]
length1=length(y1)
v=b2%从断点上开始
u=2
y2(1,1)=x2(1,1)
y2(1,2)=b2
while v>0
v=ct(v,2)
u=u+1
y2(1,u)=v
end
u=length(y2)
y2(:,[u])=[]
length2=length(y2)
v=b3%从断点上开始
u=2
y3(1,1)=x2(1,2)
y3(1,2)=b3
while v>0
v=ct(v,2)
u=u+1
y3(1,u)=v
end
u=length(y3)
y3(:,[u])=[]
length3=length(y3)
v=b4%从断点上开始
u=2
y4(1,1)=x2(1,2)
y4(1,2)=b4
while v>0
v=ct(v,2)
u=u+1
y4(1,u)=v
end
u=length(y4)
y4(:,[u])=[]
length4=length(y4)
if lt(x1(1,1),1)>lt(x1(1,2),1)
ltmax=lt(x1(1,1),1)
ltmaxsource=x1(1,1)
ltmaxnumber=1
ltmin=lt(x1(1,2),1)
ltminsource=x1(1,2)
ltminnumber=2
else
ltmax=lt(x1(1,2),1)
ltmaxsource=x1(1,2)
ltmaxnumber=2
ltmin=lt(x1(1,1),1)
ltminsource=x1(1,1)
ltminnumber=1
end
if lt(x1(1,3),1)> ltmax
ltmax=lt(x1(1,3),1)
ltmaxsource=x1(1,3)
ltmaxnumber=3
end
if lt(x1(1,3),1)< ltmin
ltmin=lt(x1(1,3),1)
ltminsource=x1(1,3)
ltminnumber=3
end
if ((y1(1,length1)==ltmaxsource)&(y2(1,length2)==ltminsource))
f=1 %负荷均衡部分
if dt(y1(1,2),1)==1 %变化时正好是T节点
if y3(1,length3)==y1(1,length1)
if ct(y3(1,1),2)==y3(1,2)
v=0
u=y3(1,1)
while u~=x3(1,1)
v=v+lt(u,2)
u=ct(u,2)
end
v=v+2.*lt(x3(1,1),2)
else
v=lt(y3(1,1),3)
u=y3(1,2)
while u~=x3(1,1)
v=v+lt(u,2)
u=ct(u,2)
end
v=v+2.*lt(x3(1,1),2)
end
for a=3:1:length1 %开始变化
lt(y1(1,a),1)=lt(y1(1,a),1)-v
end
for a=1:1:length2
lt(y2(1,a),1)=lt(y2(1,a),1)+v
end
else
end
ct(y1(1,1),1)=1
ct(y1(1,1),2)=y2(1,2)
ct(y1(1,1),3)=-1
ct(y1(1,1),4)=y1(1,2)
ct(y1(1,2),2)=y1(1,1)
if ct(y1(1,2),4)==y1(1,1)
ct(y1(1,2),4)=y1(1,3)
else
ct(y1(1,2),5)=y1(1,3)
end
ct(y1(1,3),1)=0
ct(y1(1,3),3)=y1(1,2)
ct(y1(1,3),4)=-1
else %非T节点时
if ct(y1(1,1),2)==y1(1,2)
lt(y1(1,1),1)=lt(y1(1,1),2)
else
lt(y1(1,1),1)=lt(y1(1,1),3) %断点负荷即负荷变化值
end
for a=2:1:length1 %开始变化
lt(y1(1,a),1)=lt(y1(1,a),1)-lt(y1(1,1),1)
end
for a=2:1:length2
lt(y2(1,a),1)=lt(y2(1,a),1)+lt(y1(1,1),1)
end
ct(y1(1,1),1)=1
ct(y1(1,1),2)=y2(1,2)
ct(y1(1,1),3)=-1
ct(y1(1,1),4)=y1(1,2)
ct(y1(1,2),1)=0
ct(y1(1,2),3)=y1(1,1)
ct(y1(1,2),4)=-1
end
elseif ((y1(1,length1)==ltminsource)&(y2(1,length2)==ltmaxsource))
f=2
if dt(y2(1,2),1)==1 %变化时正好是T节点
if y3(1,length3)==y2(1,length2)
if ct(y3(1,1),2)==y3(1,2)
v=0
u=y3(1,1)
while u~=x3(1,1)
v=v+lt(u,2)
u=ct(u,2)
end
v=v+2.*lt(x3(1,1),2)
else
v=lt(y3(1,1),3)
u=y3(1,2)
while u~=x3(1,1)
v=v+lt(u,2)
u=ct(u,2)
end
v=v+2.*lt(x3(1,1),2)
end
for a=3:1:length2 %开始变化
lt(y2(1,a),1)=lt(y2(1,a),1)-v
end
for a=1:1:length1
lt(y1(1,a),1)=lt(y1(1,a),1)+v
end
else
end
ct(y2(1,1),1)=1
ct(y2(1,1),2)=y1(1,2)
ct(y2(1,1),3)=-1
ct(y2(1,1),4)=y2(1,2)
ct(y2(1,2),2)=y2(1,1)
if ct(y2(1,2),4)==y2(1,1)
ct(y2(1,2),4)=y2(1,3)
else
ct(y2(1,2),5)=y2(1,3)
end
ct(y2(1,3),1)=0
ct(y2(1,3),3)=y2(1,2)
ct(y2(1,3),4)=-1
else %非T节点时
if ct(y2(1,1),2)==y2(1,2)
lt(y2(1,1),1)=lt(y2(1,1),2)
else
lt(y2(1,1),1)=lt(y2(1,1),3) %断点负荷即负荷变化值
end
for a=2:1:length2 %开始变化
lt(y2(1,a),1)=lt(y2(1,a),1)-lt(y2(1,1),1)
end
for a=2:1:length1
lt(y1(1,a),1)=lt(y1(1,a),1)+lt(y2(1,1),1)
end