一种节点之间的依赖关系系统及其运行方法

文档序号:6401343阅读:641来源:国知局
专利名称:一种节点之间的依赖关系系统及其运行方法
技术领域
本发明涉及节点,特别涉及一种节点之间的依赖关系系统及其运行方法。背景技术
对于电力公司的来说,电厂中大多以计算模型为基本单位,而多个计算模型组成机组。其中机组和计算模型都可以称为节点。在运行时可以通过机组或者计算模型来运行。有时候计算模型与计算模型、计算模型与机组、机组与机组之间、机组包括的计算模型之间存在依赖关系。计算模型依赖与机组,其实就是依赖于机组所包括的计算模型。而机组与机组的依赖,其实是各自包括的计算模型之间的依赖。这种依赖关系总结存在有这样的现象:一、机组的启动或者停止问题。假设A机组依赖于B机组,如果要想正常启动A,需先启动B。如果想要停止B,依赖于B的A机组也应该停止。因此,存在一个先后顺序问题。二,由于电厂机组的复杂性,有时候需要根据情况随时改变相互之间的依赖关系,因此,需要保证改变依赖后,机组能正确的按照顺序执行。三、改变依赖关系时,有可能形成循环依赖。例如:A机组依赖于B机组,B机组依赖于C机组,C机组又依赖于A机组,这样顺序就不能确定。因此,应通过算法避免该问题。
发明内容
本发明为了弥补现有技术的不足,提供了能方便动态的改变节点间的依赖关系,生成节点的依赖顺序,避免循环依赖的节点之间的依赖关系系统及其运行方法。本发明是通过如下技术方案实现的:
一种节点之间的依赖关系系统,包括节点,其特殊之处在于:节点之间设置生成顺序模块、避免循环依赖模块、启动及停止顺序模块,其中节点通过避免循环依赖模块连接其他节点形成无循环依赖的依赖关系,生成顺序模块对各节点间的依赖关系进行遍历,形成顺序结构,启动及停止顺序模块设置节点的用于启动的向上依赖顺序及用于停止的向下依赖顺序。本发明的节点之间的依赖关系系统,节点为机组、计算模型的至少一种。本发明的节点之间的依赖关系系统的运行方法,其特殊在于:包括以下步骤:
(1)节点之间形成依赖关系;通过避免循环依赖模块,节点与其他节点之间连接形成动态的依赖关系;
(2)节点的启动、停止:根据启动及停止顺序模块取得给定节点的依赖顺序,实现节点的启动、停止;
(3)形成顺序结构:生成顺序模块对各节点间的依赖关系进行遍历,形成顺序结构。本发明的有益效果是:通过避免循环依赖模块、启动及停止顺序模块将电力公司中的各节点连接,能方便动态的改变节点间依赖关系,该依赖关系中避免出现循环依赖,并通过生成顺序模块给该依赖关系排序形成顺序结构,方便可靠。

下面结合附图对本发明作进一步的说明。附图1为本发明的计算机模型与机组之间依赖关系的结构图。
具体实施方式
节点的类结构:
class AlgorithmGroup
{
tstring —name;
AlgorithmGroup* —parent;
std::vector<AlgorithmGroupPtr> —groups;
std::vector<AlgorithmModelPtr> —models;
}
节点包括其名字、父节点、节点列表(包括机组列表、计算模型列表)。 机组与节点共用同一个类,通过函数来判断是否属于机组还是节点。
计算模型的类结构: class AlgorithmModel
{
tstring —name;
Algorithmic::AlgorithmPtr —algorithm;
AlgorithmGroup * _group; std::vector<tstring> —depends;
}
计算模型包括名字、所属的节点或者组,依赖列表、相关的计算模型信息。节点之间依赖关系系统包括:避免循环依赖模块,生成顺序模块,节点的启动及停止的顺序模块(即复杂节点的排序),节点为机组、计算模型的至少一种,其中机组的启动,其实是各自包括的计算模型的启动;节点的启动,其实是节点下包括的计算模型、机组的启动。避免循环依赖模块:初始时,各个计算模型无依赖。每添加一个计算模型的依赖关系,都需通过递归调用来查看各个计算模型是否形成依赖。没有形成依赖则添加成功,并保存模块依赖关系,否则提示不能添加。生成顺序模块:对各个计算模型依赖关系进行遍历,形成树状的顺序结构。机组、计算模型、节点的启动及停止的顺序模块:对应于机组、计算模型、节点的向上依赖顺序及向下依赖顺序。本实施例的依赖关系系统对于给定节点,能取得给定节点的依赖顺序,尤其是对于有启动和停止顺序的复杂节点来说,能取得给定节点的向上依赖顺序和向下依赖顺序,如图1所示:3为机组,包含计算模型31、32、33,其他均为计算模型。(I)启动计算模型:
启动计算模型5,使用向上依赖关系,应该将1、2、31、32、33、5 —起启动,并且计算顺序是:1、2、31、32、33、5。(2)暂停或停止计算模型:
暂停或停止计算模型5,使用向下依赖关系,应该将5、6、7 —起暂停或停止。
向上依赖:启动节点时,所有需要启动的节点。如:计算模型5的向上依赖为2、31、32、33、1。向下依赖:停止节点时,所有需要停止的节点。如:计算模型5的向下依赖为6、7。直接向上依赖:启动节点时,节点的直接父节点。如:计算模型5的直接依赖为2、31、32、33。直接向下依赖:停止节点时,节点的直接子节点。如:计算模型5的直接依赖为6、7。节点与节点间避免循环依赖模块的实现步骤:
(1)初始时计算模型间无依赖关系;
(2)每添加一个计算模型的依赖关系,都新创建一个空的计算模型的列表A,将该计算模型及依赖的计算模型添加到列表A中,之后查看其依赖的计算模型是否也有依赖,如果有,也添加到计算模型列表中,每次添加时,都判断是否列表中已经存在要添加的计算模型,如果存在,说明有循环依赖,则禁止添加该依赖。否则,循环递归调用其依赖,直到找不到依赖关系为止。节点与节点间的启动及停止顺序模块的实现步骤:节点的启动和停止,也就是机组、计算模型的启动和停止,机组的启动和停止,也就是机组下计算模型的启动和停止,因此,此处以计算模型的启动和停止来进行讨论。根据图1所示,计算模型的启动和停止也就转化成了获得计算模型的向上依赖顺序和向下依赖顺序的问题。给定计算模型的向上依赖顺序模块实现步骤:
(1)创建最终的顺序列表A,临时列表B;
(2)取得给定计算模型的直接向上依赖的模型。即直接取出给定模型的依赖模型即可,若依赖的为机组,取得机组下的计算模型;
(3)循环直接向上依赖的模型,如果该依赖的模型不在列表A中,将该模型放入列表A,同时放入临时列表B,否则进入下次循环;
(4)将临时列表B作为新的给定计算模型,重复执行步骤2、3直至取得最终列表A;
(5)列表A通过生成顺序模块进行排序,即得到最终结果,
向下依赖顺序模块实现步骤:
(1)创建最终的顺序列表A,临时列表B;
(2)取得给定计算模型的直接向下依赖的模型,即先取得所有的计算模型及机组下的计算模型。创建列表C,对整个的模型进行遍历,如果有模型的依赖关系为给定的计算模型,则判断该模型是否在列表C中,不在则添加,在则跳过,最终得出所有的直接向下依赖的模型;
(3)循环直接向下依赖的模型,如果该依赖的模型不在列表A中,将该模型放入列表A,同时放入临时列表B。否则进入下次循环;
(4)将临时列表B作为新的给定计算模型,重复执行步骤2、3直至取得最终列表A;
(5)对列表A通过生成顺序模块进行排序,即得到最终结果。节点与节点间的生成顺序模块的实现步骤:
(I)树状模型的建立。创建最终列表A,对于给定的多个计算模型及机组来说,首先,取得所有的计算模型及机组下的计算模型,找出没有被依赖关系的计算模型;
(2 )对没有依赖关系的计算模型内部进行排序,先对机组内的计算模型进行排序,收集不在机组内的计算模型,按照周期大小进行排序,之后完成了没有依赖关系的计算模型的排序;
(3)循环没有依赖关系的计算模型,看是否能在给定的多个计算模型中找到,如能找至IJ,且不在列表A中,则添加入列表A ;
(4)找出没有依赖关系的直接向上依赖的计算模型,将之做为新的没有依赖关系的计算模型。重复步骤2、3直至结束;
(5)对得出的计算模型列表A进行反向排序。至此完成了对于给定计算模型的排序。
权利要求
1.一种节点之间的依赖关系系统,包括节点,其特征在于:节点之间设置生成顺序模块、避免循环依赖模块、启动及停止顺序模块,其中节点通过避免循环依赖模块连接其他节点形成无循环依赖的依赖关系,生成顺序模块对各节点间的依赖关系进行遍历,形成顺序结构,启动及停止顺序模块设置节点的用于启动的向上依赖顺序及用于停止的向下依赖顺序。
2.根据权利要求1所述的节点之间的依赖关系系统,其特征在于:节点为机组、计算模型的至少一种。
3.根据权利要求1或2所述的节点之间的依赖关系系统的运行方法,其特征在于:包括以下步骤: (1)节点之间形成依赖关系;通过避免循环依赖模块,节点与其他节点之间连接形成动态的依赖关系; (2)节点的启动、停止:根据启动及停止顺序模块取得给定节点的依赖顺序,实现节点的启动、停止; (3)形成顺序结构:生成顺序模块对各节点间的依赖关系进行遍历,形成顺序结构。
全文摘要
本发明涉及节点,特别涉及一种节点之间的依赖关系系统及其运行方法。该节点之间的依赖关系系统,包括节点,其特殊之处在于节点之间设置生成顺序模块、避免循环依赖模块、启动及停止顺序模块,其中节点通过避免循环依赖模块连接其他节点形成无循环依赖的依赖关系,生成顺序模块对各节点间的依赖关系进行遍历,形成顺序结构,启动及停止顺序模块设置节点的用于启动的向上依赖顺序及用于停止的向下依赖顺序。通过避免循环依赖模块、启动及停止顺序模块将电力公司中的各节点连接,能方便动态的改变节点间依赖关系,该依赖关系中避免出现循环依赖,并通过生成顺序模块给该依赖关系排序形成顺序结构,方便可靠。
文档编号G06F19/00GK103150485SQ20131011067
公开日2013年6月12日 申请日期2013年4月1日 优先权日2013年4月1日
发明者邢宏伟, 丁书耕, 张建辉, 陈雷动, 王军建, 陈飞龙 申请人:山东鲁能软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1