1.本发明涉及实时监控系统,特别是一种基于计算层次的嵌套公式计算方法。
背景技术:
2.随着实时监控系统的规模不断扩大,所接入和处理的数据日益增多,从而导致计算公式的定义和处理越来越复杂。如果按照传统的简单取数计算的方式,不管计算公式之间的相互关系,容易造成计算因子和计算结果的断面数据不符,影响计算实时性。
技术实现要素:
3.发明目的:本发明的目的是提供一种基于计算层次的嵌套公式计算方法,从而在存在嵌套公式的情况下也可以满足计算的实时性,保证计算因子和计算结果的断面数据一致性。
4.技术方案:由于传统的简单取数计算方式,不涉及计算公式之间的相互关系,对于嵌套公式会导致计算结果的不准确,当一个计算因子数据变化后,如果计算周期为5秒,对于有3层嵌套的公式来说,这个计算因子的变化在第3个计算周期才能体现出来,导致有15秒的时间计算结果是不准确的。因此,本申请提出了一种基于计算层次的嵌套公式计算方法,分析公式的引用关系,确定每个公式的计算层次,根据引用关系,找到相关公式的集合,然后按照计算层次的顺序分别计算,计算因子的变化就能在当前计算周期直接体现到计算结果中,提高了实时计算的准确性和实时性。
5.本发明所述的一种基于计算层次的嵌套公式计算方法,包括以下步骤:
6.s1:定义公式,包括定义计算类型、起效时间、选择计算因子和计算结果点,定义公式表达式,然后进行保存,保存成功后转到步骤s2;
7.s2:验证公式的引用关系,如果一个公式的计算结果作为了其他公式的计算因子,那么就认为这个公式被对应的公式引用了,例如公式a=b+c,b=c+d,则公式b被公式a引用了,记录下这个引用关系,然后转到步骤s3;
8.s3:验证公式是否存在循环嵌套情况,将计算公式构造成有向图,有引用关系的作为有向图的边,通过深度优先遍历算法,判断是否存在环,如果存在环,提示修改,否则转到步骤s4;
9.s4:验证计算层次,计算因子未被任何公式引用的公式的计算层次为1,引用该公式的公式计算层次为2,依次类推,即,例如公式a=b+c,b=c+d,d=e+f,公式d计算层次为1,公式b的计算层次为2,公式a的计算层次为3;验证完成后转到步骤s5;
10.s5:按层次计算;满足计算条件的公式,将其引用的公式也加入到待计算公式列表中,将待计算公式列表按计算层次进行排序,然后按照计算层次由小到大的顺序分别进行计算。
11.所述步骤s1中的计算类型包括周期计算、触发计算、定时计算。
12.所述步骤s1中的配置完公式信息进行保存时,需校验公式定义的正确性,包括表
达式的正确性、表达式与因子描述的一致性、计算条件设置的正确性。
13.所述步骤s5中对每个层次的公式的计算,在对其因子取数时,可以批量取数,提高效率,然后逐个计算相应的公式,最后将结果批量更新到计算结果点上。
14.一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的一种基于计算层次的嵌套公式计算方法。
15.一种计算机设备,包括储存器、处理器及存储在存储器上并可再处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种基于计算层次的嵌套公式计算方法。
16.有益效果:与现有技术相比,本发明具有如下优点:
17.1、公式在计算前进行逻辑验证,确保计算的正常进行;
18.2、解决了嵌套公式计算实时性的问题,保证了计算结果与因子的实时一致性。
附图说明
19.图1为本发明的流程示意图。
具体实施方式
20.下面结合附图对本发明的技术方案作进一步说明。
21.如图1所示,一种基于计算层次的嵌套公式计算方法,包括以下步骤:
22.(1)定义公式,包括公式的计算类型,起效时间等,选择计算因子和计算结果点,定义公式表达式,然后进行保存;
23.其中,所述的计算类型,包括周期计算、触发计算、定时计算等计算条件的设置。
24.所述保存时,进行合理性校验,包括表达式的正确性,表达式与因子描述的一致性,计算条件设置的正确性等。
25.(2)验证公式之间的引用关系,如果公式a的结果作为了公式b的因子,则公式a被b引用了,一个公式可能被多个公式引用,记下引用关系为后续验证和计算做准备。
26.(3)验证公式是否存在嵌套循环,构造计算公式的有向图,引用关系作为有向图的边,通过深度优先遍历算法,判断有向图是否存在环,如果存在环需要进行提示,否则影响后续计算的正确进行。
27.(4)验证公式的计算层次,根据公式的引用关系可以确定计算层次,计算因子未被任何公式引用的公式的计算层次为1,引用该公式的公式计算层次为2,以此类推,计算出每个公式的计算层次。
28.(5)按层次计算,对于满足计算条件的公式,根据引用关系,也将它们引用的公式加入到待计算公式列表中,然后按照计算层次有小到大的顺序计算。例如公式a=b+c,b=c+d,d=e+f,当计算到公式a时,也将公式b和公式d加入到待计算列表,然后根据计算层次依次计算,先计算层次为1的公式d,然后计算层次为2的b,然后计算层次为3的公式a,这样,如果因子e发生了变化,通过层次计算,公式a便体现了e的变化。
29.其中,所述的在每个层次的计算时,可以将需要计算的因子的数据批量取到,然后逐个计算,最后将计算结果批量更新到计算结果点上,从而提高计算效率。
30.一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实
现上述的一种基于计算层次的嵌套公式计算方法。
31.一种计算机设备,包括储存器、处理器及存储在存储器上并可再处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种基于计算层次的嵌套公式计算方法。
技术特征:
1.一种基于计算层次的嵌套公式计算方法,其特征在于,包括以下步骤:s1:定义公式,包括定义计算类型、起效时间、选择计算因子和计算结果点,定义公式表达式,然后进行保存,保存成功后转到步骤s2;s2:验证公式的引用关系,如果一个公式的计算结果作为了其他公式的计算因子,那么就认为这个公式被对应的公式引用了,记录下这个引用关系,然后转到步骤s3;s3:验证公式是否存在循环嵌套情况,将计算公式构造成有向图,有引用关系的作为有向图的边,通过深度优先遍历算法,判断是否存在环,如果存在环,提示修改,否则转到步骤s4;s4:验证计算层次,计算因子未被任何公式引用的公式的计算层次为1,引用该公式的公式计算层次为2,依次类推;验证完成后转到步骤s5;s5:按层次计算;满足计算条件的公式,将其引用的公式也加入到待计算公式列表中,将待计算公式列表按计算层次进行排序,然后按照计算层次由小到大的顺序分别进行计算。2.根据权利要求1所述的一种基于计算层次的嵌套公式计算方法,其特征在于,所述步骤s1中的计算类型包括周期计算、触发计算、定时计算。3.根据权利要求1所述的一种基于计算层次的嵌套公式计算方法,其特征在于,所述步骤s1中的配置完公式信息进行保存时,需校验公式定义的正确性,包括表达式的正确性、表达式与因子描述的一致性、计算条件设置的正确性。4.根据权利要求1所述的一种基于计算层次的嵌套公式计算方法,其特征在于,所述步骤s5中对每个层次的公式的计算,在对其因子进行取数时,可以批量取数,提高效率,然后逐个计算相应的公式,最后将结果批量更新到计算结果点上。5.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-4中任一项所述的一种基于计算层次的嵌套公式计算方法。6.一种计算机设备,包括储存器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的一种基于计算层次的嵌套公式计算方法。
技术总结
本发明公开了一种基于计算层次的嵌套公式计算方法,包括以下步骤:在定义公式后,验证出公式间的引用关系,通过引用关系判断公式是否存在循环嵌套,以及计算出每个公式的计算层次,在进行计算时,将公式引用的公式都加入到待计算列表,然后按照计算层次的大小进行排序,最后按照计算层次由小到大依次进行计算。本发明解决了嵌套公式的实时计算问题,计算因子的数据变化能够直接体现到嵌套公式的计算结果中,保证了计算因子和计算结果的断面数据一致性,提高了实时计算的准确性。提高了实时计算的准确性。提高了实时计算的准确性。
技术研发人员:陶洪强 张高峰 厉超 刘德贺
受保护的技术使用者:南京南瑞继保工程技术有限公司
技术研发日:2021.11.10
技术公布日:2022/3/8