2009年3月11日水曜日

前々からやりたいと思っていた
遺伝的アルゴリズムを趣味で始める
INC,DEC,JZ の命令配列を遺伝子コードとした
適応度関数は、プログラム終了時の変数x0の値
200ステップ中にプログラムが終了しないとき、評価値はほぼ0とした
つまり、終了するプログラムでかつ、出来るだけ大きい値を返すものの
評価を高くした

交叉確率は0.5, 突然変異確率は0.1となんとなく決めた
各世代の遺伝子の数は500とした

(実験1)
とりあえず遺伝子長さ(=プログラムの命令数)20で一晩動かしてみた
生じたプログラムは INC(x0)命令をひたすらしきつめた単純なもの
適応度関数の値は17前後
JZを利用したループ構造が利用されたプログラムは
生じなかった

(実験2)
とりあえず遺伝子長さ48で一晩動かして見た
生じるプログラムは、実験1のものと大差なく
INC(x0)命令を単純に並べたものだった
しかし稀に、JZを利用し、同じ個所にあるINC(x0)を複数回(といっても2回程度まで)
実行するプログラムが生じた
しかし、次の世代に生き残れないことがほとんどだった

・JZを利用したループ構造を持つプログラムをこの先生きのこることが
 どうしたらできるのだろうか

あ、今4個体程度まで増えた
がんばれーがんばれー

あ、消えた

0 件のコメント: