10. おわりに

← 目次に戻る

< 9. 平均距離のグラフを描く

以上、Scratchのプログラムを追いながら、遺伝的アルゴリズムの実装を見てみました。おおまかにでも遺伝的アルゴリズムがどういうものかがつかめたのではないでしょうか?

» 遺伝的アルゴリズムを使って障害物をよけるネコ

の変数を自分で変更してみたり、あるいはリミックスしてみて改造してみると進化の様子が変わってなかなか面白いです。

たとえば、プログラム開始時に設定されている、障害物に当たったときの「ペナルティ」を大きくしてプログラムを実行してみるとどうなるでしょうか?あまりペナルティを大きくしてしまうと、りんごの方向に進んでいたネコの遺伝子が次世代に残りにくく、りんごに到達することがなくなってしまいます。リスクをあまりに大きくしてしまうと、リスクを恐れず果敢にりんごに向かっていったネコが絶滅してしまうのです。

「突然変異が起こる確率」は3パーセントに設定されていますが、これを0、つまり突然変異がまったく起こらないようにするとどうなるでしょうか?この場合、たとえば以下のように十分世代が進んだとき、すべてのネコがほぼ同じような動きになり、しかも障害物をギリギリで避ける動きをするようになりました。最も最適な動きになったのかもしれませんが、生物っぽさがあまり感じられません。

figure 49

かといって「突然変異が起こる確率」をあまりに大きくしてしまうと、常にランダムな動きをするようになってしまってりんごに到達できなくなってしまいます。

6. 自然淘汰の章では、淘汰の方法に「ルーレット選択」の簡易的な実装を採用しましたが、別の方法で自然淘汰をおこなってみるともっと効率的にネコが進化するようになるかもしれません。

7. 父親と母親の遺伝子から次世代の遺伝子をつくるの章では、交叉の方法に「二点交叉」を採用しましたが、別の交叉方法を採るとどうなるでしょうか?

このように、進化の方法を自分でデザインしたり調整したりしていたら、なんだか自分が神様になったような錯覚を覚えました。

もし、読者の皆さんがリミックスしてみて、面白いネコの進化の方法を見つけたら、Twitterのハッシュタグ#ネコ遺伝でツイートしてぜひお知らせください。

また本文の間違いやプログラムのバグのご指摘も歓迎です。著者について/連絡先の連絡先のいずれかにお知らせください。

< 9. 平均距離のグラフを描く

← 目次に戻る