一种应用于时序检测的专家规则自定义函词快速嵌入方法

文档序号:31539170发布日期:2022-09-16 23:23阅读:55来源:国知局
一种应用于时序检测的专家规则自定义函词快速嵌入方法

1.本发明涉及基于专家规则的故障检测模块中、自定义函词的快速嵌入方法,尤其是一种基于专家规则的通用化故障检测框架下自定义函词的快速嵌入方法。


背景技术:

2.基于专家规则的传统检测方法可信度高、实现便捷,是船舶、航天器等复杂系统故障检测的重要方法之一。专家规则检测方法通过对常用推理逻辑的建模,提供了一套包含诸如max(取最大值)、increase(递增)等常用时序处理逻辑的固定函词规范以及该规范定义下的一套函词语法。针对具体故障检测问题,由相关专家调用已定义好的函词和函词语法,结合具体故障机理书写对应的专家规则。该模式通过函词创建了针对于专家规则的系统语法,实现了故障检测应用开发和原理论述中必需的过渡,弥补了开发人员对于具体系统的认知不足、也简化了专家建立检测机制的实际流程。
3.随着当下系统设计的精密化发展,参数采样的频率逐渐升高、故障机理的表征日益丰富、规则整体的规模不断膨胀,现有的函词语法逐渐不足以满足新式复杂故障的描述需求。例如,电文联判、逻辑截断、求导积分、时频变换等复杂时序逻辑,正不断提升着函词语法所需的裕度。同时,考虑到开发和使用阶段的分化,前期开发人员不可能无限制投入到后续新函词的应用开发中,新函词的定义必须要转化为由专家等使用方主导进行的嵌入模式。因此,当前的专家规则时序检测模块亟需引入一种对使用方友好的自定义函词嵌入方法。
4.此外,自定义函词的嵌入不仅需要考虑使用方定义函词的灵活性,对于使用方所实现的函词也同时需要维持实时检测的效率。尤其是涉及时序操作的函词逻辑,往往会因为使用方实现方法的高时间复杂度而造成检测效率的大幅度降低。因此,自定义函词嵌入方法必须兼顾嵌入的灵活便捷与规则推理的高效精确,以满足时序检测固有的实时性需求。
5.综上所述,在当前故障机理日益复杂的实际工程背景下,规则检测方法需要在维持规则整体检测效率的基础上,实现由使用方主导的自定义函词嵌入。要实现自定义函词的灵活嵌入,就必须面向使用方提出规范化的函词定义模式,并为函词设计的常用时序操作提供高效的处理方法,从而实现自定义函词的定义与嵌入的灵活化、通用化、快速化,并规避不良自定义函词定义可能带来的检测效率恶化问题。因此,本发明在基于专家规则的通用化时序检测框架下,提出了一种自定义函词的快速嵌入方法。


技术实现要素:

6.本发明为解决复杂专家规则系统自定义函词的嵌入性问题,提供一种自定义函词的快速嵌入方法。本方法可以极大程度兼容专家自定义函词的嵌入,实现复杂规则机理的表述;同时,本方法为规则含时函词中的常用操作提供了特殊的快速时序处理方法,使得嵌入自定义函词后的规则组依然满足高采样数据流、大规模规则组条件下的检测实时性需
求。
7.所述的自定义函词的快速嵌入方法是一种依托于基于专家规则的通用化时序检测框架、对于函词全周期功能需求进行定义规范化的嵌入方法。
8.所述的基于专家规则的通用化时序检测框架中,规则推理须按特殊函词展开,将特殊函词所包含的复杂时域推理转化分解为分步规则推理,并将特殊函词所需的时序或者中间量记录在进程共用缓存中。共用缓存中的时序和中间量可以跨规则调用,使得规则组中复用的函词子式可以在推理阶段得到复用,在规则组整体上缩短了推理时间并精简了缓存空间。该框架以统一的流程明确了函词在规则检测中的处理方法,为自定义函词的灵活嵌入奠定了基础。
9.所述的函词全周期功能需求定义规范化,具体定义了自定义函词在嵌入系统时需要提供的函数格式申明、函数进程缓存域申请方法、函数进程缓存域处理方法、函数推理逻辑方法这四项函词定义必需项的定义规范,使得自定义函词能够在规则检查中得到更详细的书写检查,并在通过检查后更平稳地嵌入平台;并在自定义函词方法定义中,提供了可直接调用的常用时序操作快速方法,最大程度地规避低效自定义函词嵌的入对于模块推理效率的负面影响。
10.本发明的特点是:
11.(1)函词定义根据基于函词子式推理的通用化规则实时检测框架建立了明确的规范,使得自定义函词嵌入机制更为明确、更为便捷;
12.(2)函词定义规范提供的快速时序处理方法,加速了自定义函词的推理速度,在自定义函词嵌入后依然能够满足高采样数据流、大规模规则组检测的实时性需求。
附图说明
13.图1为函词的全周期流程示意图
14.图2为自定义函词的定义规范示意图
15.图3为最大值函词进程缓存域申请流程
具体实施方式
16.下面结合附图对本发明提供的一种通用化规则检测框架下自定义函词的快速嵌入方法。
17.本发明提供一种通用化规则检测框架下自定义函词的快速嵌入方法。根据基于函词子式推理的通用化规则实时检测框架,梳理了包含规则检查、规则初始化、规则检测的全周期函词推理流程,从而对于自定义函词的定义提出了明确的规范。
18.本发明所规定的自定义函词定义规范如图2所示,由函词格式申明、函词进程缓存域申请方法、函词进程缓存域处理方法、函词推理逻辑四项具体定义组成。其目的是为了保证自定义函词中常用时序判别的最优实现,消解了常见时序判别原有概念中时序选取的时间复杂度,避免了自定义函词嵌入时由于开发人员实现方法的低劣而导致的检测低效问题。符合规范的自定义函词通过模块函数类(rulefuncs)中的载入函词方法(load_func)载入类中,即完成了自定义函词在规则检测模块中的嵌入。自定义函词将在后续的规则检测全周期流程中通过模块函数类得以调用。
19.所述的四项具体定义所对应的定义规范分别为:
20.1.函词格式申明
21.本发明定义的函数格式申明为字符串类型,定义了函词在规则书写中的格式,并明确了函词各输入输出的类型要求,是规则检测时的重要依据。函词格式申明需要满足该模块制定的格式申明规范,具体规范格式为:
22.函数名(输入1类型[=输入1默认值],...,输入n类型[=输入n默认值])-》输出类型规范格式中:
[0023]
1)默认值代表规则中该函数输入的默认填充值。如果输入类型不匹配或欠缺参数的默认值不存在则规则不能通过检查阶段;
[0024]
2)函词格式申明中,函词名仅可以由大小写字母(a-z及a-z)、数字(0-9)和下划线(_)构成,其必须由大小写字母开头,不同函词的函词名不允许重复;
[0025]
3)输入类型可以使用“typea|typeb”的形式进行合并,即该输入值的类型既可以是typea,也可以是typeb;
[0026]
4)函词仅允许具有一个输出值;
[0027]
5)函词输入输出的合法类型定义仅有如表1所示的9种类型。
[0028]
表1函词输入输出的合法类型
[0029]
[0030]
[0031][0032]
按照规范格式,部分常用函词的格式申明表2所示。
[0033]
表2部分常用函词的格式申明表
[0034][0035]
[0036]
2.函词进程缓存域申请方法
[0037]
本发明规定的函词进程缓存域申请方法为可调用的函数类型。函词进程缓存域申请方将在规则解析时调用,生成规则检测中函词推理所需要在进程缓存域中缓存的辅助数据结构。
[0038]
该函词进程缓存域申请方法必须按照“函词名称_init”格式进行命名,输入为具体规则中函词被赋予各解析后的输入组成的列表、函词子式与触发参数的全局映射结构及函词现有的进程缓存域,输出则是根据新规则中函词调整后的函词进程缓存域及能够触发该函词的参数名列表。
[0039]
下面以最大值函词(max)为例,结合图3的该函词进程缓存域申请流程进行详细说明。
[0040]
对于对应相同表达式express的不同函词子式max(express,time|frame,0|1)而言,时序累积是可以在取值函词的进程缓存域中共用同一个缓存结构的。因此,在函词需要为新载入规则中的函词子式max(express,time|frame,0|1)申请缓存空间时,应该向判读函词缓存域中是否已经表达式express申请了缓存结构。若未申请,则在取值函词进程缓存域中,直接初始化表达式express由表达式express解析后的结构、更新时间戳缓存序列、更新值缓存序列、最大缓存时间和最大缓存帧数组成的缓存结构;若已经申请则只更新根据新函词子式所需要缓存的时间或帧数,更新结构整体所需要缓存的最大时间或最大帧数即可。触发该函词的参数名列表则为表达式express所映射的触发参数列表。
[0041]
3.函词进程缓存域处理方法
[0042]
本发明规定的函词进程缓存域更新方法包含两个不同功能的可调用函数,分别为函词进程缓存域更新方法和函词进程缓存域清理方法。函词进程缓存域更新方法将在规则检测中参数或故障触发函词重新推理时,被检测进程调用,用于更新函词推理所需要在进程缓存域中缓存的辅助数据结构。函词进程缓存域清理方法将定时被检测调用,用于根据清理检测缓存域中已经对函词更新不存在推理意义的过期缓存。
[0043]
函词进程缓存域更新方法必须按照“函词名称_update”格式进行命名,输入为具体规则中函词被赋予的各输入对应解析结构组成的列表及当前的进程缓存,输出则是根据各输入最新状态更新后的函词进程缓存域。
[0044]
函词进程缓存域更新方法必须按照“函词名称_clear”格式进行命名,输入为具体规则中函词被赋予的各输入对应解析结构组成的列表及当前的进程缓存,输出则是反映缓存存在过期缓存需要清理是否的布尔值。
[0045]
下面仍以最大值函词(max)为例,对于该函词进程缓存域处理方法进行详细说明。
[0046]
当参数数据包中的参数触发函词子式max(express,time|frame,0|1)后,该函词进程缓存域更新方法根据函词缓存域中的表达式解析结构计算表达式express的当前值,将参数数据包的时间戳载入缓存载入更新时间戳缓存序列、将当前值载入更新值缓存序列。
[0047]
当进程定时进行缓存清理时,该函词进程缓存域清理方法根据根据函词缓存域中的最大缓存时间和最大缓存帧数,在更新时间戳缓存序列及其对应的更新值缓存序列中找到超出最大缓存时间和最大缓存帧数的部分,即失效缓存部分。若存在失效缓存部分,则滤除缓存结构中上述两个更新序列中的失效缓存部分,并返回true;否则,不对缓存域进行操
作,直接返回false。
[0048]
4.函词推理逻辑
[0049]
本发明规定的函词推理逻辑为可调用的函数类型。用于规则或者其他函词推理中对于该函词推理结果的调用。
[0050]
函词推理逻辑的命名必须与函词格式申明中的函词命名统一。函词推理逻辑输入为函词子式各输入字符串组成的列表及全部进程缓存,输出则为当前函词的推理结果。
[0051]
下面仍以最大值函词(max)为例,对于该函词进程缓存域处理方法进行详细说明。
[0052]
当规则推理中需要调用函词推理逻辑时,函词子式max(express,time|frame,0|1)根据输入的表达式express找到对应的函词缓存域中表达式express对应的缓存结构,根据取值时间或帧数在更新时间缓存列表中找到对应的时段,并取出对应的更新值缓存序列的对应部分,返回其中的最大值;若对应时段为空,则返回nan。
[0053]
此外,本发明为规避自定义函词对于检测效率的消极影响,还对于所述的函词进程缓存域处理方法和函词推理逻辑的实现制定了更为细节的相关规范:
[0054]
1.对于时序前溯截取等操作提供可用方法,函词可用直接调用对应方法来实现函词推理逻辑中的常用时序操作。模块提供的常用时序操作方法主要有以下三个:
[0055]
a.前溯取值方法(get_one_time(timearray,valuearray,rangelen,istime=false))
[0056]
前溯取值方法输入为互相对应的更新时间戳缓存序列和更新值缓存序列。istime为true时,rangelen为前溯的时间,该方法内部基于时序列采样率大部分均匀的假设,采用启发式搜索方法(时间复杂度为o(timearray.length))找到更新时间序列中rangelen前的帧位置,返回该帧对应的时间戳及更新值;若更新时间戳缓存序列首帧时间大于前溯时间,则直接返回(nan,nan)。istime为false时,直接取(0,timearray.length-rangelen)为rangelen前的帧位置,若帧位置小于0则返回(nan,nan),否则返回该帧对应的时间戳及更新值。
[0057]
b.前溯截取方法(get_range_time(timearray,valuearray,rangelen,istime=false))
[0058]
前溯截取方法输入及内部逻辑与前溯取值方法基本相同。istime为true时,返回只截取rangelen对应帧以后的更新时间戳序列和更新值序列;istime为false时,直接取max(0,timearray.length-rangelen)为rangelen前的帧位置,返回该帧以后的时间戳序列及更新值序列。
[0059]
c.前溯保留方法(get_restrange_time(timearray,valuearray,rangelen,istime=false))
[0060]
前溯截取方法输入及内部逻辑与前溯取值方法基本相同。istime为true时,返回只截取rangelen对应帧以前的更新时间戳序列和更新值序列;istime为false时,直接取max(0,timearray.length-rangelen)为rangelen前的帧位置,返回该帧以前的时间戳序列及更新值序列。
[0061]
2.对于函词进程缓存域处理方法和函词推理逻辑中、对于连续状态判别或前提条件判别等特殊时序操作有固定的操作规范,具体规定为:
[0062]
a.若函词存在可以转换为“连续时间为状态a”的逻辑表达,则将该部分逻辑通过
连续判别规范进行实现:向缓存域为该函词子式申请最近状态非a时间(键名为“lastinvalidtime”)及最后更新时间(键名为“lastrefreshtime”)。每次函词更新时,以当前参数数据包时间戳更新最后更新时间;若状态推理结果非a则更新最近状态非a时间。规则或其他函词调用函词推理逻辑时,函词比较最近状态非a时间、最后更新时间与当前参数数据包时间,若最后更新时间与当前时间相差不超过状态a连续时间、而最近状态非a时间与当前时间相差超过状态a连续时间则该部分逻辑为真,否则该部分逻辑为假。
[0063]
b.若函词存在可以转换为“连续时间内存在状态a”的逻辑表达,则将该部分逻辑通过连续判别规范进行实现:向缓存域为该函词子式申请最近状态为a时间(键名为“lastvalidtime”)。每次函词更新时,若状态推理结果为a则更新最近状态为a时间。规则或其他函词调用函词推理逻辑时,函词比较最近状态为a时间与当前参数数据包时间,若最近状态为a时间与当前时间相差不超过状态a连续时间则该部分逻辑为真,否则该部分逻辑为假。
[0064]
c.若函词存在可以转换为“状态转变为非a已经过弛豫时间”的逻辑表达,则将该部分逻辑通过连续判别规范进行实现:向缓存域为该函词子式申请最近状态转非a时间(键名为“lasttoinvalidtime”)。每次函词更新时,若状态推理结果由a转变为非a,则更新最近状态转非a时间。规则或其他函词调用函词推理逻辑时,函词比较最近状态转非a时间与当前参数数据包时间,若最近状态转非a时间与当前时间相差超过弛豫时间则该部分逻辑为真,否则该部分逻辑为假。
[0065]
若函词存在可以转换为“状态转变为a已经过弛豫时间”的逻辑表达,则将该部分逻辑通过连续判别规范进行实现:向缓存域为该函词子式申请最近状态转a时间(键名为“lasttovalidtime”)。每次函词更新时,若状态推理结果由非a转变为a,则更新最近状态转a时间。规则或其他函词调用函词推理逻辑时,函词比较最近状态转a时间与当前参数数据包时间,若最近状态为a时间与当前时间相差超过状态弛豫时间则该部分逻辑为真,否则该部分逻辑为假。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1