我最近开始使用遗传算法,为了更好地理解它,我决定用它来解决一个问题。我正在使用遗传算法为路径测试问题生成测试用例。除了如何选择最佳的适应度函数,我什么都想通了。所以,我可以使用一些帮助:)
这是我的问题的概述:在每一代中,都会生成100 个测试用例。CFG 中的每条路径都被分配了一个权重,具体取决于该路径的测试用例的稀有程度。例如,采用以下 CFG:
有 4 条独立路径。假设路径的权重如下 -
路径 1:10
路径 2:5
路径 3:4
路径 4:5
现在,对于这一代中的每个测试用例,我正在考虑整个一代可以拥有的平均适应度。
(10*100 - 4*100)/2 = 300 [因为有 100 个测试用例]
所以,我将那个测试用例的权重(它所覆盖的路径的权重)减少了 300。虽然结果令人满意,但这样做的逻辑非常有缺陷。我认为更好的适应度函数,以便测试用例的适应度与其覆盖的路径的权重成正比,将是权重除以所有路径的权重之和。所以对于这个问题,
w/(10+5+5+4) = w/24
您认为计算每个测试用例的适应度的更好方法是什么?
带 300
带 24
或者你会建议一种完全不同的方法吗?能否为这个问题生成更好的适应度函数?
我会很感激你的帮助:)