电网节点编号优化

为提高电网模型中导纳矩阵的求解速度,通常的做法是对电网模型中的各个节点进行重新编号。对提高后续网络计算具有重要的意义。
常用的节点优化编号的方法有:静态优化法、半动态优化法和动态优化法。
三种方法原理介绍:
(1)静态优化法:导纳矩阵的行号就是网络的节点号 , 其每行的非零元素就是相应节点所连接的支路数(非对地支路),因此按照连接支路最少的节点顺序编号 ,就是静态优化法 。编号前, 统计网络各节点连接支路数,支路少的优先编号 ,若支路相同 ,则顺序编号。静态优化法的主要特点是优化快 , 编程简单 , 但优化效果差。
(2)半动态优化法:该方法的基本思想是找到连接支路最少的节点进行编号,然后消去该节点, 每消去一个节点 ,尚未编号节点的支路连接数就会发生变化, 然后从未编号节点中查找连接支路最少的节点进行编号。如此反复 ,直到消去所有节点 。半动态优化法考虑了各节点出线数目的变动情况, 注入元素减少 ,具有优化效果好 ,编程简单 ,优化快等优点, 但与动态优化法相比元素仍然过多 。
(3)动态优化法:动态优化法分为两步 ,第一步是将网络的所有节点轮流进行一次消去运算 ,统计各节点消去后各自增加的新支路数, 将增加支路数最少的节点编号为 1, 然后消去该节点;第二步是将尚未编号的每个节点依次进行一次消去运算 ,统计各节点消去后各自增加的支路数, 将增加支路数最少的节点编号为2,随后消去该节点。依此类推,对尚未编号的节点全部按照此操作,即完成节点编号优化。从理论上说 ,动态法的优化效果最好, 但优化速度慢 ,运算量大 。

这里采用半动态法进行节点优化编号,具体过程如下:

  1. 根据电网的拓扑结构形成邻接矩阵,并用数组num记录各个节点连接的支路数;
  2. 寻找连接支路最少的节点编号,将其存入数组line中;当连接节点数量相同时,取原编号顺序较小的编号存入line中;
  3. 修改消去节点后增减的支路,并更新数组num的值;
  4. 消去节点,即消去矩阵中相应节点的行和列;
  5. 回到第二步,反复进行消去节点;
  6. 调整平衡节点在line中的位置,将平衡节点的编号放到line的最后位置。
function line=nodeoptimization(LN,n,slackbus)
%LN is parameters of branch;n is the number of bus;slackbus is slack bus;
%mn is the bus which has the least branch;code is serial number before
%optimization;line is serial number after optimization;num is number of
%branches of each bus.
deletematrix=zeros(n);
code=1:n;
num=zeros(1,n);
for i=1:length(LN(:,1))    %生成支路关联矩阵deletematrix      矩阵num记录每个节点的度
    deletematrix(LN(i,1),LN(i,2))=1;
    num(LN(i,1))=num(LN(i,1))+1;
    deletematrix(LN(i,2),LN(i,1))=1;
    num(LN(i,2))=num(LN(i,2))+1;
end
line=zeros(1,n);
for i=1:n-1      %节点优化编号:半动态优化法。                       %半动态优化法:找到连接支路最少的节点进行编号,然后消去该节点,每消去
    [~,mn]=min(num);  %mn为节点度最小的节点编号                                 %一个节点 ,尚未编号节点的支路连接数就会发生变化,然后 
    for j=1:length(num)                                                          %从未编号节点中查找连接支路最少的节点进行编号
        if deletematrix(mn,j)~=0
            if j

Github代码下载:FancyNum

你可能感兴趣的:(电网节点编号优化)