一种基于Spark的电力系统拓扑岛快速识别系统和方法
技术领域
本发明涉及电网分析技术领域,特别涉及一种基于Spark的电力系统拓扑岛快速识别系统和方法。
背景技术
电力系统拓扑分析是电力能量(生产、传输、使用)流动过程中,对用于转换、保护、控制这一过程的元件在电力系统分析中认为阻抗近似为0的元件状态的分析,目的是形成便于电网分析与计算的模型,它界于底层和高层之间。就调度自动化而言,底层信息(如SCADA)是拓扑分析的基础,高层应用(如状态估计、安全调度等)是拓扑分析的目的。可见,电力系统在实时运行中,这些元件的状态变化决定了运行方式的变化。如何依据厂站实时信息、快速、准确地跟踪这些变化,是电力系统运行控制和风险分析中需要解决的一个基础而关键的问题。
进行厂站拓扑分析时厂站内双端元件表示为图的边,单端元件处理为图的顶点,分析后厂站划分为若干母线节点;进行网络拓扑分析时系统内输电线路、变压器等有阻抗元件表示为图的边,母线节点处理为图的顶点,分析后系统被划分为若干个子系统。因此厂站拓扑分析和系统拓扑分析都归结为对不同层次无向图划分连通片问题即拓扑岛识别问题。
目前对电力系统拓扑岛识别的方法主要有深度搜索法,广度搜索法,关联矩阵法等。深度/广度搜索原理简单,但是对复杂网络略显不足;关联矩阵计算量大,对于大型电网计算效率偏低。
发明内容
本发明主要解决的技术问题是提供一种基于Spark的电力系统拓扑岛快速识别系统和方法。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于Spark的电力系统拓扑岛快速识别系统,包括数据收集模块、制表模块、制图模块、识别模块;其中,
所述收集模块,用于获取并解析CIM/E文件,得到所在电网的拓扑连接数据;
所述制表模块,用于根据拓扑连接数据进行整理和解析,得到支路表与器件表;
所述制图模块,通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图;
所述识别模块,对电网系统GraphX拓扑图进行计算处理,得到整个电网系统GraphX拓扑图中的子图,对所述子图进行分类处理,得到每个子图对应顶点的顶点属性,根据顶点属性对拓扑岛进行快速识别。
进一步的,还包括检查模块,所述检查模块根据CIM/E文件的数据对拓扑分析的识别结果进行检查确认。
具体的,所述收集模块,采用基于Java的Dom4J API,对数据进行分析处理,得到拓扑包和核心包数据。
作为一种改进,所述制表模块,根据解析出来的拓扑包和核心包数据进行处理分析,得到器件ID—器件ID的支路连接关系,再以器件ID作为顶点,器件ID—器件ID作为边,制作支路表与器件表。
作为更进一步改进,所述制图模块中还包括过滤单元,在制作支路表与器件表过程中,剔除掉CIM文件中虚拟的电器元件,并对在E文件中描述为断开的断路器与刀闸的器件也需要进行过滤。
具体的,所述“通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图”具体包括:对顶点与边进行映射处理,给每个器件的ID映射一个长整形数字,以器件的ID作为该顶点的属性,通过SparkContext与SparkConf进入Spark,读取点和边数据后以RDD的方式进行存储;再通过点的RDD和边的RDD构建电网系统GraphX拓扑图。
进一步的,在进行拓扑岛识别之前还包括对构建好的Graph图进行处理,过滤掉图中没有邻接节点的节点。
作为进一步改进,所述识别模块具体采用Connected Components算法对过滤后的电网系统GraphX拓扑图进行计算处理,得到并缓存处理后的整个电网系统GraphX拓扑图中的子图;将电网系统GraphX拓扑图的子图的每个顶点进行分类,获取并缓存电网系统GraphX拓扑图中子图中的所有顶点属性,所获取的顶点属性中包括了顶点的器件ID与顶点的所属子图数据;对顶点进行collect操作,将相同子图的顶点进行汇总分类,子图的数量即为电网系统中拓扑岛的数量,子图中的器件ID则为该拓扑岛中的电器元件,继而完成拓扑岛的快速识别。
再者,所述检查模块在进行检查之前还包括对汇总的子图结果进行分析,剔除没有电源注入的子图。
一种基于Spark的电力系统拓扑岛快速识别方法,包括如下步骤:
S1:获取并解析CIM/E文件,得到所在电网的拓扑连接数据;
S2:根据拓扑连接数据进行整理和解析,得到支路表与器件表;
S3:通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图;
S4:对电网系统GraphX拓扑图进行计算处理,得到整个电网系统GraphX拓扑图中的子图,对所述子图进行分类处理,得到每个子图对应顶点的顶点属性,根据顶点属性对拓扑岛进行快速识别。
本发明公开了一种基于Spark的电力系统拓扑岛快速识别系统和方法,适用于大型电网系统的拓扑分析,通过Spark框架下的大规模并行图计算组件GraphX构建电网拓扑图,并且通过基于内存的并行计算对拓扑图进行分析处理,得到电网系统中的拓扑岛,GraphX并行图计算框架能够实现大规模拓扑图的并行计算分析,对于复杂的大型电网系统,采用GraphX能够快速识别计算出电网中的拓扑岛。
附图说明
图1是本发明一种基于Spark的电力系统拓扑岛快速识别系统示意图;
图2是本发明一种基于Spark的电力系统拓扑岛快速识别方法整体流程示意框图;
图3是本发明一种基于Spark的电力系统拓扑岛快速识别方法步骤S3示意框图;
图4是本发明一个电网拓扑实例示意框图。
具体实施方式
以下结合图1至图3具体说明本发明提供的一种基于Spark的电力系统拓扑岛快速识别系统和方法。
电气系统拓扑岛是电力系统中不与外界相连接的子系统,电力系统中电器元件的状态是随时发生变化的,描述开关通断与元件连接关系的CIM/E文件一般十五分钟更新一次。要对系统进行实时的分析计算,需要在电网状态更新之后对系统拓扑进行迅速的重构与分析。后续的潮流计算,风险评估等高级电力算法应用,都是在拓扑分析出电气岛的基础之上进行的,为了达到实时分析的效率与速度,采用Spark框架中的并行图计算GraphX组件能够迅速分析出所需结果。
如图1所示,一种基于Spark的电力系统拓扑岛快速识别系统,包括数据收集模块、制表模块、制图模块、识别模块;其中,
所述收集模块,用于获取并解析CIM/E文件,得到所在电网的拓扑连接数据;所述收集模块,采用基于Java的Dom4J API,对数据进行分析处理,得到所在电网的拓扑连接数据,本发明所指的拓扑连接数据主要包括拓扑包和核心包数据与E文件中描述的开关通断状态等数据。
CIM/E文件通常是由电网调控中心提供,得到数据后,通过ftp服务器上传到大数据服务器上。由于CIM/E文件通常是十五分钟更新一次,所以可以通过脚本文件shell来定期检测文件的更新,在获取更新状态后立刻执行解析程序。
所述制表模块,用于根据拓扑连接数据进行整理和解析,得到支路表与器件表;因为构建电网系统GraphX拓扑图,需要的数据为顶点与边,顶点代表元器件,边代表的是由变压器线路组成的支路,而CIM模型中描述拓扑关系的方式是物理节点-电气节点-物理节点的方式。因此制表模块需要根据解析出来的拓扑包和核心包数据进行处理分析,得到器件ID—器件ID的支路连接关系,再以器件ID作为顶点,器件ID—器件ID作为边,制作支路表与器件表。
所述制图模块,通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图;所述制图模块中还包括过滤单元,在制作支路表与器件表过程中,剔除掉CIM文件中虚拟的电器元件,并对在E文件中描述为断开的断路器与刀闸的器件也需要进行过滤。
具体的,所述“通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图”具体包括:由于电网系统GraphX拓扑图不支持字符串作为顶点ID,对顶点与边进行映射处理,给每个器件的ID映射一个长整形数字,以器件的ID作为该顶点的属性,通过SparkContext与SparkConf进入Spark,读取点和边数据后以RDD的方式进行存储;再通过点的RDD和边的RDD构建电网系统GraphX拓扑图。
所述识别模块,对电网系统GraphX拓扑图进行计算处理,得到整个电网系统GraphX拓扑图中的子图,对所述子图进行分类处理,得到每个子图对应顶点的顶点属性,根据顶点属性对拓扑岛进行快速识别。作为一种优选方式,在进行拓扑岛识别之前还包括对构建好的Graph图进行处理,过滤掉图中没有邻接节点的节点。
具体的,所述识别模块采用Connected Components算法对过滤后的电网系统GraphX拓扑图进行计算处理,得到并缓存处理后的整个电网系统GraphX拓扑图中的子图;将电网系统GraphX拓扑图子图的每个顶点进行分类,获取并缓存电网系统GraphX拓扑图中子图中的所有顶点属性,所获取的顶点属性中包括了顶点的器件ID与顶点的所属子图数据;对顶点进行collect操作,将相同子图的顶点进行汇总分类,子图的数量即为电网系统中拓扑岛的数量,子图中的器件ID则为该拓扑岛中的电器元件,继而完成拓扑岛的快速识别。
进一步的,还包括检查模块,所述检查模块根据CIM/E文件的数据对拓扑分析的识别结果进行检查确认。所述检查模块在进行检查之前还包括对汇总的子图结果进行分析,剔除没有电源注入的子图。
如图2所示,一种基于Spark的电力系统拓扑岛快速识别方法,包括如下步骤:
S1:用于获取并解析CIM/E文件,得到所在电网的拓扑连接数据;所述收集模块,采用基于Java的Dom4J API,对数据进行分析处理,得到所在电网的拓扑连接数据,本发明所指的拓扑连接数据主要包括拓扑包和核心包数据与E文件中描述的开关通断状态等数据。
S2:根据拓扑连接数据进行整理和解析,得到支路表与器件表;因为构建电网系统GraphX拓扑图,需要的数据为顶点与边,顶点代表元器件,边代表的是由变压器线路组成的支路,而CIM模型中描述拓扑关系的方式是物理节点-电气节点-物理节点的方式。因此制表模块需要根据解析出来的拓扑包和核心包数据进行处理分析,得到器件ID—器件ID的支路连接关系,再以器件ID作为顶点,器件ID—器件ID作为边,制作支路表与器件表。
S3:通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图;所述制图模块中还包括在制作支路表与器件表过程中,剔除掉CIM文件中虚拟的电器元件,并对在E文件中描述为断开的断路器与刀闸的器件也需要进行过滤的步骤。
具体的,所述“通过Spark根据支路表与器件表中的顶点和边构建电网系统GraphX拓扑图”具体包括如图3所示:
S31:由于电网系统GraphX拓扑图不支持字符串作为顶点ID,对顶点与边进行映射处理,给每个器件的ID映射一个长整形数字,以器件的ID作为该顶点的属性;
S32:通过SparkContext与SparkConf进入Spark,读取点和边数据后以RDD的方式进行存储;
S33:再通过点的RDD和边的RDD构建电网系统GraphX拓扑图。
S4:对电网系统GraphX拓扑图进行计算处理,得到整个电网系统GraphX拓扑图中的子图,对所述子图进行分类处理,得到每个子图对应顶点的顶点属性,根据顶点属性对拓扑岛进行快速识别。
作为一种优选方式,在进行拓扑岛识别之前还包括对构建好的Graph图进行处理,过滤掉图中没有邻接节点的节点。
具体的,所述识别模块采用Connected Components算法对过滤后的电网系统GraphX拓扑图进行计算处理,得到并缓存处理后的整个电网系统GraphX拓扑图中的子图;将电网系统GraphX拓扑图子图的每个顶点进行分类,获取并缓存电网系统GraphX拓扑图中子图中的所有顶点属性,所获取的顶点属性中包括了顶点的器件ID与顶点的所属子图数据;对顶点进行collect操作,将相同子图的顶点进行汇总分类,子图的数量即为电网系统中拓扑岛的数量,子图中的器件ID则为该拓扑岛中的电器元件,继而完成拓扑岛的快速识别。
S5:根据CIM/E文件的数据对拓扑分析的识别结果进行检查确认。所述检查模块在进行检查之前还包括对汇总的子图结果进行分析,剔除没有电源注入的子图。
S6:分析计算电气岛中的潮流,用于负荷削减,风险评估等电网分析应用。
如图4所示,为本发明一种基于Spark的电力系统拓扑岛快速识别系统和方法应用在一个电网拓扑实例示意框图。
本发明属于电气工程技术领域与计算机信息处理交叉领域,针对CIM模型的结构与特点,提出了一种基于Spark的电力系统拓扑岛快速识别系统和方法,适用于大型电网系统的拓扑分析,通过Spark框架下的大规模并行图计算组件GraphX构建电网拓扑图,并且通过基于内存的并行计算对拓扑图进行分析处理,得到电网系统中的拓扑岛,GraphX并行图计算框架能够实现大规模拓扑图的并行计算分析,对于复杂的大型电网系统,采用GraphX能够快速识别计算出电网中的拓扑岛。
本发明公开的一种基于Spark的电力系统拓扑岛快速识别系统和方法,采用基于内存的分布式并行计算框架Apache Spark,对于大规模数据,能实现快速迭代处理。其中GraphX是Spark中的一个图计算组件,能够实现大规模拓扑图的并行计算分析,对于复杂的大型电网系统,采用GraphX能够快速识别计算出电网中的拓扑岛。Connected Components算法是图论中的一种经典算法,它能够找到拓扑结构中的连通子图即电网系统中的拓扑岛,通常由广度优先搜索法或者深度优先搜索法来进行实现。GraphX中的ConnectedComponents算法采用了改进的Pregel并行图计算框架,它以顶点作为基础进行操作,但它不会在单个顶点上进行消息遍历,而是将顶点的多个Ghost副本收到的消息聚合后,发送给Master副本,再使用vprog函数来更新点值。这种框架避免了传统Pregel框架中超级节点的问题,对于连接情况复杂的电网系统有着较好的适用性。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。