APP下载

基于遗传算法和BP人工神经网络的软件质量评价模型研究

2016-03-24张丹宋晓秋

中国新通信 2016年4期
关键词:BP神经网络遗传算法

张丹 宋晓秋

【摘要】 针对软件质量评价的问题,提出了一种基于遗传算法和BP人工神经网络的软件质量评价方法,建立了软件质量评价模型,提高软件质量评价的准确性。利用遗传算法的全局随机搜索能力弥补了网络容易陷入局部最优解的问题。最后通过实验得到的数据结果,证明了该方法能够更加准确的评估软件质量。

【关键词】 遗传算法 BP神经网络 软件质量评价

随着云计算、大数据等新理念、新技术被应用到了软件当中,人们对软件质量的要求变得越来越高。对于软件产品来说,越早的获得软件产品的质量水平,就能够越早的减少软件产品开发维护的失败因素。而软件质量评价[1]也渐渐成为保证软件质量的一个重要手段。软件质量评价是一个复杂的系统工程,如何深入研究软件质量评价的模型和方法,寻找一个准确性高的软件质量评价方法是十分重要的,也是对软件质量进行更深理解和更好控制的重要手段之一,是控制软件开发、提高软件质量的有效保证。

软件质量要求的提高增加了软件评价技术研究的重要性,因为只有能够被定性评价的软件才是可被控制的。目前对软件质量评价的方法过于主观性,如层次分析法、模糊综合评价法,或通过简单的数学运算来评价软件质量,忽略了各度量元和软件质量之间的非线性的关系,这样会有很大的主观因素的干扰,所得到的结果也难以真正的反应软件的质量的好坏。在传统的软件质量度量方法中,当度量的数据量很大时,无法得到精确地评价结果且计算过程复杂,求解繁琐,这些方法也缺乏自学习的能力。

人工神经网络具有自学习自适应的能力,可以解决传统方法无法解决的问题,但由于神经网络自身存在很多的限制和不足,如网络的训练时间较长、易收敛于局部极小值等。本文将用遗传算法[3]对神经网络进行改进[4],将改进后的BP人工神经网络应用到软件质量的评价中,通过研究软件质量评价的特征,建立了基于遗传算法和BP神经网络的软件质量评价系统[5] [6],先通过遗传算法对神经网络的初始权值阈值进行训练确定,然后再利用BP神经网络进行精确的训练,最后获得结果。实验证明该方法能够科学准确的对软件的质量进行定量的评估,也能够克服BP神经网络收敛速度慢、易陷入局部最小值的缺陷。

一、软件质量评价指标体系

软件质量评价是为了揭示当前状态的软件质量[7] [8],为软件质量的管理提供有力的手段。软件质量评价是使用合适的技术对被评价软件的质量特性、子特性等进行度量并对度量的结果进行评估,从而给出软件产品能否满足特定需求的评价结果。软件质量评价可以定量的给出软件的质量水平,可以根据软件质量的评价结果数据对软件进行相应的管理和质量改进。

BP神经网络具有很强的非线性映射和自适应的学习能力,但由于BP神经网络是基于梯度的算法,收敛速度慢,因此将遗传算法与BP神经网络相结合,解决BP神经网络训练时间长和易陷入局部最优的缺点,有效地克服传统软件质量度量方法的不足之处[9]。

软件质量的评价是一个复杂的过程,评价指标涉及面广、不确定性因素多、难以量化,因此至今没有一个统一的标准。作为软件质量评价模型,需要通过对一组软件质量度量元指标进行监测分析,以此来综合反映软件质量的情况,因此建立科学地软件质量评价指标是建立软件质量评价模型的重要环节。

本文在设计软件质量评价指标体系时,综合考虑了基于设计分析、软件测试和软件内部结构等多方面的部分对软件可靠性与安全性进行评价技术的研究。在参考《军用软件安全性设计指南》、《C/C++语言编程安全子集》、软件代码结构的指标及软件测试相关信息的基础上,初步构建了航天系统软件质量评价指标体系,如图1所示。

针对航天系统软件质量评价指标体系,将各个因素自上而下划分为三个层次,最高层即目标层为软件质量综合评价,作为神经网络的输出层;中间层为基于设计分析的评价、基于软件内部结构的评价和基于软件测试的评价;准则层为图中的评价指标,作为神经网络的输入。

创建一个三层的BP神经网络,神经网络的输入变量是上述指标体系中的所有指标,网络的输出层结点数为1。采用样本数据对神经网络进行训练,训练完毕后得到满足训练精度的权重系数矩阵,便可通过所得到的权重系数矩阵,利用待测软件的数据信息对软件进行质量评价,得到的软件质量评价结果减少了主观随意性和思维上的不确定性,结果更加科学、准确。

二、人工神经网络

人工神经网络是人工智能领域的一个重要分支,是由大量称为神经元的信息单元连接组成的复杂网络,可以模拟人脑神经网络对信息处理机制的智能式的计算模式。它有着很强的自适应性和自组织能力。对软件质量评价模型的构造主要是根据已知的软件数据,对软件质量评价模型中的各种因素之间的相互关系进行分析研究。

BP网络[10]是使用最多的一种神经网络。BP神经网络由D.Ruvmelhar和McClelland于1985年提出,是一种基于误差反向传递算法的前向多层神经网络。 BP神经网络通常由一个输入层、一层或多层隐含层和一个输出层构成,各层神经元间由连接权重相连接在一起。每一层内神经元的输出均传送到下一层,这种传送由连接权来达到增强、减弱或抑制这些输出地作用,除了输入层的神经元之外,隐蔽层和输出层神经元的净输入是前一层神经元输出地加权和。

在设计BP网络时,一般考虑设计一个隐层,当一个隐层节点很多仍不能改善网络性能时,才考虑再增加一层。BP神经网络每次学习训练过程都是由每一阶段对权重和阈值的更新组成,其目的就是将目标输出与实际输出所得到的输出误差的平方和最小化。

BP神经网络是一种梯度下降算法[11],在实际的应用中还存在很多不足:①BP神经网络的误差函数是一种沿梯度下降方向的单点搜索算法,很容易陷入局部极小值;②BP神经网络初始参数的随机性会导致网络收敛速度慢,训练容易陷入瘫痪状态;③BP神经网络的初始结构参数随机,对权值学习的结构也会存在一定的随机性。

基于上述原因,将遗传算法引入到BP神经网络中,利用遗传算法高效的自动过程设计辅助神经网络。

三、基于遗传算法的BP神经网络软件质量度量

3.1算法的简介

遗传算法是一种基于自然选择和群体遗传进行寻优的算法,它模拟了自然选择和遗传过程中的繁殖、杂交和突变的现象,将遗传算法与神经网络结合,利用遗传算法的多点搜索性可使其具有全局搜索型,从而可使搜索结果免于收敛于局部最优解,获得全局最优解。利用遗传算法改进BP神经网络,可弥补BP神经网络容易陷入局部极小值和收敛速度慢等缺陷[12]。

编码方法:将要构建的神经网络中的所有权值作为一组染色体。编码长度为N,基为1-N的实数按顺序排列,如N=5,则一个染色体可表示为:[5.2,2.11,4.435,1.598,2.456]。

交叉算法:将交叉算子作用于群体,以某概率相互交换某个个体之间的部分染色体,采用单点交叉的方法进行随机配对。在染色体上随机产生两个点,将两个染色体的两个位点之间的基因片段进行交换。

变异算法:变异算法是针对个体的某个或某些基因位上的基因值按某较小的概率进行改变,从而产生新的个体。

精英保留:选取m个最优的染色体作为精英库,每次迭代当代种群中的最优染色体,如果比精英库中的染色体更优,则将其存入库中替代精英库中最差的染色体,然后随机选择一个染色体替代为当代种群中的最差染色体,实现精英保留。

自适应:采用线性递增公式计算变异率,采用线性递减公式计算交叉率。

其中Pm1,Pm2为变异率最小值和最大值。Pc1,Pc2为交叉率最小值和最大值。gen为当前迭代次数,maxgen为最大迭代次数。

3.2 算法的设计与实现

该算法的主要思想是将遗传算法与神经网络相结合,通过遗传算法对神经网络的初始权重和阈值进行求解,在求解过程中采用自适应算法计算变异率和交叉率,并在神经网络的训练过程中采用精英保留的方法进行训练。具体算法过程如下:

步骤1:读取算例数据。

步骤2:设置遗传算法的参数。

步骤3:初始化染色体,令i=1。

步骤4:执行第i次迭代。

步骤5:采用自适应算法计算变异率和交叉率。

步骤6:对染色体进行变异操作。

步骤7:对染色体进行交叉操作。

步骤8:对染色体进行解码。

步骤9:用染色体基因对BP神经网络的初始权重和阈值进行赋值。

步骤10:训练BP神经网络。

步骤11:计算训练误差,并以此为目标函数。

步骤12:以目标函数为评价准则,更新精英库并保留精英。

步骤13:如果i<迭代次数,那么i=i+1,,转4,否则转14。

步骤14:输出结果,算法结束。

算法的流程图如图2所示:

四、 实验

通过以上研究及理论分析,我们将通过一些实际的实验来验证研究的结论。利用Matlab工具箱函数设计改进的BP神经网络模型,对软件的质量数据进行学习,误差基本上能达到0.01的精度,BP网络输入层到隐含层的传递函数采用transig函数,隐含层到输出层的传递函数采用purelin函数,网络的精度为0.000000001,训练次数为1000,训练误差小于目标误差训练结束。遗传算法的运行参数为:遗传算法种群规模为50,迭代次数为200,交叉概率范围0.5~0.85,变异概率范围为0.05~0.15。

首先从3个不同的航天系统软件中选择140个样本作为仿真的数据,其中测试样本40,训练样本100个,导入建立的评价模型中,然后初始化BP网络,并设置训练的各项参数,接着进行样本学习,进行测试并输出评估结果。

将未结合遗传算法的神经网络作为对比模型,对于未引入遗传算法的BP神经网络的预测结果和将遗传算法与神经网络相结合改进后的软件质量的预测结果如图3所示。

对于对于未引入遗传算法的BP神经网络和将遗传算法与神经网络相结合改进后的软件质量的相对误差和绝对误差结果如图4所示。

从实际的评价结果来看,建立的基于遗传算法和神经网络的软件质量评价系统的评价结果精度较单纯的BP神经网络的预测结果更为准确可信在可接受范围内,是一个合理可行的软件质量预测方法。

五、结束语

本文将BP神经网络与遗传算法相结合建立了软件质量评价模型,充分发挥了二者的优势,克服了BP神经网络中局部极小的缺陷,评价结果相对准确、客观、科学、有一定的研究价值。利用MATLAB对实际的数据进行实证分析,结果表明所建立的评价模型误差小,评估更加准确,具有较好的实际应用效果。

参 考 文 献

[1]廖锦舜,何锫.基于模糊神经网络的软件质量评价方法[D].计算机技术与发展,2006,2

[2] 袁曾任.人工神经网络及其应用[M].北京:清华大13 学出版社,2000.

[3]王小平,曹立明.遗传算法——理论、应用于软件设计实现[M].西安:西安交通大学出版社,2002

[4]蚩志锋,闰珍珠,黄彪.基于遗传算法与BP算法的水质评价模型[J].重庆科技学院学报:自然科学版,2009,11(1):122—124.

[5]卢雯嘉,童杰等.基于遗传算法和BP神经网络的大电力客户信用评价模型[J].重庆大学学报,2009,34(8).

[6]蚩志锋。闰珍珠,黄彪.基于遗传算法与BP算法的水质评价模型[J].重庆科技学院学报:自然科学版,2009,11(1):122—124.

[7]杨爱民,张文祥.软件质量及其量化评价方法[J].计算机工程与设计,2006,27(21):39-88.

[8]黄锡滋.软件可靠性安全性与质量保证[M].北京:电子工业出版社,2002:32-65.

[9]王李进,吴保国,郑德祥.基于人工神经网络的软件质量评价[J].计算机应用与软件,2008,25(12):134-150.

[10] 肖国荣.BP神经网络在基金价格预测中的应用研究[J].计算机仿真,2011,28(3):120—123.

[11]李建珍.基于遗传算法的人工神经网络学习算法[J].西北师范大学学报,2002,38(2).

[12]周明,李树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999.

猜你喜欢

BP神经网络遗传算法
面向成本的装配线平衡改进遗传算法
基于遗传算法对广义神经网络的优化
基于遗传算法对广义神经网络的优化
基于遗传算法的临床路径模式提取的应用研究
基于遗传算法的临床路径模式提取的应用研究
遗传算法在校园听力考试广播系统施工优化中的应用
物流配送车辆路径的免疫遗传算法探讨
就bp神经网络银行选址模型的相关研究
基于DEA—GA—BP的建设工程评标方法研究
复杂背景下的手势识别方法