发明内容
为克服上述矩阵法的不足,本发明的目的就是要提出一种既具有矩阵法编程相对简单又能节省电脑内存和运算时间的网络拓扑分析方法。
为实现上述目的,本发明提出了一种以邻接矩阵为系数矩阵的方程求解法的网络拓扑分析方法,具体的步骤是:
步骤1:编制所分析电网的节点开关关联表、节点支路关联表、节点信息表、母线信息表。
步骤2:设置当前要进行母线分析的电压等级标志KV=1,开始母线分析。
步骤3:根据各节点所连闭合开关数进行节点优化编号。
步骤4:形成反映节点与开关关联关系的邻接矩阵A作为方程AX=B的系数矩阵。
步骤5:对邻接矩阵A进行消元,根据消元结果对右端向量B赋值,通过回代得到方程的解X,解向量X的元素xi的值为节点i的母线号。
步骤6:设置当前电压等级KV=KV+1。
步骤7:判断KV是否大于总的电压等级数KVS,如果KV大于KVS则进入到步骤8开始电气岛分析;如果KV不大于KVS,则返回到步骤3,继续进行新的电压等级的母线分析。
步骤8:根据支路两端节点形成母线支路关联表。
步骤9:根据各母线所连支路数进行母线优化编号。
步骤10:形成反映母线与支路关系的邻接矩阵A作为方程AX=B的系数矩阵。
步骤11:对邻接矩阵A进行消元,根据消元结果对右端向量B赋值,通过回代得到方程的解X,解向量X的元素xi的值为母线i的电气岛号。
本发明所述的矩阵方程AX=B的求解方法如下:
行消去过程采用如下公式:
k=1,…,i-1, j=k+1,…,n
回代过程公式如下:
xn=bn
xi=xj i=n-1,…,1j=i+1,…,n
式中, 表示第i行存在非零上三角元素。对于本方法,只需找到其中任一个非零上三角元素即可。
对于母线分析,解向量X的元素xi的值表示节点i的母线号;对于电气岛分析,解向量X的元素xi的值表示母线i的电气岛号。
本发明所述的邻接矩阵方程AX=B,系数矩阵A是布尔量,右端向量B是自然数。
本发明所述的邻接矩阵A的形成方法如下:
在进行步骤4母线分析时把节点作为图的顶点,闭合开关作为图的边。邻接矩阵A的对角线元素赋值1,顶点之间有边联系的元素赋值1,顶点之间没有边联系的元素赋值0。
在进行步骤10电气岛分析时把母线作为图的顶点,支路作为图的边,邻接矩阵A的对角线元素赋值1,顶点之间有边联系的元素赋值1,顶点之间没有边联系的元素赋值0。
本发明所述的右端向量B则根据邻接矩阵A消元后形成的上三角矩阵特点进行赋值,具体赋值方法如下:
从第1行开始检查上三角矩阵每行的元素,即对角线右侧的元素,如果某行存在非零元素,右端向量B中对应的行赋0值;不存在非零元素,则赋非零值,非零值从上到下依次为1,2,3,…,m。
与现有矩阵法相比,本发明的方程求解邻接矩阵法具有以下有益效果:
1、由于本发明仍然利用了矩阵法的优点,具有矩阵法概念清晰、编程简单的特点,但运算速度比现有的矩阵法要快得多。
2、由于本发明通过求解以邻接矩阵A为系数矩阵的线性方程组进行网络拓扑分析,方程组采用布尔运算形式的高斯消元法直接求解,无需迭代。算法根据拓扑分析和布尔运算的特点简化了回代过程,并且根据消元后的系数矩阵特点来对右端向量B进行赋值,避免了前代过程,同时还可以利用求解大型稀疏方程组的各种技术手段。以一个有n个顶点的网络图进行连通图分析为例。采用邻接矩阵自乘算法最坏情况下的计算次数为2n4次,采用平方法求全接通矩阵的计算次数为n2(2n-1)log2(n-1)次,而采用本发明的方法分析时整个计算量小于2n3/3次。由此可见,本发明的计算量小于矩阵自乘求全接通矩阵的矩阵法的1/(3n),也小于平方法求全接通矩阵的矩阵法的1/(3log2(n-1)),顶点越多,效率越明显。
3、由于本发明在求解方程的运算过程中,邻接矩阵A及消元后的矩阵一直保持了稀疏性,可以采用稀疏技术进行排零存储、排零运算和节点优化编号,可以使计算所占电脑存储空间更少、计算量更小。
具体实施方式
下面结合附图对本发明作进一步地说明。图2是一个简单电力系统网络的物理模型,包括三个厂站四个电压等级,其中厂站一的电压等级1有8个节点、厂站二的电压等级2有4个节点、厂站三的第一个电压等级3有2个节点、厂站三的第二个电压等级4有6个节点,节点按电压等级编号,图中省略了隔离开关。按照图1所示的流程对图2所示的简单网络的物理模型进行网络拓扑分析的步骤如下:
步骤1:编制所分析电网的节点开关关联表、节点支路关联表、节点信息表、母线信息表。
步骤2:设置当前要进行母线分析的电压等级标志KV=1,开始母线分析。
步骤3:根据各节点所连闭合开关数进行节点优化编号(注:为了使叙述清晰简洁,本算例说明时没有使用优化编号技术和稀疏技术)。
步骤4:按如下方法形成反映节点与开关关联关系的邻接矩阵A1作为方程A1X=B的系数矩阵:
对第1个电压等级进行母线分析,母线分析时只考虑开关元件,不考虑其他元件。把节点作为图的顶点,闭合开关作为图的边,形成反映节点与开关关联关系的邻接矩阵A1,矩阵对角线元素都为1,顶点之间有边联系的非对角线元素为1,顶点之间没有边联系的非对角线元素为0。如:节点1只与节点3、节点5、节点6有开关联系且都闭合,所以邻接矩阵A1第1行的非对角线元素a13、a15、a16为1,其余都为0;节点6只与节点1、节点8有开关联系,但节点6与节点8之间的开关为断开状态不作为图的边,所以邻接矩阵A1第6行的非对角线元素a61为1,其余都为0。
步骤5:对邻接矩阵A1进行消元,根据消元结果对右端向量B赋初值,通过回代得到解向量,解向量X的元素xi的值表示节点i的母线号。
对邻接矩阵A1采用高斯消元法进行消元后的矩阵A10如下:
对右端向量B赋值方法如下:
从消去后得到的矩阵A10看,第1行存在非零上三角元素a13、a15、a16,因此右端向量B的第1行赋值为0,同样第2行至第6行都存在非零上三角元素,因此右端向量B的第2行至第6行都赋值为0;第7、8行的上三角元素都为0,右端向量B的第7行赋值为1,第8行赋值为2。则右端向量
B=[0 0 0 0 0 0 1 2]T。
回代过程中,x8=2,x7=1;由于存在a67=1,所以x6=x7=1;由于存在a56=1,所以x5=x6=1;同理,得到x4、x3、x2、x1都等于1。因此解向量为:
X=[1 1 1 1 1 1 1 2]T
由此得出拓扑分析结果为:节点1、节点2、节点3、节点4、节点5、节点6、节点7的母线号都是1,即母线1包含节点1、节点2、节点3、节点4、节点5、节点6、节点7共7个节点;只有节点8的母线号是2,表示母线2只包含节点8。
步骤6:设置当前电压等级KV=KV+1。
步骤7:判断KV是否大于总的电压等级数4,如果KV大于4则进入到步骤8开始电气岛分析;如果KV不大于4,则返回到步骤3,继续进行新的电压等级的母线分析。
对所有4个电压等级进行母线分析后得到的拓扑分析结果见表1。
表1 图2实施例的母线分析结果
步骤8:根据支路两端节点形成母线支路关联表。
步骤9:根据各母线所连支路数进行母线优化编号(注:为了使叙述清晰简洁,本算例说明时没有使用优化编号技术和稀疏技术)。
步骤10:按如下方法形成反映母线与支路关系的邻接矩阵A作为方程AX=B的系数矩阵。
根据母线分析结果得到网络模型,把母线作为图的顶点,支路作为图的边,形成反映母线与支路关联关系的邻接矩阵A,矩阵对角线元素都为1,顶点之间有边联系的非对角线元素为1,顶点之间没有边联系的非对角线元素为0。如:母线1只与母线3有支路联系,所以邻接矩阵A第1行的非对角元素a13为1,其余都为0。
步骤11:对邻接矩阵A进行消元,根据消元结果对右端向量B赋值,通过回代得到解向量,解向量X的元素xi的值表示母线i的电气岛号。
对邻接矩阵A采用高斯消元法进行消元后的矩阵A0如下:
对右端向量B赋值方法如下:
从消元后得到的矩阵A0看,第1行存在非零上三角元素a13,因此右端向量的第1行赋值为0,同样第2行至第4行都存在非零上三角元素,因此右端向量的第2行至第4行都赋值为0;第5、6行的上三角元素都为0,右端向量的第5行赋值为1,第6行赋值为2。则右端向量
B=[0 0 0 0 1 2]T
回代过程中,x6=2,x5=1;由于存在a46=1,所以x4=x6=2;由于存在a35=1,所以x3=x5=1;由于存在a26=1,所以x2=x6=2;由于存在a13=1,所以x1=x3=1。因此解向量为:
X=[1 2 1 2 1 2]T
由此得出拓扑分析结果为:母线1、母线3、母线5的电气岛号为1,即电气岛1包含母线1、母线3、母线5;母线2、母线4、母线6的电气岛号为2,即电气岛2包含母线2、母线4、母线6。
图3是采用本发明进行网络拓扑分析后的拓扑图。
本发明可以采用任何一种编程语言和编程环境实现,如C语言、C++、FORTRAN、Delphi等。开发环境可以采用Visual C++、Borland C++Builder、Visual FORTRAN等。应用环境:可以作为能量管理系统和配电管理系统等实时系统的一个模块使用,也可以作为一个离线的电力系统分析软件使用。
本发明的另一个实施例是对某一时期的杭州电网进行拓扑分析:
该电网是一大型电网,当时规模为:厂站187个,母线段715个,开关7329个,输电线路318条,变压器250台,其中双绕组变压器127台,三绕组变压器123台,串联电抗器支路11条,无功补偿电容232个,无功补偿电抗27个;节点数7097个,支路包括输电线路、变压器和串联电抗器支路共825条。
拓扑分析结果形成母线957个,电气岛49个。其中1个为活岛,母线数为704个,48个死岛共包括122个母线,其余的是孤立母线。
计算环境为主频1.10GHz的Intel Pentium的PC机,母线分析耗时16ms,电气岛分析耗时15ms,拓扑分析的总耗时约为31ms。