遗传编程中用于程序修复的改进交叉算子及特征模型逆向工程适应度函数的扩展
程序修复的交叉算子实验
在程序修复的研究中,为了更有效地评估改进的交叉算子,研究人员选择了小型但规范明确的程序进行实验。这些程序的选择有两个重要原因:一是小型程序的执行时间更短;二是它们能被黑盒测试完全覆盖和规范,避免了现实世界程序测试用例可能存在的问题,降低了生成低质量补丁的风险。
实验针对每个程序版本进行了 30 次随机试验,搜索过程在达到世代限制或找到能使程序通过所有测试用例的补丁时结束。实验使用的参数如下:
- 精英保留数(Elitism):3
- 世代数(Generations):20
- 种群大小(Population size):15
- 交叉率(Crossover rate):0.5
- 变异率(Mutation rate):1
- 锦标赛选择参数(Tournament k):2
评估指标包括成功率和修复所需的测试套件评估次数,后者是一种与机器和测试套件无关的时间衡量方式。
实验结果分析
- 成功率 :
| 记忆化? | 原始算子 | OP1Space(无记忆化) | OP1Space(有记忆化) | Unif1Space(无记忆化) | Unif1Space(有记忆化) | OPAllS(无记忆化) | OPAllS(有记忆化) |
| — | — | — | — | — | — | — | — |
| gcd | 0.70 | 0.80 | 0.63 | 0.67 | 0.70 | 0.73 | 0.80 |
遗传编程程序修复算子与适应度函数扩展研究
超级会员免费看
订阅专栏 解锁全文

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



