一种基于多维卡尔曼滤波修正的故障主动预测方法与流程

文档序号:17186283发布日期:2019-03-22 21:23阅读:187来源:国知局
一种基于多维卡尔曼滤波修正的故障主动预测方法与流程

本发明提供了一种基于多维卡尔曼滤波修正的故障主动预测方法,属于软件预测技术领域。

技术背景

随着软件技术的不断发展,软件版本在不断的更新。版本的增多导致软件测试的任务量增大,在下一版本软件发行之前,技术人员热衷于依据可能对软件缺陷造成影响的度量元对缺陷数据进行预测,通常,技术人员通过建立数学模型作为估计和预测的关键技术,也即是,当缺陷数据呈现出很强的时间性与周期规律性时,采用相关分析,提取出相关的度量数据作为建模和估计方法的输入,进行缺陷预测。

但是常规的预测方法能大致描述数据的走势,但因为数据的波动较大,导致预测的结果误差较大,偏离真实值,于是本发明考虑到采用卡尔曼滤波的线性递推滤波方法,对所建立的多个模型进行不断的修整,基于多维卡尔曼滤波修正进行软件的故障预测,以预测-实测-修正的顺序递推,根据系统的量测值消除随机干扰,进而实现有效的预测。



技术实现要素:

(一)目的

为了解决常规的预测方法能大致描述数据的走势,但因为数据的波动较大,导致预测的结果误差较大,偏离真实值,本发明提供了一种基于多维卡尔曼滤波修正的故障主动预测方法。

(二)技术方案

本发明提供了一种基于多维卡尔曼滤波修正的故障主动预测方法,其具体实施步骤如下:

步骤1:获取复数个用于软件预测的度量的历史版本数据;

步骤2:将所述复数个度量的历史版本数据进行相关性分析,筛选出至少三个度量;

步骤3:基于筛选出的度量建立多种模型,分别基于该多种模型估计历史版本数据变量中的缺失数据;

步骤4:选取至少三个历史版本的数据对当前版本的故障数据进行估计,记为第一故障数据;

步骤5:基于多种估计模型,分别建立卡尔曼滤波状态更新方程,计算卡尔曼增益以及估计误差;

步骤6:估计下一版本的故障数据,记为第二故障数据;

步骤7:当第二故障数据较第一故障的数据更趋近于真实故障数据时,将所述步骤5的过程进行递归重复;

步骤8:基于最后一次卡尔曼滤波状态更新方程,预测未知版本的故障数据;

通过上述步骤,可以实现未知版本的软件故障数据的预测,并且能够根据卡尔曼滤波所提供的状态更新方程以及卡尔曼增益,计算出模型的估计误差,进而自适应的调整系统模型的相关参数,实时适应故障数据预测模型的变化情况,从而实现高精度的估计。

其中,在步骤1中所述的“获取复数个用于软件预测的度量的历史版本数据”,其具体作法如下:在故障主动预测技术中,根据给定的软件,以函数为节点,以调用关系为边,建立函数调用关系网络,基于该复杂网络,获取多个度量元,该度量元可以是静态的拓扑结构指标,如:节点数量、边、平均度、聚集系数、平均路径和社团数量,也可以是动态的拓扑结构指标,如:渗流值;所述度量元为软件的多个历史版本中获取得到。

其中,在步骤2中所述的“将所述复数个度量的历史版本数据进行相关性分析,筛选出至少三个度量”,其具体作法如下:在一种实施方式中,分别计算任何度量与故障数据之间的相关系数,进而选取相关的度量元,或将所述复数个度量数据的多个历史版本数据进行归一化处理后,置于同一时序图中,选取与所述故障数据折线趋势接近的折线所对应的度量元。

其中,在步骤3中所述的“基于筛选出的度量建立多种模型,分别基于该多种模型估计历史版本数据变量中的缺失数据”,其具体作法如下:将所述筛选出的度量元进行平稳性分析,分别建立与所述故障数据间的回归模型,基于该模型,估计多个度量的历史版本数据中的缺失数据,或基于所述筛选出的多个度量元建立面板数据模型,得到所述故障数据与多个度量分布之间的方程关系,进而估计缺陷数据的历史版本数据中的缺失数据,或基于差分小波神经网络的软件故障预测方法,构建差分还原模型,从而将模型中输出的预测值转换为最新故障间隔时间的预测数据。

其中,在步骤4中所述的“选取至少三个历史版本的数据对当前版本的故障数据进行估计,记为第一故障数据”,其具体作法如下:选取版本数据的前k个版本的数据作为历史参考数据,同时为本预测方法的输入数据,基于多种估计方法建立所述历史参考数据与预测值之间的线性方程,其中所述估计方法包括:线性回归方程法,面板数据分析法,以及差分小波神经网络的差分还原法,分别将每个模型输出的预测值与实际值间的差值记为残差,基于各个估计方法得到的k+1版本的故障数据记为每种估计模型的第一故障数据。

其中,在步骤5中所述的“基于多种估计模型,分别建立卡尔曼滤波状态更新方程,计算卡尔曼增益以及估计误差”,其具体作法如下:对于卡尔曼滤波,其状态更新方程为x-k=ax-k-1,p-k=apk-1at,其中a为状态增益矩阵,也即是由k-1版本的状态可以递推估计第k版本的状态,其中p为协方差矩阵,也即是,通过前一时刻的协方差递推得到第k时刻的协方差估计,卡尔曼增益通过该协方差估计以及状态增益递推得到,根据实测数据以及估计数据,计算求得误差。

其中,在步骤6中所述的“估计下一版本的故障数据,记为第二故障数据”,其具体作法如下:根据步骤5中所述的实测数据以及估计数据,得到状态的后验估计值以及后验协方差矩阵,计算当前版本(k+2版本)的故障数据,记为第二故障数据。

其中,在步骤7中所述的“当第二故障数据较第一故障的数据更趋近于真实故障数据时,将所述步骤5的过程进行递归重复”,其具体作法如下:将第一故障数据与其对应的k+1版的真实故障数据进行比较,计算差值,记为第一差值;将第二故障数据与其对应的k+2版本的真实故障数据进行比较,计算差值,记为第二差值;比较第一差值和第二差值的大小,当第二差值小于第一差值时,认为卡尔曼滤波对于修正模型是有效的,进而重复递归操作。

其中,在步骤8中所述的“基于最后一次卡尔曼滤波状态更新方程,预测未知版本的故障数据”,其具体作法如下:当所述递归重复操作进行到所述历史版本数据的最后一个版本时,记录当前卡尔曼滤波状态更新方程、卡尔曼增益以及估计误差,估计最后一版本的故障数据,基于递归重复实现修正的故障预测模型,估计未知版本的故障数据。

(三)优点及功效

通过上述八个步骤,可以实现未知版本的软件故障数据的预测,并且能够根据卡尔曼滤波所提供的状态更新方程以及卡尔曼增益,计算出模型的估计误差,进而自适应的调整系统模型的相关参数,实时适应故障数据预测模型的变化情况,从而实现高精度的估计。

附图说明

图1是本发明实施例提供的一种方法的流程图。

图2是本发明实施例提供的一种方法的示意图。

图3是本发明实施例提供的一种方法的示意图。

具体实施方式

本发明提供了一种基于多维卡尔曼滤波修正的软件故障预测方法,为使本发明的目的、技术方案和优点更加清楚,下面将结合附图1-3对本发明实施方式作详细描述。

如图1所示,示出了本发明实施例提供的具体流程图。

本发明一种基于多维卡尔曼滤波修正的故障主动预测方法,见图1所示,其具体实施步骤如下:

101、获取复数个用于软件预测的度量的历史版本数据。

其中,获取的用于软件预测的复数个度量属于软件的基本属性,可以包含软件的内在特征,也可以包含软件的外在特征,或者两者皆有包含;在本次实施方式中,根据给定的软件,以函数为节点,以调用关系为边,建立函数调用关系网络,基于该复杂网络,获取多个度量元,该度量元可以是静态的拓扑结构指标,也可以是动态指标;本实施中所采用的度量元包括:渗流均值、节点数量、边、平均度、聚集系数、平均路径和社团数量;其中,静态的拓扑结构指标包括节点数量、边、平均度、聚集系数、平均路径和社团数量;动态指标为渗流均值,渗流均值是通过渗流过程中采集多个渗流值并取平均值得到;也即是,在一种通过随机删除网络的节点模拟网络遭遇随机攻击的情景中,渗流值是网络崩溃时的删除节点的比例,记为渗流阈值渗流均值为进行多次随机删除节点进行多次渗流得到的渗流阈值的平均值。

102、将所述复数个度量的历史版本数据进行相关性分析,筛选出至少三个度量。

其中,所述相关性分析是指分析数据列间的相关度,在一种实施方式中,可以计算任意两列数据间的相关系数,相关系数越大,两列数据间的相关度越高。在本次实施方式中,分别计算任何度量与故障数据之间的相关系数,进而选取相关的度量元,或将所述复数个度量数据的多个历史版本数据进行归一化处理后,置于同一时序图中,选取与所述故障数据折线趋势接近的折线所对应的度量元。

103、基于筛选出的度量建立多种模型,分别基于该多种模型估计历史版本数据变量中的缺失数据。

其中,所述模型可以有多种类型,如较简单的单维线性回归模型,或较为复杂的多维面板数据模型,所述模型为用来估计实际测量中,无法得到的度量数据,或故障数据,以填补数据变量中的缺失数据,得到完整的数据集。在一种实施方式中,将所述筛选出的度量元进行平稳性分析,分别建立与所述故障数据间的回归模型,基于该模型,估计多个度量的历史版本数据中的缺失数据,或基于所述筛选出的多个度量元建立面板数据模型,得到所述故障数据与多个度量分布之间的方程关系,进而估计缺陷数据的历史版本数据中的缺失数据。

104、选取至少三个历史版本的数据对当前版本的故障数据进行估计,记为第一故障数据。

其中,所述至少三个历史版本的数据为建立预测故障数据模型的基础,所述三个历史版本的数据,既可以作为历史参考数据,也可以作为本次预测模型的输入数据;其中,所述估计可以有多种估计方法,例如通过所建立的线性回归模型,计算得到下一版本的度量数据,基于该度量数据,计算其对应的故障数据,或者,通过所建立的面板数据分析模型,计算得到下一版本的故障数据。在一种实施方式中,选取版本数据的前k个版本的数据作为历史参考数据,同时为本预测方法的输入数据,基于多种估计方法建立所述历史参考数据与预测值之间的线性方程,其中所述估计方法包括:线性回归方程法,面板数据分析法,以及差分小波神经网络的差分还原法,分别将每个模型输出的预测值与实际值间的差值记为残差,基于各个估计方法得到的k+1版本的故障数据记为每种估计模型的第一故障数据。

105、基于多种估计模型,分别建立卡尔曼滤波状态更新方程,计算卡尔曼增益以及估计误差。

一般来说,卡尔曼滤波递推估计过程分为三个阶段,初始阶段为粗估计阶段:开始的前几步递推求解中,因为初值选择的盲目性,求取的估计值可能偏离较大;第二阶段为强力估计阶段:由于pk/kk-1的模经过递推后变大,kk也随着增大,因此在迭代中能够增大量测信息的影响作用,强力修正估计值,以使其以较快的速度达到最优;微估计阶段:随着时刻的递增,pk/k-1的模趋于常数值,进而导致kk也逐渐趋于某常数值,此时量测信息对最优估计值的影响作用变得很弱。

其中,所述建立卡尔曼滤波状态更新方程是指基于前一时刻的状态值与当前时刻的状态值建立递归方程,确定递归方程中的相关参数的过程,其中卡尔曼增益在测量值与真实值之间的协方差最小时确定,也即是,卡尔曼增益为协方差的偏导为0时的系数。其中,估计误差是指估计数据与测量数据之间的差值,具体实施步骤如图2所示。在一种实施方式中,对于卡尔曼滤波,其状态更新方程为x-k=ax-k-1,p-k=apk-1at,其中a为状态增益矩阵,也即是由k-1版本的状态可以递推估计第k版本的状态,其中p为协方差矩阵,也即是,通过前一时刻的协方差递推得到第k时刻的协方差估计,卡尔曼增益通过该协方差估计以及状态增益递推得到。根据实测数据以及估计数据,计算求得误差。

106、估计下一版本的故障数据,记为第二故障数据。

其中,当前版本的故障数据为基于上一版本的故障数据估计值以及状态更新方程和卡尔曼增益,计算得到。在一种实施方式中,根据步骤5中所述的实测数据以及估计数据,得到状态的后验估计值以及后验协方差矩阵,计算下一版本(k+2版本)的故障数据,记为第二故障数据。

107、当第二故障数据较第一故障的数据更趋近于真实故障数据时,将所述步骤5的过程进行递归重复。

其中,通过将所述第二故障数据与所述第一故障数据分别与其对应版本的测量故障数据进行对比,计算差值,可以判断所述卡尔曼滤波进行修真的实施效果,在判定卡尔曼滤波对于预测模型具有良好的修正效果时,继续实施模型修正,也即是进行下一版本的递归重复。具体实施步骤如图3所示。在一种实施方式中,将第一故障数据与其对应的k+1版的真实故障数据进行比较,计算差值,记为第一差值;将第二故障数据与其对应的k+2版本的真实故障数据进行比较,计算差值,记为第二差值。比较第一差值和第二差值的大小,当第二差值小于第一差值时,认为卡尔曼滤波对于修正模型是有效的,进而重复递归操作。

108、基于最后一次卡尔曼滤波状态更新方程,预测未知版本的故障数据。

其中,所述最后一次的卡尔曼滤波状态更新方程为预测最后一个已知版本的故障数据的基础,基于该状态更新方程以及卡尔曼增益以及估计误差,可以估计得到最后一个已知版本的故障数据估计值,基于多次递归修正得到的预测模型,来对未知版本的故障数据进行预测,进而大大提高估计的精确度。在一种实施方式中,当所述递归重复操作进行到所述历史版本数据的最后一个版本时,记录当前卡尔曼滤波状态更新方程、卡尔曼增益以及估计误差,估计最后一版本的故障数据,基于递归重复实现修正的故障预测模型,估计未知版本的故障数据。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1