基于改进PSO的软件可靠性模型参数估计方法与流程

文档序号:12747935阅读:553来源:国知局
本发明涉及一种软件可靠性模型参数估计的方法,特别涉及一种基于改进PSO(粒子群算法)的软件可靠性模型参数估计的方法。
背景技术
:软件可靠性建模是评估软件可靠性的数学方法,而模型参数的选取直接会影响到模型预测的准确度。现有的软件可靠性模型如GO模型、JM模型等大多是非线性函数模型,估计这些模型的参数比较困难。近年来一种新的思路被提出,即将智能优化算法运用到软件可靠性模型参数估计中,粒子群优化算法作为一种典型的智能优化算法,是一类适合求解非线性优化问题的随机优化方法。基于PSO的软件可靠性模型参数估计的方法,其关键是构造合适的适应值函数,现有研究中的适应值函数的形式一般表示为实际测出的软件失效数与模型估计的软件失效数之间的欧式距离,其存在的问题之一是当达到算法结束条件输出最优的模型参数估计值时,对应的适应函数值仍然比较大,不满足适应值越小参数估计的效果越好的评价准则。其次,经由该适应值函数评价后最终输出的最优的模型参数估计值与实际测得的值之间有较大的出入,说明参数估计的结果并不准确,有待改进。技术实现要素:本发明的目的,在于提供一种基于改进PSO的软件可靠性模型参数估计方法,其可提高模型预测的准确度,对不同模型均具有较好的适应性。为了达成上述目的,本发明的解决方案是:一种基于改进PSO的软件可靠性模型参数估计方法,包括如下步骤:(1)选取软件可靠性模型,初始化粒子群体各参数;(2)构造适应值函数,根据适应值函数评价每个粒子当前适应值;(3)根据步骤(2)中得到的适应值更新每个粒子当前个体历史最优适应值pbest和全局最优适应值gbest,对应于个体历史最优适应值pbest的是个体历史最优位置pbest_b,对应于全局最优适应值gbest的是全局最优位置gbest_b;(4)判断是否满足算法停止条件;如果达到最大迭代次数Tmax或全局最优适应值gbest的精度达到k,执行步骤(7),否则执行步骤(5);(5)根据如下速度和位置的更新公式更新每个粒子的速度和位置:vi'=wvi+c1r1(pbest_bi)+c2r2(gbest_b-bi)bi'=vi'+bi其中,i=1,2,…,60,代表60个粒子;r1、r2是介于[0,1]之间的随机数;(6)剔除掉明显不合适的解;(7)达到算法停止条件,输出全局最优适应值gbest和全局最优位置gbest_b,然后将b代入步骤(1)的极大似然估计方程组求解得到a;(8)判断a与实际数据的误差是否在规定范围内,若是则结束,否则执行步骤(9);(9)加入先验知识明确搜索方向,直至搜索到最合适的参数a和b。上述步骤(1)中,软件可靠性模型采用GO模型,其表达式如下所示:m(t)=a(1-e-bt)其中,m(t)表示截止时刻t为止检测到的累积失效数,a表示测试完成后软件期望的最终被检测出的累积失效数,b表示在时刻t产生的失效的查出率,取值为0-1。上述步骤(1)中,a、b的极大似然估计方程组是:a=n1-e-btnnb=atne-btn+Σi=1nti]]>其中,n表示已知的失效数,ti表示第i个失效发生的时刻。上述步骤(2)中,构造适应值函数的方法是:将步骤(1)中的极大似然估计方程组进行数学变换,使之变成只含参数b的适应值函数:f=|b-n(1-e-btn)ntne-btn+(1-e-btn)Σi=1nti|]]>其中,f表示解的适应值,n表示已知的失效数,tn表示第n个失效发生的时刻,ti表示第i个失效发生的时刻。上述步骤(6)的详细内容是:判断第i个粒子的新位置bi是否小于X,若是,则去掉该粒子的新位置,用原位置代替,若否,则返回步骤(2);其中,X是不合适的解的界限。上述步骤(9)中的先验知识为:参数a和b是反向的关系,b大则a小,b小则a大,如果根据第一次运行得到的结果b求出的累积失效数a大于已知失效数,希望a的值变小,那么参数b的值就要偏大,继续运行程序找出较大的b;如果根据第一次运行得到的结果b求出的参数a小于已知失效数,希望a的值变大,那么参数b的值就要偏小,继续运行程序找出较小的b;由此,作为下一轮算法的迭代的开始,求出更加准确的参数。采用上述方案后,本发明通过软件可靠性模型参数的极大似然估计方程组来构造一种新的适应值函数即目标优化函数,在算法执行过程中加入验算过程,剔除掉那些明显不合适的解,根据经验朝着出现更优解的方向进行搜索,最终获得最优的参数值,从而提高模型预测的准确度。本发明具有如下有益效果:1)本发明采用一种新的适应值函数,当算法输出最优的参数b时对应最优的适应值很小,满足适应值越小参数估计的效果越好的评价准则;2)缩小解的搜索范围、明确解的搜索方向,使最终估计出来的参数a和b更加接近实际的数据,即参数估计的效果好;3)结构简单、易于实现,不以牺牲计算量为代价;4)不仅仅局限于GO模型,对其他的软件可靠性模型也适用。附图说明图1是本发明的流程图。具体实施方式以下将结合附图,对本发明的技术方案进行详细说明。如图1所示,本发明提供一种基于改进PSO的软件可靠性模型参数估计方法,包括如下步骤:(1)选取软件可靠性模型,初始化粒子群体各参数;选取典型的软件可靠性模型——GO模型,表达式如下所示:m(t)=a(1-e-bt)其中,m(t)表示截止时刻t为止检测到的累积失效数,a表示测试完成后软件期望的最终被检测出的累积失效数,b表示在时刻t产生的失效的查出率,也即所要求的解,取值为0-1。a、b的极大似然估计方程组如下所示:a=n1-e-btnnb=atne-btn+Σi=1nti]]>其中,n表示已知的失效数,ti表示第i个失效发生的时刻。对粒子群体各参数进行初始化:种群大小即粒子数num=60,学习因子c1=c2=1.5,惯性权重w=0.9,最大迭代次数Tmax=500,适应值阈值k=1*10-6。每个粒子携带两个信息:位置和速度,粒子的位置即可行解,求粒子的最优位置也即求优化问题的最优解,也就是GO模型的参数b,其初始化为[0,1]之间的随机数;粒子的速度决定了移动的最大距离,初始化为[-1,1]之间的随机数。(2)构造适应值函数,根据适应值函数评价每个粒子当前适应值;其中,构造适应值函数的方法是:将步骤(1)中的极大似然估计方程组进行数学变换,使之变成只含参数b的公式:f=|b-n(1-e-btn)ntne-btn+(1-e-btn)Σi=1nti|]]>其中,f表示解的适应值,也即解的质量,适应值越小越好;n表示已知的失效数,tn表示第n个失效发生的时刻,ti表示第i个失效发生的时刻。可知在前述适应值函数的表达式中,除了b以外的参数均为已知,当通过PSO搜索得到的b代入式中,使f的值越接近于0时,表示估计的参数b越好。将各粒子的位置b分别代入适应值函数中,求出每个粒子当前的适应值,其中,已知的失效数n和第i个失效发生的时刻ti来自SYS1软件失效数据集中的数据,n=136,tn=88682,(3)根据步骤(2)中得到的适应值更新每个粒子当前个体历史最优适应值pbest和全局最优适应值gbest,对应于个体历史最优适应值pbest的是个体历史最优位置pbest_b,对应于全局最优适应值gbest的是全局最优位置gbest_b;(4)判断是否满足算法停止条件;如果达到最大迭代次数Tmax或全局最优适应值gbest的精度达到k,执行步骤(7),否则执行步骤(5);(5)根据如下速度和位置的更新公式更新每个粒子的速度和位置:vi'=wvi+c1r1(pbest_bi)+c2r2(gbest_b-bi)bi'=vi'+bi其中,i=1,2,…,60,代表60个粒子;r1、r2是介于[0,1]之间的随机数。(6)剔除掉明显不合适的解;由于参数b的初始化范围是[0,1]并且具有随机性,所以在算法的迭代更新过程中b可能出现负值或者非常小的值,这两种情况都会导致最终求出的参数a不正确或者与实际数据有很大的偏差。为了克服这种缺陷,在程序中加入判断语句,对每一次更新的b进行判断,若b为负值或者非常小的值,则返回继续搜索。在具体实现时,判断第i个粒子的新位置bi是否小于X,若是,则去掉该粒子的新位置,用原位置代替,若否,则返回步骤(2);其中,X是不合适的解的界限,通过多次实验得到。通过多次执行算法,可以发现,当输出的全局最优位置gbest_b为负值或精度达到e-6及以上时,根据b求出的期望的累积失效数为负或严重偏离实际的软件失效总数,因此设置X=0.00001,在每一个粒子的位置更新后都要对其进行判断;(7)达到算法停止条件,输出全局最优适应值gbest和全局最优位置gbest_b,然后将b代入步骤(1)的极大似然估计方程组求解得到a;(8)判断通过改进PSO算法估计的软件可靠性模型参数的准确性;SYS1数据集实际累积失效总数为136,如果估计的累积失效数a接近于136(误差在5%以内),则结束,否则执行步骤(9);(9)加入先验知识明确搜索方向;步骤(6)中所述的算法的搜索范围已限制在合适解的范围内,再通过先验知识明确搜索方向使算法的搜索结果更精准。先验知识为:根据a、b的极大似然估计方程可知,参数a和b是反向的关系,b大则a小,b小则a大。如果根据第一次运行得到的结果b求出的累积失效数a大于已知失效数,希望a的值变小,那么由先验知识可知参数b的值就要偏大,继续运行程序找出较大的b;如果根据第一次运行得到的结果b求出的参数a小于已知失效数,希望a的值变大,那么由先验知识可知参数b的值就要偏小,继续运行程序找出较小的b。由此,作为下一轮算法的迭代的开始,可以求出更加准确的参数。在本实施例中,若此时参数a远小于136,那么参数b就要偏小;若此时参数a远大于136,那么参数b就要偏大,根据这种思路返回步骤(1)重新搜索,直到得到最合适的参数a和b。综合上述,本发明一种基于改进PSO的软件可靠性模型参数估计方法,关键在于构造一个良好的适应值函数,并以实际的软件失效数据作为基础,通过对适应值函数的优化来实现对软件可靠性模型参数的寻优,所述的估计方法通过将软件可靠性模型参数的极大似然估计公式进行数学变换来构造一种新的适应值函数,适应值的大小代表了参数估计效果的优劣;并在算法执行过程中加入验算机制,将通过算法求解出来的参数值与实际的参数进行对比,从而剔除掉那些严重偏离实际的解,使算法在合适解的范围内继续搜索,从而提高参数求解的准确度。本发明简单易实现,求解准确度高,能很好地预测软件的失效总数及其发生时间,同时不以牺牲计算量为代价,并且对不同模型均具有较好的适应性。以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1