kusumotolab / kGenProg

A High-performance, High-extensibility and High-portability APR System
MIT License
48 stars 13 forks source link

SimpleMutationにおいて置換対象のプログラム要素に応じた再利用ノードの選択 #784

Closed YoshikiHigo closed 4 years ago

YoshikiHigo commented 4 years ago

SimpleMutationの置換操作において,置換対象のプログラム要素に応じた再利用ノードの選択処理を実装した. 具体的には,置換対象がプログラム文の場合はプログラム文のみを再利用ノードとして選択, 置換対象が式の場合は式のみを再利用ノードとして選択するようにした.

本来は,Rouletteにおいて再利用対象としないノードの重みを0にする実装が良さそう. しかし,対象プログラム全体を対象としたRouletteはkGenProgの実行開始時に一度だけ作成され, 重みを与える関するはRouletteのコンストラクタとして与える仕様となっているため,その実装には大規模な改修が必要. https://github.com/kusumotolab/kGenProg/blob/59944899b179f724d9e8ade768a762f30e7888b6/src/main/java/jp/kusumotolab/kgenprog/ga/mutation/selection/RouletteSelection.java#L59-L63 https://github.com/kusumotolab/kGenProg/blob/59944899b179f724d9e8ade768a762f30e7888b6/src/main/java/jp/kusumotolab/kgenprog/ga/Roulette.java#L30-L33

そのため,SimpleMutation#chooseForReuse において,再利用されたノードが適切ではない場合にもう一度再利用ノードを選択し直す,という方針で実装した.

clione-bot[bot] commented 4 years ago

No problem. Good job!

YoshikiHigo commented 4 years ago

修正しました. もう一度レビューお願いします.

shinsuke-mat commented 4 years ago

よさそうです.マージします.お疲れさんです.