高い適応度を持っている遺伝子でも
交叉により適応度が0に近い個体が生じ、選択によって淘汰されることが多々ある。
JZを利用したループ構造を持つプログラムが生じない理由はおそらくここにある。
JZ(xi,n)は、変数xiの値が0のときn行目の命令飛ぶ命令であり、
無限ループが生じる危険性を高める。
そして、無限ループして終了しないプログラムの適応度は0に設定している。
ヒッキーの私に、学校まで本を調べに行く気力等あるはずもなく
ネットでググったらMGG(Minimal Generation Gap)という交叉手法があった。
語の意味はわからない。
二つの親g1,g2に対して交叉を行うと、子g1',g2'が生まれる。
更にその子に対し交叉を行うと孫が生まれる。
この操作をc回繰り返す。
こうして、2c+2個の個体が得られる。
MGGではこの2c+2個の個体から
最大の適応度を持つ個体と、適応度比例選択した個体を
MGGにおける交叉によって新たに生じた個体と新たに定める
普段、言葉使ってないから
だいぶ、日本語が不自由になっている、ああもうだめだ
とにかくMGGを使ったら
ループ構造を持つプログラムが生じた。
これによって、従来の交叉手法では、
ループ構造を持つ個体が(その交叉に対する不安定性から)淘汰されていたという可能性が強まった。
しかし、まだループ回数は2回程度の物しか生じていない。
0 件のコメント:
コメントを投稿