资源描述:
《拓扑-网络连通性算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、网络连通性算法网络定义节点与支路的集合,该集合中的节点与支路的连接关系可通过一节点-节点关联矩阵A充分表达:A=[aij]n×ni,j=1,2,…,n式中:aij=n—网络节点数连通性算法理论算法:称矩阵A为网络一级连通矩阵,A2为二级连通矩阵,…,An-1为n-1级连通矩阵。A2=AA=[a2ij]n×ni,j=1,2,…,n式中:a2ij=k=1,2,…,n,k≠i,j……An-1==[an-1ij]n×ni,j=1,2,…,n式中:an-1ij=矩阵An-1的每一线性无关的行或列中“1”元素对应的节点均处于同一连通子集中。实际算法:若矩阵A第i(i=1,2,…,n)行元素与第j(j=
2、i+1,i+2,…,n)行元素中第k列元素aik和ajk同为“1”,则第j行中的其它“1”元素均填入第i行的相应列中。结果矩阵A第i行中所有“1”元素对应的节点处于同一连通子集中。数据定义Nc—元件数Nd—节点数NOD(Nc,3)—每个元件的节点编号i、j、kKND(Nc)—每个元件的种类(断路器、隔离开关、母线、线路、变压器……)CNT(Nc)—每个开关元件的分、合状态(逻辑型,例如:合为“真”,分为“假”)NDS0(Nd)—每个节点初始所在连通子集编号NDS(Nd)—每个节点所在连通子集编号NCT0(Nc)—每个元件初始所在连通子集编号NCT(Nc)—每个元件所在连通子集编号NST(N
3、s,3)—每个原始连通子集内[子集号,子集内节点数,子集内首位节点号]Ns—最大可能连通子集数RA(Nd)—节点关联矩阵第i行,逻辑型RB(Nd)—节点关联矩阵第j行,逻辑型检验第k0个连通子集的连通性子程序CNTS(k0)初始化IND=NST(k0,3)取第k0个连通子集的首位节点号N=0连通子集数置0LOOP1l=1,Ndl从1至Nd循环IF(NDS0(l)=k0),NDS(l)=0第k0个连通子集的节点l的子集号临时置0ENDLOOP1连通性检验大循环10NSUM=1节点关联矩阵“真”元素计数置为1LOOP1l=1,Ndl从1至Nd循环RA(l)=FALSE第k0个连通子集中第IND
4、行第l列元素置为“假”ENDLOOP1RA(IND)=TRUE节点关联矩阵第IND行对角元素置1M=1节点关联矩阵第IND行“真”元素计数置为1形成节点关联矩阵的第IND行RALOOP1l=1,Ncl从1至Nc循环IF(NCT0(l)=k0),THEN如果元件l属于初始连通子集k0,则IF(KND(l)≠‘开关’or(KND(l)=‘开关’andCNT(l)=‘合’),THENI=NOD(l,1)J=NOD(l,2)K=NOD(l,3)取元件l的各端节点号IF(I=IND),THEN如果节点号I等于节点号IND,则IF(J≠0andJ≠I),THEN如果节点号J不等于0和I,则RA(J)=
5、TRUE关联矩阵第IND行第J列元素置为“真”M=M+1关联矩阵第IND行“真”元素计数+1ENDIFIF(K≠0andK≠IandK≠J),THEN如果节点号K不等于0和I和J,则RA(K)=TRUE关联矩阵第IND行第K列元素置为“真”M=M+1关联矩阵第IND行“真”元素计数+1ENDIFENDIFIF(J=IND),THEN如果节点号J等于节点号IND,则IF(I≠0andI≠J),THEN如果节点号I不等于0和I,则RA(I)=TRUE关联矩阵第IND行第I列元素置为“真”M=M+1关联矩阵第IND行“真”元素计数+1ENDIFIF(K≠0andK≠IandK≠J),THEN如果
6、节点号K不等于0和I和J,则RA(K)=TRUE关联矩阵第IND行第K列元素置为“真”M=M+1关联矩阵第IND行“真”元素计数+1ENDIFENDIFIF(K=IND),THEN如果节点号K等于节点号IND,则IF(I≠0andI≠K),THEN如果节点号I不等于0和K,则RA(I)=TRUE关联矩阵第IND行第I列元素置为“真”M=M+1关联矩阵第IND行“真”元素计数+1ENDIFIF(J≠0andJ≠IandJ≠K),THEN如果节点号J不等于0和I和K,则RA(J)=TRUE关联矩阵第IND行第J列元素置为“真”M=M+1关联矩阵第IND行“真”元素计数+1ENDIFENDIFE
7、NDIFENDIFENDLOOP1将节点连通矩阵第IND+1~Nd行与第IND行比较,寻找包含节点IND的连通子集M<子集k0节点数且有新“真”元素出现时,循环LOOP1WHILE(M<NST(k0,2)andM>NSUM)当节点ld属于连通子集k0,且关联矩阵第IND行第ld列元素为“假”,且未找到节点ld新连通子集号时,循环NSUM=MLOOP2ld=IND+1,Ndld自IND+1至Nd循环IF(NDS0(ld)=