一种配电网单线图自动生成方法
文献发布时间:2023-06-19 09:52:39
技术领域
本发明涉及配电网管理技术领域,具体是一种配电网单线图自动生成方法。
背景技术
在配电网运行和管理中,单线图是调度人员经常查看的重要图形资料,传统的单线图主要为手工生成,随着配电网数据的不断增加,且经常变化,在配电GIS和SCADA系统平台上手工生成单线图,工作量越来越大,也越来越存在数据、图形不一致的隐患,配电网地理接线图到单线图的自动转换,能够大大减少数据维护的工作量,提高配电网自动化工程的配置能力,但目前国内外对这一问题的研究不够充足,即使有少量的相关方案,也大多只具备理论的可行性,在实践中则会出现一系列的问题,基于这种情况,如何才能提供一种理论和实际中皆可行的方案,以实现配电网单线图的自动生成,越来越成为相关技术人员急需解决的问题。
发明内容
为了解决上述技术问题,本发明提供一种配电网单线图自动生成方法。
一种配电网单线图自动生成方法,包括自动成图算法,其特征在于:
所述自动成图算法的步骤如下:
1)初始化图模型:创建一个简单无向图G,把节点对象和边对象加入到图中;
2)找出主干线(1级支线)mainLine:具体方法为,以源点为起点,以叶子结点为终点,找出一条最长的支线,此线即主干线,又称1级支线,把主干线上的所有节点标记为已访问,然后把主干线放入链表mainLines>中;
3)构建其他各级支线:找到主干线中含有分叉的节点node,即邻居个数大于2的节点,把节点node放入branchNodeList>中,以此类推,找出所有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>中;
3)构建其他各级支线:找到主干线中含有分叉的节点node,即邻居个数大于2的节点,把节点node放入branchNodeList>中,以此类推,找出所有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。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。
- 一种混合式布局的配电网单线图自动生成方法
- 一种低压配电网三相单线图初始布局自动生成方法