遺伝的アルゴリズムの染色体は何でもOK


2013年 04月 15日

遺伝的アルゴリズムでは、対象を染色体という形でモデル化する。
染色体というと、生物の染色体のイメージがあるので、数個の値しか取らない数値が延々と並んだ配列とかリストを考えるのではないかと思う。
多くの場合そうなのだが、遺伝的アルゴリズムでの染色体はヒモ状のものである必要はないし、個々の遺伝子も、0/1あるいは、AGCTの様に数個の値に限定する必要もない。
単純な数値である必要もなく、座標値、形状データなど、実は何でも良い。
重要なのは、コンピュータで扱えること、2つの染色体から子供を普通に作る方法と、突然変異した子供を作る方法が用意できればOKである。
言葉による説明だけでは分かり難いだろうから、実例を紹介しよう。

一般的には、ナップサック問題とか巡回セールスマン問題で遺伝的アルゴリズムを体験するようだ。
でも、それだけでは、あまり面白味がないだろう。
と思っていたら、車のデザインに利用した例があった。

BoxCar 2D


適当にデザインして走らして、交叉や突然変異で次世代車を作り、また走らせて、そして選択してというのを続けていると、次第に理想的な形の車になって行きます。
この例では、実際に走行シミュレーションさせて評価するので、良い車になるまでにかなりの時間がかかります。プログラムを走らせたまま一晩放置しておけば、かなり良い状態になっていることでしょう。