自動バグ修正ツールの大御所であるGenProgの論文

もはや説明不要. 遺伝的アルゴリズムを用いてバグ修正を行う. 遺伝的アルゴリズムとは,生物の進化を模倣して問題を解決するアルゴリズムである. 最初の個体から,変異した個体を複数生み出し,それらを第一世代とする. その中から適応関数を用いて適応度が高いものを選択し,それらから再び変異した個体を生み出す. これを繰り返す. また,交叉という,2つの個体から,それらに対して行われてきた変異をミックスさせた個体を生み出すこともある.

GenProgでは個体はソースコード(のAST),適応関数はテストの通過率,変異としてソースコードの編集を行い,バグの修正を試みる. 交叉ではそれまで行われてきた編集操作をミックスする. 編集操作として文の挿入,削除,置換を行う.

実験の結果,それまでのAPRでは修正することができなかったバグを修正できることを示した. 将来有望である.