掌桥专利:专业的专利平台
掌桥专利
首页

一种配电网单线图自动生成方法

文献发布时间:2023-06-19 09:52:39


一种配电网单线图自动生成方法

技术领域

本发明涉及配电网管理技术领域,具体是一种配电网单线图自动生成方法。

背景技术

在配电网运行和管理中,单线图是调度人员经常查看的重要图形资料,传统的单线图主要为手工生成,随着配电网数据的不断增加,且经常变化,在配电GIS和SCADA系统平台上手工生成单线图,工作量越来越大,也越来越存在数据、图形不一致的隐患,配电网地理接线图到单线图的自动转换,能够大大减少数据维护的工作量,提高配电网自动化工程的配置能力,但目前国内外对这一问题的研究不够充足,即使有少量的相关方案,也大多只具备理论的可行性,在实践中则会出现一系列的问题,基于这种情况,如何才能提供一种理论和实际中皆可行的方案,以实现配电网单线图的自动生成,越来越成为相关技术人员急需解决的问题。

发明内容

为了解决上述技术问题,本发明提供一种配电网单线图自动生成方法。

一种配电网单线图自动生成方法,包括自动成图算法,其特征在于:

所述自动成图算法的步骤如下:

1)初始化图模型:创建一个简单无向图G,把节点对象和边对象加入到图中;

2)找出主干线(1级支线)mainLine:具体方法为,以源点为起点,以叶子结点为终点,找出一条最长的支线,此线即主干线,又称1级支线,把主干线上的所有节点标记为已访问,然后把主干线放入链表mainLines中,最后,把链表mainLines放入allLines>中;

3)构建其他各级支线:找到主干线中含有分叉的节点node,即邻居个数大于2的节点,把节点node放入branchNodeList中,从此节点开始,遍历branchNodeList中的每个节点,直至所有后续叶子节点遍历完成,找出一条最长的支线,放入2级支线集list中,以此类推,将所有2级支线放入2级支线集list 中后,把2级支线集list放入allLines>中,以此类推,找出所有3级支线、4级支线及后续支线,并放入 allLines>中;

4)建立父支线与子支线之间一对多的映射关系;

5)为支线上的节点设置坐标:奇数级支线水平放置,偶数级支线竖直放置,同一级别支线按上下或者左右方向交替放置,之后,按照支线布局方向,依次为支线上的节点设置坐标;

6)处理交叉或者重叠;

在布局过程中,如果一个节点的邻居节点数量>4,则采用九宫格布局算法,所述九宫格布局算法的步骤如下:

1)绘制一条支线L时,取L的根节点RootNode;

2)假设已经绘制的支线中,有N条支线的根节点是RootNode;

3)如果N>2,则采用九宫格布局;

4)依次尝试各个方向,直至找出还未被其他支线占据的方向;

5)按此方向为支线上的各个节点设置坐标;

6)处理九宫格布局引起的交叉或者重叠。

进一步的,处理交叉或者重叠的算法的步骤为:

1)初始化,设存放支线的栈为stack={Line};

2)如果stack为空,则结束,如果stack不为空,则取L1=stack 栈顶元素;

3)判断L1是否和已经布局过的支线产生交叉或者重叠;

4)如果没有交叉或者重叠,则移除stack栈顶元素,继续步骤 2;

5)如果有交叉或者重叠,则找到第一条和L1交叉或者重叠的支线L2,分两种情况处理:

a)L1是按九宫格布局的支线;

b)L1不是按九宫格布局的支线;

6)如果是“无法解决的交叉或重叠”,则直接移除stack栈顶元素,继续步骤2;

7)如果是通过拉伸平移的方法处理的交叉或者重叠,则把拉伸平移的所有支线加入栈stack;

8)继续步骤2。

进一步的,当L1是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤为:

如果L1和L2根节点相同,则结束;

如果L2是从L1根节点发出的支线,则移动支线L2。

进一步的,当L1不是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤为:

1)[重布]如果L1是L2的父线,即由于拉伸L1引起交叉或者重叠,则重布L2,结束;

2)[重布]如果L1的父线为九宫格布局,则九宫格重画L1,结束;

3)[翻转]如果L1的反方向没有已布局的兄弟支线,即和L1有相同根节点的支线,则

a)将L1翻转;

b)如果不交叉,则结束;

计算拉伸平移方案

c)拉伸平移方案1,L1不翻转

i.如果L1和L2是兄弟关系,则无法通过拉伸平移解决;

ii.如果L1和L2重叠,则L1移动1个单位;

iii.如果L1是L2的子线,则L1的直接父线PL1沿其父线方向移动,

1.平移的线=PL1;

2.移动的距离=交叉点和L1终点的距离;

iv.否则,将L1沿其父线方向移动,

1.平移的线=L1;

2.如果L1和L2重合,则移动的距离=1个单位;

3.如果L1父线和L2同向,则移动的距离=交叉点和L2 终点的距离;

4.否则,则移动的距离=交叉点和L2起点的距离;

d)拉伸平移方案2,L1翻转,记L1翻转后为L1’,和线路L2’交叉或重叠

i.如果L1反方向有已布局兄弟支线,则无法通过拉伸平移解决;

ii.否则,计算L1’的拉伸平移方案,计算方法同方案1;

4)如果方案1和方案2都无法通过拉伸平移解决

a)[重布]如果L1和L2重合且L2是L1的兄弟支线,则九宫格重画L1,结束;

b)[无法解决]如果是“无法解决的交叉或重叠”,则结束;

5)[拉伸平移]

a)选取较好的移动方案

i.如果两种方案一个移动L1一个移动PL1,则优先选择移动L1的方案;

ii.否则,优先选择移动距离较小的方案;

b)拉伸平移。

进一步的,所述“无法解决的交叉或重叠”,是指本算法可能进入死循环,设置最多处理交叉或者重叠的次数为10次,如果超出所设次数,仍然有交叉或者重叠,则判定为“无法解决的交叉或重叠”,直接退出。

进一步的,所述九宫格布局算法设定16个备选方向,按照顺时针方向依次为向上,偏右上1,右上,偏右上2,向右,偏右下1,右下,偏右下2,向下,偏左下1,左下,偏左下2,向左,偏左上1,左上,偏左上2。

本发明的一种配电网单线图自动生成方法的有益效果为:

1、在理论和实际中均具备足够的可行性,很好地实现了配电网单线图的自动生成,且生成的单线图无重叠、无交叉、自动绘制速度快,在实际应用中,极大地减少了系统维护的工作量,提高了系统维护的效率;

2、在布局过程中,当一个节点的邻居节点数量>4时,如果依然按照上下左右四个方向布局,就会出现布局不开的情况,九宫格布局很好地解决了这一问题;

3、将处理交叉或重叠的次数设置为最多10次,超出10次则判定为“无法解决的交叉或重叠”,直接退出,很好地避免了处理交叉或者重叠的算法可能进入死循环,导致算法无法正常进行的情况。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,但并不是对本发明保护范围的限制。

图1为本发明的一种配电网单线图自动生成方法的九宫格布局的示意图。

图2为本发明的一种配电网单线图自动生成方法中,当L1不是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤1)的示意图;

图3为本发明的一种配电网单线图自动生成方法中,当L1不是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤3)中,拉伸平移方案1情况iii的示意图;

图4为本发明的一种配电网单线图自动生成方法中,当L1不是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤3)中,拉伸平移方案1情况iv的示意图。

具体实施方式

为使说明更加清楚,结合说明书附图图1至图4,对本发明的一种配电网单线图自动生成方法做进一步描述。

一种配电网单线图自动生成方法,包括自动成图算法,其特征在于:

所述自动成图算法的步骤如下:

1)初始化图模型:创建一个简单无向图G,把节点对象和边对象加入到图中;

2)找出主干线(1级支线)mainLine:具体方法为,以源点为起点,以叶子结点为终点,找出一条最长的支线,此线即主干线,又称1级支线,把主干线上的所有节点标记为已访问,然后把主干线放入链表mainLines中,最后,把链表mainLines放入allLines>中;

3)构建其他各级支线:找到主干线中含有分叉的节点node,即邻居个数大于2的节点,把节点node放入branchNodeList中,从此节点开始,遍历branchNodeList中的每个节点,直至所有后续叶子节点遍历完成,找出一条最长的支线,放入2级支线集list中,以此类推,将所有2级支线放入2级支线集list 中后,把2级支线集list放入allLines>中,以此类推,找出所有3级支线、4级支线及后续支线,并放入 allLines>中;

4)建立父支线与子支线之间一对多的映射关系;

5)为支线上的节点设置坐标:奇数级支线水平放置,偶数级支线竖直放置,同一级别支线按上下或者左右方向交替放置,之后,按照支线布局方向,依次为支线上的节点设置坐标;

6)处理交叉或者重叠;

在布局过程中,如果一个节点的邻居节点数量>4,则采用九宫格布局算法,所述九宫格布局算法的步骤如下:

1)绘制一条支线L时,取L的根节点RootNode;

2)假设已经绘制的支线中,有N条支线的根节点是RootNode;

3)如果N>2,则采用九宫格布局;

4)依次尝试各个方向,直至找出还未被其他支线占据的方向;

5)按此方向为支线上的各个节点设置坐标;

6)处理九宫格布局引起的交叉或者重叠。

进一步的,处理交叉或者重叠的算法的步骤为:

1)初始化,设存放支线的栈为stack={Line};

2)如果stack为空,则结束,如果stack不为空,则取L1=stack 栈顶元素;

3)判断L1是否和已经布局过的支线产生交叉或者重叠;

4)如果没有交叉或者重叠,则移除stack栈顶元素,继续步骤 2;

5)如果有交叉或者重叠,则找到第一条和L1交叉或者重叠的支线L2,分两种情况处理:

a)L1是按九宫格布局的支线;

b)L1不是按九宫格布局的支线;

6)如果是“无法解决的交叉或重叠”,则直接移除stack栈顶元素,继续步骤2;

7)如果是通过拉伸平移的方法处理的交叉或者重叠,则把拉伸平移的所有支线加入栈stack;

8)继续步骤2。

进一步的,当L1是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤为:

如果L1和L2根节点相同,则结束;

如果L2是从L1根节点发出的支线,则移动支线L2。

进一步的,当L1不是按九宫格布局的支线时,处理交叉或者重叠的算法的步骤为:

1)[重布]如果L1是L2的父线,即由于拉伸L1引起交叉或者重叠,则重布L2,结束;

2)[重布]如果L1的父线为九宫格布局,则九宫格重画L1,结束;

3)[翻转]如果L1的反方向没有已布局的兄弟支线,即和L1有相同根节点的支线,则

a)将L1翻转;

b)如果不交叉,则结束;

计算拉伸平移方案

c)拉伸平移方案1,L1不翻转

i.如果L1和L2是兄弟关系,则无法通过拉伸平移解决;

ii.如果L1和L2重叠,则L1移动1个单位;

iii.如果L1是L2的子线,则L1的直接父线PL1沿其父线方向移动,

1.平移的线=PL1;

2.移动的距离=交叉点和L1终点的距离;

iv.否则,将L1沿其父线方向移动,

1.平移的线=L1;

2.如果L1和L2重合,则移动的距离=1个单位;

3.如果L1父线和L2同向,则移动的距离=交叉点和L2 终点的距离;

4.否则,则移动的距离=交叉点和L2起点的距离;

d)拉伸平移方案2,L1翻转,记L1翻转后为L1’,和线路L2’交叉或重叠

i.如果L1反方向有已布局兄弟支线,则无法通过拉伸平移解决;

ii.否则,计算L1’的拉伸平移方案,计算方法同方案1;

4)如果方案1和方案2都无法通过拉伸平移解决

a)[重布]如果L1和L2重合且L2是L1的兄弟支线,则九宫格重画L1,结束;

b)[无法解决]如果是“无法解决的交叉或重叠”,则结束;

5)[拉伸平移]

a)选取较好的移动方案

i.如果两种方案一个移动L1一个移动PL1,则优先选择移动L1的方案;

ii.否则,优先选择移动距离较小的方案;

b)拉伸平移。

进一步的,所述“无法解决的交叉或重叠”,是指本算法可能进入死循环,设置最多处理交叉或者重叠的次数为10次,如果超出所设次数,仍然有交叉或者重叠,则判定为“无法解决的交叉或重叠”,直接退出。

进一步的,所述九宫格布局算法设定16个备选方向,按照顺时针方向依次为向上,偏右上1,右上,偏右上2,向右,偏右下1,右下,偏右下2,向下,偏左下1,左下,偏左下2,向左,偏左上1,左上,偏左上 2。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。

相关技术
  • 一种混合式布局的配电网单线图自动生成方法
  • 一种低压配电网三相单线图初始布局自动生成方法
技术分类

06120112334382