基于搜索数据生成的多目标方法 笔记

现实世界的很多优化问题都是由多个互相作用且互相冲突的目标组成的,它的最优解不是一个解,而是一组均衡解,这组解被称为 Pareto 最优解集

多目标优化的目标就是找到一个解集。这个解集要满足两个要求,即收敛性分布性

收敛性就是要使得到的解集在目标空间上与真正 Pareto 最优前沿的距离尽可能小,

分布性则是要使这个解集在目标空间尽可能均匀分布。

在测试数据生成问题上,我们希望生成的测试数据能够达到最大的覆盖度,同时也希望生成的测试数据集越小越好,可以降低执行时间,同时可以提高执行效率,而这些目标之间确是相互矛盾的。测试数据的上生成也是一个多目标优化问题,通过研究多目标优化问题的解决方法,来解决测试数据生成过程要同时满足多个目标的优化问题,使得到的测试数据更优化。

1994年,Srinivas和Deb提出NSGA(非支配排序遗传算法):算法是根据个体之间的支配与非支配关系进行分层,在进行选择操作之前,群体进行非支配排序。在分类过程中,被支配的个体被忽略,只考虑不受支配的个体,直至群体中所有个体都被归类。算法采用适应值共享来保持种群的多样性。NSGA算法采用随机剩余比例选择,算法的搜索空间在非支配区域进行,趋近于该区域的群体能够快速收敛,非支配分类程序的运行提高了NSGA的执行效率。NSGA算法实现在参数值空间的共享,保证了非劣最优解分布均匀,并允许存在多个不同等价解。但是该算法的计算复杂度高,对共享参数的依赖性较大。

NSGA的优势在于对种群个体在进行遗传操作前按个体之间的支配关系进行分层,使优秀的个体能有更大的机会遗传到下一代。分层是按照分体间的支配关系进行的。首先,找出种群中的所有非支配个体,形成非支配集合,赋予每个个体一个共享的虚拟适应度值,这样就得到第一个非支配最优层;然后除这一组个体之外的其他个体继续按照支配关系分层,并赋予新的虚拟适应度值,但该值要比上一层的虚拟适应度值小。如此反复进行分层,直到所有个体都被分层。分层过程中,梯度得为个体指定虚拟适应度值,一方面可以使虚拟适应度值规范化,另一方面也可以保持优良个体适应度的优势,使优秀个体获得更多的复制机会,这样在非支配区域进行搜索,使得种群能够在非支配区域快速收敛。

NSGA相较于简单遗传算法,NSGA的不同之处在于非支配分层和适应度值共享,其他交叉、变异操作和简单遗传算法相同。这样使得个体能够分布均匀,防止早熟收敛。

2002年,印度科学家Deb等人对NSGA进行了改进,改进后的算法称为NSGA –II,该算法引入了精英策略,采用二进制锦标赛法进行选择,并应用快速非支配排序,有效地克服了NSGA的缺陷,是的计算复杂度从O(mN3)降低到O(mN2)。

引入精英策略,将父代个体与子代个体组合,共同竞争产生下一代,确保父代种群中的优良个体被直接复制到下一代。

加权的GA:加权的GA在解决多目标问题时,每个目标同时有效,将多个目标通过加权合成单个目标,因此加权遗传算法仅能找到一个最优解。当两个目标存在矛盾时,为了使加权的GA有效,目标要按某种方式进行有限排序,优先级高的,赋予的权重就大,相反,优先级低的目标赋予的权重就小。本文中,目标最大化内存分配,不是明确定义或明确计量的,因为内存消耗没有一个明显的最佳效果。如果加大它的权重,可能会抑制分支覆盖度;若过分减少它的权重,可能导致它的不重要性,使得动态内存分配最大化的目标降低至随机搜索。

对于目标分支覆盖和动态内存分配,加权的GA的适应度函数定义为:

其中b是原始分配的字节数,是目标内存分配的权重,,d是分支距离,分支距离的权重设为1.0。







你可能感兴趣的:(软件测试)