基于灰色广义回归神经网络的小样本软件可靠性预计方法转让专利

申请号 : CN201010602453.3

文献号 : CN102073586B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴玉美杨日盛陆民燕

申请人 : 北京航空航天大学

摘要 :

本发明公开了一种基于灰色广义回归神经网络的小样本软件可靠性预计方法,首先对收集的小样本软件可靠性测试数据中的失效时间数据和测试覆盖率数据分别使用改进的Bootstrap方法进行仿真、扩充,形成与小样本可靠性数据具有相同失效统计规律的扩充可靠性数据;然后得到扩充可靠性数据的失效时间、测试覆盖率和不可靠度的三维曲线;建立灰色广义回归神经网络;采用扩充的可靠性数据对灰色广义回归神经网络进行训练,建立小样本软件可靠性预计模型;最后使用该模型进行预测,获得软件可靠性预计信息。该方法避免了复杂多元似然方程的求解,解决了软件可靠性预计中人工神经网络建模需要大量样本进行训练才能得到可用的预测模型的问题。

权利要求 :

1.基于灰色广义回归神经网络的小样本软件可靠性预计方法,其特征在于,包括以下几个步骤:步骤一:收集测试数据;

通过软件可靠性增长测试,收集测试数据 ti为失效时间,Ci为测试覆盖率,Ni为累计失效数,i=1,…,N,N为收集到的测试数据的数目;

步骤二:确定失效时间数据和测试覆盖率数据的分布;

将测试数据中的失效时间和测试覆盖率分别看作一维随机序列,首先用概率图法确定各一维随机序列的概率分布类型,确定概率分布类型后,使用最小二乘法确定各一维随机序列各自所服从分布的分布参数;

步骤三:使用改进的Bootstrap方法扩充数据;

根据步骤二所获得的失效时间和测试覆盖率各自所服从的具体的概率分布,随机抽样产生与原数据具有相同统计规律的仿真失效时间数据和仿真测试覆盖率数据,仿真失效时间数据和仿真测试覆盖率数据分别与原始的失效时间和测试覆盖率数据合并后获得扩充失效时间数据和扩充测试覆盖率数据,扩充后失效时间数据为 扩充后测试覆盖率数据为 其中M为扩充后样本容量,M≥N, 然后,采用经验分布函数的方法构造扩充的失效时间-不可靠度曲线和扩充的测试覆盖率-不可靠度曲线,最后,根据这两条曲线,先将不可靠度乘以总的累计失效数转化为对应的累计失效数,得到扩充的累计失效数数据 构造扩充的失效时间、测试覆盖率和累计失效数的三维曲线,三维曲线上的数据点集 即为扩充的测试数据;

步骤四:使用灰色预测模型GM(1,1)对数据进行处理;

使用灰色预测模型GM(1,1)对步骤三所得的扩充的累计失效数数据进行处理,获得累计失效数数据的灰色模型预计序列 得到规律的扩充测试数据步骤五:建立广义回归人工神经网络;

首先确定网络的输入和输出,将失效时间ti和测试覆盖率Ci作为网络的输入向量,相应的累计失效数Ni作为目标向量,建立2个输入单元、1个输出单元的广义回归神经网络,确定网络初始参数值为默认初始值;

步骤六:训练广义回归神经网络;

使用规律的扩充测试数据 对所建立的神经网络进行训练,输入向量集合为 相应的目标向量集合为 将输入向量和目标向量进行归一化处理,然后输入网络对其进行训练,采用留一交叉验证法训练神经网络,共需进行M轮训练;

步骤七:利用训练好的神经网络进行预计;

将需要预计的点处的失效时间t0和测试覆盖率C0作为输入向量输入网络,网络输出值N0即为对应的累计失效数的预计值。

2.根据权利要求1所述的基于灰色广义回归神经网络的小样本软件可靠性预计方法,其特征在于,所述的步骤六中,神经网络的初始参数值为默认初始值。

3.根据权利要求1所述的基于灰色广义回归神经网络的小样本软件可靠性预计方法,其特征在于,所述的步骤六中留一交叉验证法训练神经网络具体为,首先在每一轮的交叉训练过程中用循环的方法根据训练中网络收敛速度和误差精度要求,在经验解空间中不断调整网络参数扩展速度的值,直到得到最优效果的神经网络,即此时网络在验证数据集上的预测值与期望值之间的均方误差逼近于0;然后,M轮交叉训练所得的M个神经网络中选取在验证数据集上的预测值与期望值之间的均方误差最小的网络作为所得到的最优网络;

最后,判断此最优网络是否达到预期的预测精度要求,若达到预期的精度要求则将此最优网络作为训练好的神经网络;否则,需要调整经验解空间的范围并重新建立和训练神经网络。

说明书 :

基于灰色广义回归神经网络的小样本软件可靠性预计方法

技术领域

[0001] 本发明涉及一种软件可靠性测试中的软件可靠性预计方法,具体涉及一种基于灰色广义回归神经网络的小样本软件可靠性预计方法,属于软件可靠性预计技术领域。

背景技术

[0002] 随着计算机技术的飞速发展,人们对计算机软件的依赖性日益增强,对软件的可靠性要求也越来越高。软件可靠性预计面临着要对可靠性要求高、测试数据个数少的软件进行预计建模的问题。此外,如果要在软件可靠性测试的早期进行软件可靠性预计也存在数据个数少,难以满足传统预计方法对样本容量要求的问题。若按照传统的方法,等到测试的后期收集到足够的数据后再进行软件可靠性预计的建模,则等待的时间会难以承受,同时也存在着用于预计的样本数据个数少的风险。
[0003] 软件可靠性预计方法的研究主要指的是对软件可靠性增长模型的研究,是利用软件可靠性增长测试中获得的失效数据来对软件可靠性进行估计和预计的模型。传统的软件可靠性增长模型的建模思路是:首先对软件的失效模式或行为进行一定的假设,然后在这些假设的基础上运用统计理论建立数学模型。在这些模型中包含了模型参数的显式定义,而这些模型参数往往具有明确的物理意义。最后,用这一模型来拟合失效数据曲线,从而确定模型参数,获得软件可靠性的估计并进行预计。
[0004] 目前,软件可靠性预计建模普遍存在的难以解决的问题是:不少软件可靠性增长模型对某些失效数据能给出较好的预计结果,但对另一些失效数据给出的预计结果却差强人意,这称为软件可靠性模型研究中的不一致性问题,它严重地阻碍了软件可靠性技术的推广。造成这一问题的原因主要是建立模型时提出的假设可能与实际不符。
[0005] 此外,这种软件可靠性建模方法仅依赖于软件失效数据,对软件信息的挖掘不够全面,导致了预计的准确度不足。因此,如何综合考虑软件可靠性测试得到的失效数据和软件交付确认之前的一些历史信息,如程序员的技能、测试努力度、测试覆盖率和程序规格说明书的改动频率等来建立综合模型,力图全面考虑影响软件可靠性的各种信息进行软件可靠性的建模与评估成为一种新的思路。然而这些信息或因素通常相互之间高度相关且与可靠性呈非线性关系。这就使得现存的基于相互独立性和线性的统计建模方法在对这些数据建模时具有很大的局限性。
[0006] 因此,能够处理多种因素且能够在理论上以任意精度逼近任意非线性映射的神经网络建模方法近年来吸引了人们的注意并取得了一些研究成果。
[0007] 人工神经网络作为一种模仿人脑神经网络行为特征进行分布式并行信息处理的算法数学模型,能够从已知的数据中通过调整网络内部大量结点之间的相互连接关系来学习和提取这些数据中的内在规律,具有很强的非线性映射能力。人工神经网络具有以下几个突出优点:1.高度的并行性;2.高度的非线性全局作用;3.良好的容错性和联想记忆功能;4.十分强的自适应、自学习功能。
[0008] 广义回归神经网络(General Regression Neural Network,简称GRNN)是由The LockheedPalo Alto研究实验室的Donald Specht在1991年提出的,是概率神经网络的一种拓展形式。广义回归神经网络建立在数理统计基础之上,能够根据样本数据逼近其中隐含的映射关系,即使样本数据稀少,网络的输出结果也能够收敛于最优回归表面,而且网络的学习算法简单,在结构方面也具有高度的并行性。
[0009] 广义回归神经网络作为径向基函数神经网络(Radius Basic Function Neural Network,简称RBFNN)的一种改进形式,相比于目前广泛使用的反向传播神经网络(Back PropagationNeural Network,简称BPNN)具有收敛速度快以及不易陷入局部极小等优点。此外,相比于普通的RBFNN,GRNN还具有更强的非线性映射逼近能力和学习速度、柔性网络结构以及高度的容错性和鲁棒性,并且在样本数据较少时,预计效果也比较好,还可以处理不稳定的数据。
[0010] 人工神经网络其实是一种“黑盒”方法,它相对于传统方法的优点在于建模时对被建模对象的经验知识要求不多,一般不必事先知道有关被建模对象的结构、参数和动态特性等方面的知识,只需给出对象的输入/输出数据,通过网络本身的学习功能就可以得到输入与输出的映射关系。
[0011] 然而,与基于统计理论的软件可靠性建模一样,基于神经网络的软件可靠性建模需要一定数量的样本数据,当样本的容量很少时,难以建立可用的模型,预计的精度可能会很差。
[0012] 灰色系统理论是我国著名学者邓聚龙教授于上世纪八十年代创立,以部分信息已知,部分信息未知的小样本、贫信息且不确定性的系统为研究对象,主要通过对部分已知信息的重新生成、开发、分析等手段,从中提取有价值或规律性的信息,实现对系统运行规律的正确描述和有效控制。其主要的研究内容包括灰色系统分析、建模、预计、决策和控制,它把一般系统论、信息论、控制论的观点和方法延伸到社会、经济、生态等抽象系统,结合运用数学方法,发展了一套解决信息不完备系统即灰色系统的理论和方法,形成了完整的理论体系。
[0013] 设有原始数据序列X(0)=[x(0)(1),x(0)(2),x(0)(3),…,x(0)(n)],其中符号x(i)(k)(i)表示属于序列X 的第k个元素,定义级比:
[0014] σ(k)=x(0)(k-1)/x(0)(k)
[0015] 一个n维的数据序列,其级比覆盖范围是 如果级比序列超出覆盖范围较大,则应该对原数据作变换处理,使其变换后的序列的级比落于可容覆盖,常用的变换处理有:平移变换、对数变换、方根变换。
[0016] 灰色理论认为,一组符合级比覆盖条件的客观数据尽管表现出随机、离散的表象,但是经过适当的方式挖掘其内在规律,一定能够弱化随机性,增强规律性。灰色累加生成操作(AGO)就是这样一种处理方式。若 k=1,2,…,n,(1) (1) (1) (1) (1) (0)
[0017] 则称X =[x (1),x (2),x (3)…,x (n)]为原始序列X 的1次AGO生成(0) (r) (1) (0)序列(将原始序列X 的r次AGO生成序列记为X )。反之,由X 得到X 的过程称为
IAGO。灰色系统理论预计建模的步骤如下:
(1)
[0018] 对灰生成序列X 建立灰色预测模型GM(1,1)的一阶微分白化方程:
[0019]
[0020] 模型中的参数-a为发展系数,u为灰色作用量,运用最小二乘法辨识方程的模型参数:
[0021]
[0022] 其中,B和yN的计算公式为:
[0023]
[0024] yN=[x(0)(2),x(0)(3),…,x(0)(n)]T
[0025] 一阶微分白化方程的解为:
[0026]
[0027] 该 解 也 被 称 为 时 间 响 应 函 数,则 由 该 时 间 响 应 函 数 计 算 得到 的 称 为 模 型 计 算 值 或 拟 合 值。 最 后 作 还 原得到的 即为模型预测值。
[0028] 为了解决样本容量不足的问题,需要充分利用小样本数据所提供的信息。目前,解决小样本问题的常用方法有贝叶斯(Bayes)方法和重抽样(Resampling)方法。Bayes方法由于能够融合历史信息、专家经验等先验信息,近年来得到了广泛的应用,但是其先验信息来源各异,分布形式的选择也带有很大的主观性,所以常常引起争议。重抽样方法通过从原样本中重复抽样以扩充样本容量,充分挖掘原样本数据本身的信息,在一定程度上解决了在实际中无法获得大量样本的问题。在重抽样方法中,目前最受人们关注的是自助法(Bootstrap)。Bootstrap方法是由美国统计学家Efron于参考文献[1](Efron B.Bootstrap Methods:Another Look at the Jackknife[J].The Annals of Statistics,1979,7(1):1-26.)中首次系统地提出的一种非参数统计方法。20世纪80年代以来,该方法在理论和应用研究方面得到了不断发展,被广泛应用在医学、军事、金融、经济学等领域,进行区间估计、假设检验、参数估计、统计量检验。Bootstrap方法是在原有样本的基础上,通过重抽样生成自助样本来估计未知分布的某种统计量的统计特征。Bootstrap方法不需要对总体的分布作出假定,直接利用原有样本的信息,因而是一种相当具有说服力的方法,。
但是,有研究也表明Bootstrap方法在小样本情况下的运用存在一定的局限性。例如在参考文献[2](段晓君,王正明.小子样下的Bootstrap方法[J].弹道学报,2003,15(3))中指出:大子样下Bootstrap方法的优势很明显,但小子样下Bootstrap方法逼近真实分布的偏差是不能忽略的。产生这一问题的原因是Bootstrap方法本质上是根据原有样本的经验分布函数来进行重抽样的,在大样本情况下样本经验分布函数与总体分布函数之间的差异不明显,但是在小样本情况下它们之间的差异在统计意义上是不可忽略的,此时根据小样本的经验分布函数进行的重抽样产生的自助样本相对比较集中,其随机性不能满足统计学的要求。针对Bootstrap方法在小样本情况下重抽样产生自助样本方面的不合理之处,参考文献[3](樊磊,Lei FAN.基于自助法的无失效小样本可靠性评估[J].微计算机信息,
2008,24(33))中提出了先采用参数估计方法,根据原始数据样本构造其所服从的分布,例如Weibull分布、正态分布等,代替经验分布函数,然后再根据所构造的分布来构造自助样本;参考文献[4](黄玮,冯蕴雯,吕震宙等.基于Bootstrap方法的小子样试验评估方法研究[J].机械科学与技术,2006,25(1))研究了使用指数分布函数、Boltzmann函数和三次多项式函数拟合修正样本经验分布函数的可行性,并讨论用修正的样本经验分布函数替换传统Bootstrap方法中的经验分布函数,提出了基于Bootstrap方法的小子样试验评估方法。
然而参考文献[3]和参考文献[4]在解决Bootstrap方法在小样本情况下重抽样产生自助样本方面不合理的问题的同时,都对总体的分布进行了人为的假设,丢失了部分先验信息,从而给所建模型带来了系统误差,失去了Bootstrap方法因不需要对总体作假设所带来的说服力较强的优势。

发明内容

[0029] 本发明的目的是为了解决传统软件可靠性预计方法在小样本情况下建立的预计模型的预计精度低甚至无法建立可用的模型的问题,在汲取灰色系统理论和广义回归神经网络各自处理信息以及进行预计的优点的基础上,在模型中加入测试覆盖率信息并采用改进的Bootstrap方法对小样本数据进行扩充,达到在小样本条件下对软件可靠性进行较高精度的建模和预计的效果,形成了小样本数据下考虑测试覆盖率的基于灰色广义回归神经网络的软件可靠性预计方法。
[0030] 本发明提出了一种改进的Bootstrap方法,首先采用概率图法获得总体的分布的信息。概率图法只需要判断分位点轨迹偏离线性度的程度,不会对观测数据造成信息丢失。然后用最小二乘方法拟合确定样本的概率分布函数来修正样本经验分布函数,以此在不对总体的分布进行人为假设的前提下,解决Bootstrap方法在小样本情况下重抽样产生自助样本方面不合理的问题;最后构造失效时间-不可靠度曲线和测试覆盖率-不可靠度曲线从而将测试覆盖率整合到预计模型中。
[0031] 本发明的基于灰色广义回归神经网络的小样本软件可靠性预计方法,包括以下几个步骤:
[0032] 步骤一:收集测试数据;
[0033] 通过软件可靠性增长测试,收集测试数据 ti为失效时间,Ci为测试覆盖率,Ni为累计失效数,i=1,…,N,N为收集到的测试数据的数目;
[0034] 步骤二:确定失效时间数据和测试覆盖率数据的分布;
[0035] 将测试数据中的失效时间和测试覆盖率分别看作一维随机序列,首先用概率图法确定各一维随机序列的概率分布类型,确定概率分布类型后,使用最小二乘法确定各一维随机序列各自所服从分布的分布参数;
[0036] 步骤三:使用改进Bootstrap方法扩充数据;
[0037] 根据步骤二所获得的失效时间和测试覆盖率各自所服从的具体的概率分布,随机抽样产生与原数据具有相同统计规律的仿真失效时间数据和仿真测试覆盖率数据,仿真失效时间数据和仿真测试覆盖率数据分别与原始的失效时间和测试覆盖率数据合并后获得扩充失效时间数据和扩充测试覆盖率数据,扩充后失效时间数据为 扩充后测试覆盖率数据为 其中M为扩充后样本容量,M≥N, 然后,采用经验分布函数的方法构造扩充的失效时间-不可靠度曲线和扩充的测试覆盖率-不可靠度曲线,最后,根据这两条曲线,先将不可靠度乘以总的累计失效数转化为对应的累计失效数,得到扩充的累计失效数数据 构造扩充的失效时间、测试覆盖率和累计失效数的三维曲线,三维曲线上的数据点集 即为扩充的测试数据;
[0038] 步骤四:使用灰色预测模型GM(1,1)对数据进行处理;
[0039] 使用灰色预测模型GM(1,1)对步骤三所得的扩充的累计失效数进行处理,获得累计失效数数据的灰色模型预计序列 得到规律的扩充测试数据
[0040] 步骤五:建立广义回归人工神经网络;
[0041] 首先确定网络的输入和输出,将失效时间ti和测试覆盖率Ci作为网络的输入向量,相应的累计失效数Ni作为目标向量,建立2个输入单元、一个输出单元的广义回归神经网络,根据经验确定网络的初始参数值;
[0042] 步骤六:训练广义回归神经网络;
[0043] 使用规律的扩充测试数据 对所建立的神经网络进行训练,输入向量集合为 相应的目标向量集合为 将输入向量和目标向量进行归一化处
理,然后输入网络对其进行训练,采用留一交叉验证法训练神经网络,共需进行M轮训练;
[0044] 步骤七:利用训练好的神经网络进行预计;
[0045] 将需要预计的点处的失效时间t0和测试覆盖率C0作为输入向量输入网络,网络输出值N0即为对应的累计失效数的预计值。
[0046] 本发明的优点在于:
[0047] (1)本发明方法在软件可靠性预计模型中加入测试覆盖率信息使得预计模型更加合理;
[0048] (2)本发明方法不需要建立描述失效时间、测试覆盖率和累计失效数之间复杂关系的物理模型,避免了建立物理模型的困难;
[0049] (3)本发明方法不必对系统的失效行为预先作简化假设,避免了系统误差的引入;
[0050] (4)本发明方法不需要求解复杂多元似然方程组;
[0051] (5)本发明方法解决了在小样本条件下难以建立有效而精确的软件可靠性预计模型的难题;
[0052] (6)与普通的软件可靠性预计方法相比,显著提高了预计精度。

附图说明

[0053] 图1为本发明的流程图;
[0054] 图2为失效时间数据六种分布类型概率图的对比图;
[0055] 图3为块测试覆盖率数据六种分布类型概率图的对比图;
[0056] 图4为分支测试覆盖率数据六种分布类型概率图的对比图;
[0057] 图5为c-use覆盖率数据六种分布类型概率图的对比图;
[0058] 图6为p-use覆盖率数据六种分布类型概率图的对比图;
[0059] 图7为扩充的失效时间-不可靠度曲线;
[0060] 图8为扩充的测试覆盖率-不可靠度曲线;
[0061] 图9为扩充的失效时间、测试覆盖率和累计失效数的三维曲线;
[0062] 图10为灰色预测模型的预测结果;
[0063] 图11为本发明实施例的预计结果。

具体实施方式

[0064] 下面将结合附图和实施例对本发明作进一步的详细说明。
[0065] 无论是基于统计理论还是基于神经网络的预计模型,其主要思想都是通过对已知数据的分析,找到数据内在的相互依赖关系,从而获得对未知数据的预计能力。但是传统的统计学都是立足于样本数目足够多的前提下,所提出的各种预计方法只有在样本数趋于无穷大时其性能才有理论上的保证,因此其准确性与用于建模的样本数据的容量有较大的关系。对于神经网络模型也是如此,当模型的输入与输出之间的关系比较复杂时,如果缺乏用于训练的样本数据,那么神经网络没有得到充分训练,很可能使得神经网络不能很好地掌握数据的规律,从而无法进行有效而精确的预计。然而在多数实际情况中,样本数目通常都是有限的,甚至很少,这样很多方法都难以取得理想的效果。
[0066] 本发明提出的基于灰色广义回归神经网络的软件可靠性预计方法是一种非参数方法,该方法考虑测试覆盖率信息使得预计模型更加合理;使用神经网络进行建模,利用人工神经网络可以通过对已有数据的学习这一归纳过程使网络获得数据序列的内在规律以及各影响因素与数据序列之间的联系并能够重建任意的非线性连续映射的特性,从而不必对系统的失效行为预先作简化假设,避免了系统误差的引入,也不需要建立描述失效时间、测试覆盖率和累计失效数之间复杂关系的物理模型,不需要求解复杂的多元似然方程组。此外,为了解决小样本问题,该方法从小样本数据本身出发,使用改进的Bootstrap方法仿真获得与小样本可靠性数据具有相同失效统计规律的扩充可靠性数据。利用灰色预测模型GM(1,1)所需样本数少、无须考虑其分布规律及变化趋势的特点处理所得的扩充可靠性数据,增强数据的规律性。然后再使用增强了规律性的扩充可靠性数据训练在不稳定小样本情况下也能有较好效果的广义回归神经网络,通过人工神经网络的自学习获得样本数据的内在规律,得到预计模型,使得在小样本情形下也可以进行高精度的软件可靠性预计。
[0067] 假设对软件进行软件可靠性增长测试,收集到的测试数据为 其中每一项数据为一个三元组(ti,Ci,Ni),i=1,…,N,而ti为失效时间,Ci为测试覆盖率,Ni为累计失效数,N为收集到的测试数据的数目。本发明方法要解决的问题就是当数据样本容量N较小时,通过融合改进的Bootstrap方法和灰色系统理论在广义回归神经网络的基础上利用失效数据和测试覆盖率信息建立可用的软件可靠性预计模型,并达到较高的预计精度。
[0068] 本发明是一种基于灰色广义回归神经网络的小样本软件可靠性预计方法,流程如图1所示,包括以下几个步骤:
[0069] 步骤一:收集测试数据。
[0070] 通过软件可靠性增长测试,收集测试数据 ti为失效时间,Ci为测试覆盖率,Ni为累计失效数,i=1,…,N,N为收集到的测试数据的数目。
[0071] 步骤二:确定失效时间数据和测试覆盖率数据的分布。
[0072] 将测试数据中的失效时间和测试覆盖率分别看作一维随机序列,这一步就是要确定所得的一维随机序列各自所服从的分布。确定随机序列的分布包括确定该随机序列的分布类型和在此基础上确定该分布的分布参数两部分内容。首先用概率图法确定各随机序列的概率分布类型。概率图法只需要判断分位点轨迹偏离线性度的程度,不会对测试数据造成信息丢失。确定分布类型后,使用最小二乘法确定各序列各自所服从分布的分布参数。
[0073] 步骤三:使用改进的Bootstrap方法扩充数据。
[0074] 要扩充测试数据,需要增加一些仿真的测试数据到原始测试数据中。但是,对于一个软件来说,通常其一个失效对应着一个测试数据,而累计失效数的取值只能是离散的正整数值,所以当这个软件的总的累计失效数很少时,收集到的测试数据也必然不多。因此,要扩充测试数据,首先要把只能离散取值的累计失效数转化为可以连续取值的不可靠度。扩充测试数据之后,再将不可靠度转换为累计失效数。此时累计失效数可能会出现取小数的情况,但是由不可靠度的定义可知,此时的累计失效数指的是多个软件同时进行测试时的累计失效数的平均值,所以出现取非整数值的累计失效数也是合理的。
[0075] 本发明中,对于失效时间数据,在这一步所求的问题为根据失效时间数据求不可靠度随失效时间的变化曲线。为此,构造概型为令M个相同的软件同时进行软件可靠性测试,每一个软件的失效行为都与实际进行测试的软件的失效行为相同。那么,根据经验分布的方法(即不可靠度函数的定义),到时刻t时发生失效的软件个数与M的比值即为此时的不可靠度,由此就可以得到不可靠度随失效时间的变化曲线,将其定义为样本统计量。对于测试覆盖率数据,原理是一样的。具体步骤如下:
[0076] 根据步骤二中所获得的失效时间和测试覆盖率各自所服从的具体的概率分布,随机抽样产生与原数据具有相同统计规律的仿真失效时间数据和仿真测试覆盖率数据,与原始的失效时间和测试覆盖率数据合并后获得扩充失效时间数据和扩充测试覆盖率数据,扩充后失效时间数据为 扩充后测试覆盖率数据为 其中M为扩充后样本容量,M≥N, 然后,采用经验分布函数的方法构造扩充的失效时
间-不可靠度曲线和扩充的测试覆盖率-不可靠度曲线。最后,根据这两条曲线,先将不可靠度乘以总的累计失效数转化为对应的累计失效数,得到扩充的累计失效数数据 即可构造扩充的失效时间、测试覆盖率和累计失效数的三维曲线,在这条曲线上的数据点集即为扩充的测试数据。
[0077] 步骤四:使用灰色预测模型GM(1,1)对数据进行处理。
[0078] 为了利用灰色系统理论处理小样本数据的优势,并增强数据的规律性以提高神经网络的收敛速度和预计精度,使用灰色预测模型GM(1,1)对步骤三所得的扩充的累计失效数数据进行处理,获得累计失效数数据的预计序列 那么就可以得到规律的扩充测试数据
[0079] 步骤五:建立广义回归人工神经网络。
[0080] 首先确定网络的输入和输出。将失效时间ti和测试覆盖率Ci作为网络的输入向量,相应的累计失效数Ni作为目标向量,建立2个输入单元、1个输出单元的广义回归神经网络,根据经验确定网络的初始参数值(在训练网络时,要根据需要调整网络参数的值,一般网络的初始参数值取默认初始值即可,例如GRNN的网络参数SPREAD的初始值可取为0.01)。
[0081] 步骤六:训练广义回归神经网络。
[0082] 使用规律的扩充测试数据 对所建立的神经网络进行训练。此时,输入向量集合为 相应的目标向量集合为 为了剔除训练样本中的奇异值,
加快网络的收敛速度,将输入向量和目标向量进行归一化处理,然后输入网络对其进行训练。广义回归神经网络只有一个网络参数SPREAD(扩展速度),为了使网络更好地学习数据的映射规律,采用留一交叉验证(Leave-One-Out Cross Validation)法训练网络,共需进行M轮训练。首先在每一轮的交叉训练过程中用循环的方法根据训练中网络收敛速度和误差精度要求,在经验解空间中不断调整网络参数SPREAD的值,直到得到最优效果的神经网络,即此时网络在验证数据集上的预测值与期望值之间的均方误差达到最小。然后,在这M轮交叉训练所得的M个神经网络中选取在验证数据集上的预测值与期望值之间的均方误差最小的网络作为这一步所得到的最优网络。最后,判断此最优网络是否达到预期的预测精度要求(例如,在验证数据集上的预测值与期望值之间的相对误差小于5%),若达到预期的精度要求则将此最优网络作为训练好的神经网络;否则,需要调整神经网络的结构或参数经验解空间的范围并重新建立和训练神经网络。
[0083] 步骤七:利用训练好的神经网络进行预计。
[0084] 将需要预计的点处的失效时间t0和测试覆盖率C0作为输入向量输入网络,网络输出值N0即为对应的累计失效数的预计值。
[0085] 实施例:
[0086] 实施例的数据来源于公开发表的由NASA资助的惯性制导系统中传感器管理项目中收集的两个数据集。每个数据集中每个数据项由执行测试用例数、累计失效数和四种覆盖率测度(即块测试覆盖率、分支测试覆盖率、c-use覆盖率和p-use覆盖率)组成。其中数据集1如表1所示:
[0087] 表1测试数据统计表
[0088]
[0089] 为了研究模型的精度,将此数据集的前13个数据用作已知样本数据来建立模型,最后一个数据用作考察模型的预计外推能力的预计样本数据。
[0090] 1、收集测试数据。
[0091] 将表1中的前13个数据作为测试中收集到的测试数据。
[0092] 2、确定失效时间和测试覆盖率数据的分布。
[0093] 将测试数据中的失效时间和测试覆盖率数据分别看作一维随机序列,首先用概率图法确定各随机序列的分布类型。各数据序列的六种可能的分布类型的概率图如图2-图6所示,所述的六种可能的分布类型为指数分布、极值分布、对数正态分布、正态分布、瑞利分布、威布尔分布。在图2中,从子图(a)到子图(f)依次为失效时间序列的指数分布、极值分布、对数正态分布、正态分布、瑞利分布、威布尔分布的概率图。(当精确的失效时间不容易确定时,在本领域内一般可使用执行的测试用例数来替代,在实施例里使用执行的测试用例数序列来替代失效时间序列。)由图2可知,失效时间序列在对数正态分布概率图中的分位点轨迹偏离线性度的程度最小,所以由概率图法,可认为失效时间序列服从的是对数正态分布。同理,四种测试覆盖率序列使用同样的方法分别由图3~图6这四个图确定其分布类型,可得到四种测试覆盖率序列服从的都是极值分布。确定这两种分布类型后,使用最小二乘法确定各序列所服从分布的分布参数,得到失效时间的分布参数μ和σ(μ为位置参数,σ尺度参数)的估计为: 其中μ和σ分别为对数正态分布的位置参数和尺度参数,即其概率密度函数为:
[0094]
[0095] 块测试覆盖率、分支测试覆盖率、c-use覆盖率和p-use覆盖率的分布参数μi1和σi1的估计值分别为:其中μi1和σi1分别为各极值分布的
位置参数和尺度参数。即块测试覆盖率、分支测试覆盖率、c-use覆盖率和p-use覆盖率的概率密度函数分别为:
[0096]
[0097]
[0098]
[0099]
[0100] 3、使用改进的Bootstrap方法扩充数据。
[0101] 根据所获得 的失效时间 和测试覆盖 率的具体的 概率密度函 数分别进行随机抽样产生与原数据具有相同统计规
律的仿真失效时间数据和测试覆盖率数据,与原始数据合并后获得扩充的失效时间数据和扩充的测试覆盖率数据: 其中M为扩充后样本容量(M根据情况设定,
通常大于20,并且满足M≥N), 每个 包含四种测试覆盖率测
度,即 这里将M取为50。
[0102] 然后,采用经验分布函数的方法分别构造扩充的失效时间-不可靠度曲线和测试覆盖率-不可靠度曲线。经验分布函数为:
[0103]
[0104] 其中,F(t)为经验分布函数(在该实施例里也可理解为不可靠度函数),n(t)为到t时刻发生失效的软件个数。失效时间-不可靠度曲线如图7所示,测试覆盖率-不可靠度曲线如图8所示。在图8中为了画出测试覆盖率和不可靠度的二维关系曲线,取四种测试覆盖率的平均值作为测试覆盖率维度上的值,而相应的不可靠度维度上的值不变。
[0105] 最后,根据扩充的失效时间-不可靠度曲线和扩充的测试覆盖率-不可靠度曲线,即可构造扩充的失效时间、测试覆盖率和累计失效数的三维曲线。如图9所示取四种测试覆盖率的平均值作为测试覆盖率维度上的值。
[0106] 4、使用灰色预测模型GM(1,1)对数据进行处理。
[0107] 使用灰色预测模型GM(1,1)对所得的扩充的累计失效数的数据进行处理,获得累计失效数据的灰色模型的预测值序列: 如图10所示。可看到灰色模型的
[0108] 预测值序列所形成的曲线比原来的扩充累计失效数序列所形成的曲线要平滑呈现出
[0109] 明显的规律性,这有利于神经网络模型的学习和收敛,从而提高预测精度。5、建立广义回归人工神经网络。
[0110] 将失效时间ti和测试覆盖率Ci=(ci1,ci2,ci3,ci4)作为网络的输入向量,相应的累计失效数Ni作为目标向量,因为实施例中测试覆盖率包含四种覆盖率测度,所以建立的是5个输入单元、1个输出单元的广义回归神经网络,根据经验确定网络的初始参数值(此处取为0.01)。
[0111] 6、训练广义回归神经网络。
[0112] 将输入向量Ci和目标向量Ni进行归一化处理,然后输入网络对其进行训练。采用交叉验证的方法训练网络,并用循环的方法根据训练中网络收敛速度和误差精度要求,在经验解空间中不断调整网络参数SPREAD的值(实施例中在经验解空间(0,10)中调整SPREAD的值),直到得到最优效果的神经网络,即此时网络在验证数据集上的预测值与期望值之间的均方误差达到最小。此处,得到网络的扩展速度SPREAD的值为0.1210。
[0113] 7、利用训练好的神经网络进行预计。
[0114] 将需要预计的点处的失效时间t0和测试覆盖率C0,即数据集中的最后一个数据项的失效时间和测试覆盖率作为输入向量输入网络,网络输出值N0即为对应的累计失效数的预计值。总的预计结果如图11所示。
[0115] 取数据集中用于建立模型的前13个数据的真实累计失效数与相应的模型预计值之间的均方误差MSE作为评价模型对已知数据的拟合能力的指标:
[0116]
[0117] 其中,n为已知样本数据的个数,yi为数据的真实值,为模型的拟合值。取最后一个数据的真实累计失效数与相应的模型预计值之间的平均相对误差E作为评价模型外推预计的能力的指标,
[0118]
[0119] 其中,m为预计样本数据的个数,yi为数据的真实值,yi为模型的预计值。
[0120] 本发明方法与使用GRNN而不扩充数据或是不加入测试覆盖率信息或是不结合灰色理论的方法,同时与常见的使用BPNN而不扩充数据或是不加入测试覆盖率或是不结合灰色理论的方法在此数据集下的预计效果如表2所示:
[0121] 表2预计结果的误差比较
[0122]
[0123] 表2的各项可以看出,本发明提出的基于灰色广义回归神经网络的小样本软件可靠性预计方法成功地利用了GRNN的优势,充分集合了测试覆盖率的信息、避免了小样本带来的问题在对样本数据的拟合和预计方面都取得了很好的效果:
[0124] (1)对已知样本数据的拟合均方误差MSE为0.0627,进行外推预计的平均相对误差E为0(由于此数据集的最后两个数据的累计失效数都为9,规律较简单,神经网络能比较容易地掌握其规律,因而可以获得较高的预计精度。),在保持高精度的外推预计能力的基础上,拟合均方误差比其他几种方法低一到两个数量级。
[0125] (2)使用本发明提出的改进的Bootstrap方法扩充数据后计算得到的拟合均方误差MSE为0.0627,而不使用改进Bootstrap方法扩充数据其拟合均方误差MSE为0.1169,拟合效果提升了46.36%。
[0126] (3)本发明所提出的方法由于考虑了测试覆盖率信息其拟合均方误差MSE仅为0.0627,而不考虑测试覆盖率信息计算的拟合均方误差MSE则增大至0.3473。
[0127] (4)BP神经网络对该数据集的拟合均方误差MSE都较大,且外推预计的平均相对误差E都在10%以上,进一步说明了BP神经网络在处理小样本数据时本身存在缺陷,用BP神经网络得到的模型的可用性都非常不理想。