欢迎来到天天文库
浏览记录
ID:37354228
大小:678.48 KB
页数:23页
时间:2019-05-22
《基于粒子群优化算法的类集成》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于粒子群优化算法的类集成测试序列确定方法报告人:张艳梅中国矿业大学(张艳梅姜淑娟陈若玉王兴亚)2015年11月研究背景•类测试顺序确定问题是指为待进行集成测试的类簇确定它们的测试顺序。•若类间关系构成环路,需要首先删除某些依赖关系来消除环路,再通过逆向拓扑排序得到类测试顺序。•删除依赖关系时要满足测试代价尽可能低,因此,类测试顺序问题是一个优化问题。典型技术B•基于图论的方法AC•基于遗传算法的方法研究背景•基于遗传算法(GA)的方法初始测试序列的局限性导致解空间不够大,交叉和变异影响测试序列的选择速度和精确度。•粒子群优化算法(PSO)和GA都
2、属于人工智能算法。PSO简单高效,已成功应用于解决许多组合优化问题,如旅行商问题,顺序排序问题,集合覆盖问题等。本文贡献提出一种基于PSO的类集成测试序列确定方法•将一个类测试序列(粒子)映射到一维空间的方法;•适应度函数构造方法,用于评价粒子的优劣;•将选择的最优粒子映射为类测试序列的方法.方法描述-方法概述开始复杂度计算位置区间映射粒子群初始化满足终止条件全局最优值更新局部最优值更新粒子适应度值计算YN最优粒子生成粒子速度更新类测试序列映射类测试序列粒子位置更新结束图1方法流程图方法描述-方法概述(1)位置区间的映射:•对所有类进行排列生成类
3、测试序列•将每个类测试序列(粒子)映射到一维空间,使该空间中的每一个位置对应一个类测试序列。方法描述-基于PSO的类集成测试序列确定方法算法1.一个类集成测试序列映射为粒子位置.输入:list_cito一个类集成测试序列List_classes类优先级表//表中的类按照依赖个数降序排列输出:position粒子位置1.BEGIN2.position=0;•初始化粒子位置,获得待测类个数n3.n=list_classes.size();4.FOR(inti=0;i4、列中前i6.index=list_classes.getIndex(class);c个类的位置信息•直到分析完所有类,将类集成测7.position=position+index*(n-i-1)!;试序列映射为粒子位置8.ENDFOR9.END方法描述-方法概述开始复杂度计算位置区间映射粒子群初始化满足终止条件全局最优值更新局部最优值更新粒子适应度值计算YN最优粒子生成粒子速度更新类测试序列映射类测试序列粒子位置更新结束图1方法流程图(2)最优粒子的生成:根据适应度函数计算每个粒子的适应度值,得到最优粒子。方法描述-方法概述•W、W为属性复杂度、方5、法复杂度的权重,取值AM适应度函数的构造在[0,1]之间,且W+W=1。这里取W=W=0.5。AMAM1222(1)一个测试桩复杂度SCplxij(,)(WAij(,)W(,))MijAM•属性复杂度、方法复杂度标准化的几何平均n(2)测试桩总体复杂度Ocplxo()SCplxij(,)ij1,1n(3)适应度函数fitnessOcplxo()SCplxij(,)ij1,1最优粒子满足适应度函数值最低,即生成一个类测试序列所需花费的测试桩总体复杂度最小。方法描述-方法概述开始复杂度计算位置区间映射粒子群初始化满足终止条件全6、局最优值更新局部最优值更新粒子适应度值计算YN最优粒子生成粒子速度更新类测试序列映射类测试序列粒子位置更新结束图1方法流程图(3)类测试序列的映射:将得到的最优粒子映射到相应的类测试序列,该测试序列即为所求的最优测试序列。方法描述-基于PSO的类集成测试序列确定方法算法2.粒子位置映射为类集成测试序列.输入:一个粒子位置positionlist_classes类优先级表输出:类集成测试序列链表list_citos1.BEGIN•计算待测类的个数2.n=list_classes.size();3.FOR(inti=1;i7、position/(n-i)!;5.class=list_classes.get(index);•迭代计算位置对应的类信息,并依次加入到类序链表list_citos6.addclassctolist_cito;7.removeclassfromlist_classes;8.position=position%(n-i)!;9.ENDFOR10.class=list_classes.get(0);c•将最后一个类加入类序链表list_citos11.addclasstolist_citos;12.END实验评估•实验对象与设计•实验结果与分析实验评估8、–实验对象与设计•为了比较各种算法的优劣,参照文献[1]中的实验对象.表1实验对象关联和系统类数使用关系数组合数继承数循环
4、列中前i6.index=list_classes.getIndex(class);c个类的位置信息•直到分析完所有类,将类集成测7.position=position+index*(n-i-1)!;试序列映射为粒子位置8.ENDFOR9.END方法描述-方法概述开始复杂度计算位置区间映射粒子群初始化满足终止条件全局最优值更新局部最优值更新粒子适应度值计算YN最优粒子生成粒子速度更新类测试序列映射类测试序列粒子位置更新结束图1方法流程图(2)最优粒子的生成:根据适应度函数计算每个粒子的适应度值,得到最优粒子。方法描述-方法概述•W、W为属性复杂度、方
5、法复杂度的权重,取值AM适应度函数的构造在[0,1]之间,且W+W=1。这里取W=W=0.5。AMAM1222(1)一个测试桩复杂度SCplxij(,)(WAij(,)W(,))MijAM•属性复杂度、方法复杂度标准化的几何平均n(2)测试桩总体复杂度Ocplxo()SCplxij(,)ij1,1n(3)适应度函数fitnessOcplxo()SCplxij(,)ij1,1最优粒子满足适应度函数值最低,即生成一个类测试序列所需花费的测试桩总体复杂度最小。方法描述-方法概述开始复杂度计算位置区间映射粒子群初始化满足终止条件全
6、局最优值更新局部最优值更新粒子适应度值计算YN最优粒子生成粒子速度更新类测试序列映射类测试序列粒子位置更新结束图1方法流程图(3)类测试序列的映射:将得到的最优粒子映射到相应的类测试序列,该测试序列即为所求的最优测试序列。方法描述-基于PSO的类集成测试序列确定方法算法2.粒子位置映射为类集成测试序列.输入:一个粒子位置positionlist_classes类优先级表输出:类集成测试序列链表list_citos1.BEGIN•计算待测类的个数2.n=list_classes.size();3.FOR(inti=1;i7、position/(n-i)!;5.class=list_classes.get(index);•迭代计算位置对应的类信息,并依次加入到类序链表list_citos6.addclassctolist_cito;7.removeclassfromlist_classes;8.position=position%(n-i)!;9.ENDFOR10.class=list_classes.get(0);c•将最后一个类加入类序链表list_citos11.addclasstolist_citos;12.END实验评估•实验对象与设计•实验结果与分析实验评估8、–实验对象与设计•为了比较各种算法的优劣,参照文献[1]中的实验对象.表1实验对象关联和系统类数使用关系数组合数继承数循环
7、position/(n-i)!;5.class=list_classes.get(index);•迭代计算位置对应的类信息,并依次加入到类序链表list_citos6.addclassctolist_cito;7.removeclassfromlist_classes;8.position=position%(n-i)!;9.ENDFOR10.class=list_classes.get(0);c•将最后一个类加入类序链表list_citos11.addclasstolist_citos;12.END实验评估•实验对象与设计•实验结果与分析实验评估
8、–实验对象与设计•为了比较各种算法的优劣,参照文献[1]中的实验对象.表1实验对象关联和系统类数使用关系数组合数继承数循环
此文档下载收益归作者所有