基于搜索的测试套件最小化:故障检测与定位的多目标优化
1. 多目标优化在软件工程中的应用
许多软件工程问题可转化为优化问题,通过搜索算法有效解决,即基于搜索的软件工程(SBSE)。多目标搜索算法在SBSE中得到成功应用,因为大多数软件工程问题有多个目标或约束。
多目标优化的结果通常是一组非支配解,即帕累托前沿。对于适应度函数 $f_i$ 和 $f_j$,决策向量 $A$ 和 $B$ 若满足 $(\exists i \in{1, 2, \cdots, m}, f_i(A) > f_i(B)) \land (\exists j \in{1, 2, \cdots, m}, f_j(B) > f_j(A))$,则称 $A$ 和 $B$ 是非支配的。决策者通常根据不同目标的重要性,从帕累托前沿中选择合适的解。
大多数多目标优化问题是NP完全问题,推荐使用基于搜索的方法避免状态爆炸。例如,测试套件最小化问题是经典的多目标优化问题,希望用最少的测试用例覆盖最多的需求。
非支配排序遗传算法(NSGA - II)是一种快速且精英化的多目标遗传算法,适用于有两到三个最优目标的优化问题。其过程与遗传算法类似,包括初始化种群、评估个体、选择个体通过交叉和变异操作生成新个体,迭代搜索直到满足终止条件。
在NSGA - II中,初始种群是随机生成的个体集合,个体通常用二进制字符串或其他编码方案表示。通过遗传操作迭代新个体,根据不同目标计算适应度评估个体,使用精英策略选择个体构建新一代,当所有目标的适应度函数满足或达到预设代数时算法终止。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



