首页 > 范文大全 > 正文

基于进化神经网络对软件可靠性的预测

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于进化神经网络对软件可靠性的预测范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:用神经网络对软件可靠性进行预测比传统的NHPP预测模型预测精度高、拟合度好。但是神经网络的结构是有经验的神经网络专家根据实际经验得来的。而该文提出了用遗传算法去优化神经网络的结构,很好的解决了神经网络的结构问题。用进化神经网络软件可靠性预测提高了预测的精度和准确度。

关键词:软件可靠性;神经网络;遗传算法

中图分类号:TP183文献标识码:A文章编号:1009-3044(2008)28-0181-03

Prediction of Software Reliability Based on Evolutionary Neural Network

ZHANG Gui-yong, SHEN Yuan-long, DING Xiao-guang, WANG Ling

(College of Optoelectronic Engineering,Nanjing University of Posts & Telecommunications,Nanjing 210003,China)

Abstract: It is more precise using neural network to predict software reliability than the model of NHPP. The structure of neural network designs by experienced experts. The author uses genetic algorithm to optimize the structure of neural network and solves this problem. The evolutionary neural network can effectively improve the ability of prediction in precision and accurate.

Key words: software reliability; neural network; genetic algorithm

1 软件可靠性

软件可靠性被定义为:“在一段时间内软件正常运行的概率”。软件可靠性模型对于软件可靠性的估测起着核心的作用。而对于软件质量保证有直接意义的模型,是那些它们的参数能够以软件故障发生的历史预测软件将来故障发生的行为,软件可靠性模型是这种思想的体现。

到目前为止,世界上大约已公开发表了一百多个软件可靠性模型,基本上被分为两类:参数型软件可靠性模型和数据驱动型软件可靠性增长模型。前者主要有Musa的执行时间模型、Goel-Okumoto模型、J-M模型、贝叶斯模型等等。这种模型的主要缺点是:预测的数据是在自己模型的假设前提下实现的,每个模型都有自己的假设前提,导致模型应用的局限性。后者主要指用神经网络去预测软件可靠性模型,这种模型没有前提、假设。输入的是历史错误数据,提高了预测的精度。Karunanithi.whitley&Malaiya在1992年的论文中已证明数据驱动型比参数型有着更好的预测精度。

2 BP神经网络

BP神经网络是采用BP算法的神经网络的统称。目前在人工神经网络实际应用中,绝大部分采用BP网络和它的变化形式,它是前向网络的核心部分。

2.1 BP网络的结构

BP神经网络有三层,分别为:输入层、隐藏层和输出层(见图1),其中隐藏层的层数理论上可以为任意值。

图1 BP网络模型结构 图2 三层BP网络模型

2.2 BP算法

BP神经网络参数传递有两个过程:一个为输出参数的顺传播,另一个为误差的逆传播。假设一个三层的BP神经网络(见图2)网络权值(Wij Tli)阈值为θ。则

1) 输出的顺传播

隐节点:■ 其中■

输出节点:■其中■

2) 误差的逆传播

误差:

输出节点权值修正值:

令δl=-(Tl-Ol)f'(netl) 则■

隐节点权值修正值:

令■ 则 ■

由于权值的修正正比于误差函数沿梯度下降,所以有:

Tli=ηδlY Wij=ηδi'Xj其中η为修正参数。

对阈值的修正过程同对权值的修正过程,推倒的结果为:

输出节点:θl(k+1)=θl(k)+ηδl

隐节点: θi(k+1)=θi(k)+η'δi'

2.3 传递函数

在BP神经网络中经常使用对数S形函数、正切函数和线性函数作为神经元的传递函数。

3 遗传算法

遗传算法(GA)是由美国科学家Holland提出来的,它的主要优点是简单、鲁棒性强、需要解决的问题越复杂,目标越不明确,优越性越大。它模拟自然界适者生存,优胜劣汰的进化原则,将问题的解表示成染色体(chromosome),在计算机编程时,通常用二进制码串表示,每个码称为一个基因,每个染色体代表问题的一个解。一群染色体构成一个群体或种群,他是GA搜索的空间。在搜索过程中,用适应度函数(fitness function) 来评价每个染色体的优劣,其值越大(适应度越大),相应染色体代表的解越优。选择适应度大的染色体进行再生(reproduction),通过交换(crossover) 、变异(mutation) 两种操作产生新的一代更适应环境的染色体群,这样一代一代地不断进化,最后收敛到一个最适应环境地个体上,求得问题的最优解。适应度函数的选择能有效的指导搜索空间沿着面向优化参数组合方向,逐步逼近最佳参数组合,而不会导致不收敛或陷入局部最优。

算法流程如下:

1) 编码所要解决的问题。

2) 随机生成N个个体,形成初始染色体群体。

3) 计算群体中每个个体的适应度值。

4) 计算群体的平均适应度,把每个染色体的适应度归一化。

5) 依据归一化后的染色体适应度值,赋给每个染色体一个生存概率,按这个概率选择n(n

6) 用新的染色体代替原来的2n个染色体,形成新的种群。

7) 若满足中止条件,则解码适应度最大的染色体得到问题的解,否则返回步骤2)继续进行。

4 用遗传算法去优化BP神经网络的结构

在用神经网络去预测软件可靠性的过程中,神经网络的结构往往是预先不能获得的。本文提出了用遗传算法优化神经网络结构的方法。论文假设神经网络有四个输入一个输出中间的隐层为待优化的部分。

4.1 个体的编码

我们用2进制编码方法对结构进行编码,每个隐层用4位二进制码来代表,则隐层的神经元的个数为0-15个,当个数为零时代表该层不存在,我们可以假设隐层有二层、三层或任意层,则个体的编码为8、12或更多个二进制码。

4.2 适应度函数

在遗传算法中使用适应度来度量群体中的个体在优化计算中能达到或接近于最优解的优良程度。本文采用的适应度函数为:

其中p为可靠性样本用于训练的数目,■i是神经网络的输出值,xi为样本值。

4.3 控制参数的选取

遗传算法中控制参数的选择非常关键,参数选取的不同对遗传算法的性能产生较大的影响。这些参数有群体规模N、交叉概率Pc、变异概率Pm等等。交叉概率太大使搜索走向随机化,交叉概率越小,搜索的速度就越慢,太小时则陷入停滞,一般Pc为0.4-0.99。变异概率越大,容易破坏好的模式,是遗传算法近似随机搜索,变异概率太小,对产生新个体和抑制早熟现象的能力就会较差,一般为0.001-0.1。群体规模的大小直接影响到遗传算法的收敛性或计算效率。规模过小容易收敛到局部最优解;规模过大,会造成计算速度降低。群体规模可以根据具体情况在10-200之间选择。

4.4 流程图(见图3)

4.5 泛化处理

在BP网络的训练中往往会出现这样的情况,当网络的训练误差很小的时候,一个新的输入会使网络的训练误差增大,这是因为网络记忆了已被训练的样本,而对新的输入没有良好的泛化能力。规则化调整方法是通过调整网络的性能函数,来增强网络的泛化能力。普通的BP神经网络都采用网络误差的均方根之和作为性能函数。如下式 :

其中 ei ti ai分别表示第i个训练样本的训练误差、目标函数和网络输出。而调整后的网络函数如下:

msereg=γmse=(1-γ)msw

γ是性能参数 ■

使用该函数可以减少网络的有效权值和阈值,并且使网络的训练输出更加平滑,从而增强网络的泛化性能。

4.6 数据预处理

在我们开始试验之前,还得对原始数据进行如下处理:■,x为原始数据,=xmax-xmin。这样数据就被调整到0.1-0.9之间。在预测结束后用■将得到的数据调整到原始数据。

5 进化神经网络对软件可靠性预测实例

为了证明本文提出的方法优于直接用神经网络进行预测,这里我们找到了一组软件可靠性的数据,这组数据来源于一个中等项目软件测试过程(见表1)。

在进行仿真之前我们还得定义几个指标来代表预测的精度。

■其中■i为预测的数据,xi为实际的数据。

■其中■i为预测的数据,xi为实际的数据,n为待预测的数据量。

我们用前12组数据对神经网络进行训练,后四组作为待预测的数据,普通神经网络采用3-7-1的结构,优化的结果神经网络采用2-6-2-1的结构。预测结果的RE和AE比较(见表2)。

对数据的拟合度如图4所示 。

6 结论

在这篇论文中提出了用遗传算法优化了的神经网络去预测软件的可靠性的方法。遗传算法具有全局择优的特点,它可以很

(下转第189页)