拓扑-网络连通性算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LOOP1 l=1,Nc
l 从 1 至 Nc 循环
IF(NCT0(l)=k0),THEN
如果元件 l 属于初始连通子集 k0,则
IF(KND(l)≠‘开关’or (KND(l)=‘开关’and CNT(l)=‘合’),THEN
I=NOD(l,1) J=NOD(l,2) K=NOD(l,3)
取元件 l 的各端节点号
RA(K)=TRUE
关联矩阵第 IND 行第 K 列元素置为“真”
M=M+1
关联矩阵第 IND 行“真”元素计数+1
END IF
END IF
IF(J=IND),THEN
如果节点号 J 等于节点号 IND,则
IF(I≠0 and I≠J),THEN
如果节点号 I 不等于 0 和 I,则
RA(I)=TRUE
LOOP1 l=1,Nd
l 从 1 至 Nd 循环
RA(l)=FALSE
第 k0 个连通子集中第 IND 行第 l 列元素置为“假”
END LOOP1
RA(IND)=TRUE
节点关联矩阵第 IND 行对角元素置 1
M=1
节点关联矩阵第 IND 行 “真”元素计数置为 1
形成节点关联矩阵的第 IND 行 RA
I=NOD(l,1)
I=元件 l 的第一个节点号
IF(I=0),THEN
如果 I 为 0,则
I=NOD(l,2)
I=元件 l 的第二个节点号
IF(I=0),THEN
如果 I 为 Fra Baidu bibliotek,则
I=NOD(l,3)
I=元件 l 的第三个节点号
IF(I=0),THEN
如果 I 为 0,则
30
NCT(l)=0
元件 l 所在连通子集号为 0(孤立元件)
如果 M=原连通子集 k0 中节点总数,则 l 自 1 至 Nd 循环
IF(NDS0(l)=k0),NDS(l)=1 END LOOP1 ELSE
连通子集 k0 中节点 l 的子集号置为 1 (子集 k0 全连通) 否则
LOOP1 l=1,Nd
l 自 1 至 Nd 循环
IF(RA(l)=TRUE),NDS(l)=N END LOOP1
返回 10,自节点 l 开始寻找下一连通子集
END IF
END LOOP1
END IF
NST(k0,1)=N LOOP1 l=1,Nc
将原始连通子集 k0 内的连通子集数置为 N l 自 1 至 Nc 循环
IF(NCT0(l)=k0),THEN
如果元件 l 属于初始连通子集 k0,则
IF(KND(l)≠‘开关’or (KND(l)=‘开关’and CNT(l)=‘合’),THEN
NSUM=M
出现时,循环
LOOP2 ld=IND+1,Nd
ld 自 IND+1 至 Nd 循环
IF (NDS0(ld)=k0 and RA(ld)=FALSE and NDS(ld)=0),THEN 当
LOOP3 l=1,Nd
l 自 1 至 nd 循环
节点 ld 属于连通子 集 k0,且关联矩阵第 IND 行第 ld 列元素 为“假”,且未找到
LOOP4 j=1,Nd jl 自 1 至 Nd 循环
如果节点 l 属于原连通子集 k0,且 关联矩阵第 IND 行第 l 列元素与第 ld 行第 l 列元素同为“真”,则
IF(RA(j)=FALSE and RB(j)=TRUE),THEN 如果第 IND 行第 j 列元素为“假”,
RA(j)=TRUE
网络连通性算法
网络定义
节点与支路的集合,该集合中的节点与支路的连接关系可通过一节点-节点关联矩 阵 A 充分表达:
A=[aij]n×n i,j=1,2,„,n
式中:aij=
0,当节点i与节点j间无支路直接相连, 1,当节点i与节点j间有支路直接相连。
n—网络节点数
连通性算法
理论算法: 称矩阵 A 为网络一级连通矩阵,A2 为二级连通矩阵,„,An-1 为 n-1 级连通矩阵。
如果 RA(l)为“真”,连通子集 k0 中节 点 l 的子集号置为 N
LOOP1 l=IND+1,Nd
l 自 IND+1 至 Nd 循环
IF(NDSO(l)=k0 and NDS(l)=0) THEN 如果节点 l 属原子集 k0 且无新子集号,则
IND=l
将寻找下一连通子集的起始节点号置为 l
GOTO 10
A2=AA=[a2ij]n×n i,j=1,2,„,n
式中:a2ij=
0,当节点i与节点j间无支路直接且经第3节点k相连, 1,当节点i与节点j间有支路直接或经第3节点k相连。
k=1,2,„,n,k≠i,j
„„
式中:
n1个 An-1= AA A =[an-1ij]n×n i,j=1,2,„,n
RA(J)=TRUE
关联矩阵第 IND 行第 J 列元素置为“真”
M=M+1
关联矩阵第 IND 行“真”元素计数+1
END IF
END IF
END IF
END IF
END LOOP1
将节点连通矩阵第 IND+1~Nd 行与第 IND 行比较,寻找包含节点 IND 的连通子集
LOOP1 WHILE(M<NST(k0,2) and M>NSUM) 当 M<子集 k0 节点数且有新“真”元素
RB(l)=FALSE
关联矩阵第 ld 行第 l 列元素置为“假” 节点 ld 新连通子集
END LOOP3
号时,循环
RB(ld)=TRUE
节点关联矩阵第 ld 行对角元素置 1
形成节点关联矩阵的第 ld 行 RB
LOOP3 l=1,Nc
l 自 1 至 Nc 循环
IF(NCT0(l)=k0),THEN
RB(K)=TRUE
关联矩阵第 ld 行第 K 列元素置为“真”
END IF
END IF
IF(K=ld),THEN
如果节点号 K 等于节点号 ld,则
IF(I≠0 and I≠K),THEN
如果节点号 I 不等于 0 和 K,则
RB(I)=TRUE
关联矩阵第 ld 行第 I 列元素置为“真”
END IF
IF(J=ld),THEN
如果节点号 J 等于节点号 ld,则
IF(I≠0 and I≠J),THEN
如果节点号 I 不等于 0 和 J,则
RB(I)=TRUE
关联矩阵第 ld 行第 I 列元素置为“真”
END IF
IF(K≠0 and K≠I and K≠J),THEN 如果节点号 K 不等于 0 和 I 和 J,则
如果元件 l 属于原连通子集 k0,则
IF(KND(l)≠‘开关’or (KND(l)=‘开关’and CNT(l)=‘合’),THEN
I=NOD(l,1) J=NOD(l,2) K=NOD(l,3) 取元件 l 的各端节点号
IF(I=ld),THEN
如果节点号 I 等于节点号 ld,则
IF(J≠0 and J≠I),THEN
an-1ij=
0,当节点i与节点j间无支路直接且经其它1,2,,n 1,当节点i与节点j间有支路直接或经其它1,2,,n

2个节点相连, 2个节点相连。
矩阵 An-1 的每一线性无关的行或列中“1”元素对应的节点均处于同一连通子集中。
实际算法:
若矩阵 A 第 i(i=1,2,„,n)行元素与第 j(j=i+1,i+2,„,n)行元素中第 k 列元素 aik 和 ajk 同为“1”,则第 j 行中的其它“1”元素均填入第 i 行的相应列中。结果矩阵 A 第 i 行中所有“1”元素对应的节点处于同一连通子集中。
关联矩阵第 IND 行第 I 列元素置为“真”
M=M+1
关联矩阵第 IND 行“真”元素计数+1
END IF
IF(K≠0 and K≠I and K≠J),THEN 如果节点号 K 不等于 0 和 I 和 J,则
RA(K)=TRUE
关联矩阵第 IND 行第 K 列元素置为“真”
M=M+1
关联矩阵第 IND 行“真”元素计数+1
行 IND 列 j 置为“真” 且 ld 行第 j 列元素为“真”,则
M=M+1
关联矩阵第 IND 行“真”元素计数+1
END IF
END LOOP4
GOTO 20
跳出循环 3
END LOOP3
20 END LOOP2
END LOOP1
N=N+1
连通子集计数+1
IF(M=NST(k0,2)),THEN LOOP1 l=1,Nd
如果节点号 J 不等于 0 和 I,则
RB(J)=TRUE
关联矩阵第 ld 行第 J 列元素置为“真”
END IF
IF(K≠0 and K≠I and K≠J),THEN 如果节点号 K 不等于 0 和 I 和 J,则
RB(K)=TRUE
关联矩阵第 ld 行第 K 列元素置为“真”
END IF
END IF
END IF
END IF
IF(K=IND),THEN
如果节点号 K 等于节点号 IND,则
IF(I≠0 and I≠K),THEN
如果节点号 I 不等于 0 和 K,则
RA(I)=TRUE
关联矩阵第 IND 行第 I 列元素置为“真”
M=M+1
关联矩阵第 IND 行“真”元素计数+1
END IF
IF(J≠0 and J≠I and J≠K),THEN 如果节点号 J 不等于 0 和 I 和 K,则
初始化
IND=NST(k0,3) N=0
取第 k0 个连通子集的首位节点号 连通子集数置 0
LOOP1 l=1,Nd
l 从 1 至 Nd 循环
IF (NDS0(l)=k0), NDS(l)=0 第 k0 个连通子集的节点 l 的子集号临时置 0
END LOOP1
连通性检验大循环
10 NSUM=1
节点关联矩阵“真”元素计数置为 1
IF(J≠0 and J≠I and J≠K),THEN 如果节点号 K 不等于 0 和 I 和 J,则
RB(J)=TRUE
关联矩阵第 ld 行第 J 列元素置为“真”
END IF
END IF
END IF
END IF
END LOOP3
LOOP3 l=1,Nd
l 自 1 至 Nd 循环
IF(NDS0(l)=k0 and RA(l) and RB(l)),THEN
数据定义
Nc—元件数 Nd—节点数 NOD(Nc,3)—每个元件的节点编号 i、j、k KND(Nc)—每个元件的种类(断路器、隔离开关、母线、线路、变压器„„) CNT(Nc)—每个开关元件的分、合状态(逻辑型,例如:合为“真”,分为“假”) NDS0(Nd)—每个节点初始所在连通子集编号 NDS(Nd)—每个节点所在连通子集编号 NCT0(Nc)—每个元件初始所在连通子集编号
NCT(Nc)—每个元件所在连通子集编号 NST(Ns,3)—每个原始连通子集内[子集号,子集内节点数,子集内首位节点 号]
Ns—最大可能连通子集数 RA(Nd)—节点关联矩阵第 i 行,逻辑型 RB(Nd)—节点关联矩阵第 j 行,逻辑型
检验第 k0 个连通子集的连通性子程序 CNTS(k0)
GOTO 40
END IF
END IF
END IF
ELSE
GOTO30
END IF
END IF
NCT(l)=NDS(I) 40 END LOOP1
RETURN END
元件 l 所在连通子集号为节点 I 的连通子集号
IF(I=IND),THEN
如果节点号 I 等于节点号 IND,则
IF(J≠0 and J≠I),THEN
如果节点号 J 不等于 0 和 I,则
RA(J)=TRUE
关联矩阵第 IND 行第 J 列元素置为“真”
M=M+1
关联矩阵第 IND 行“真”元素计数+1
END IF
IF(K≠0 and K≠I and K≠J),THEN 如果节点号 K 不等于 0 和 I 和 J,则
相关文档
最新文档