GA的驚き盤作成ツール GenekistiScope

genescope.gif

Genetic Algorithmで驚き盤の絵を進化させるflashアプリケーションです。

これは何か

  • 驚き盤のパターンを半自動生成するflashアプリケーションです。GA(Genetic Algorithm)によってパターン同士を交配し子孫を残すことで、独創的でありながら均整のある美しい驚き盤が作成できます(かも)。
  • aiscript(Illustrator10用スクリプト)をflashに移植し、web上で作成できるようにしました。

GA(Genetic Algorithm)

遺伝的アルゴリズムと呼ばれます。ビット列で表されたパターンを遺伝子にみたて、二人の親の遺伝子を継承(時には突然変異)する世代交代を繰り返すことで、最適解へと収束させていくアルゴリズムです。今回は最適解というのは存在しないので、完全にランダムなパターンからユーザーの好みへとすり寄せていくための手法として使用しています。

GAによるパターン交配の例

  • 親になるパターンを決めます。パターンにはそのパラメータをビットで表現したコードがあります(ここでは適当です)。

genescope1.png

  • 親パターンのコード(遺伝子)を交配します。具体的には任意の部分から先のコードを入れ替えます。

    • 親1: 01011011011 → 子1: 010110”10100”
    • 親2: 00011010100 → 子2: 000110”11011”
  • 遺伝子の突然変異の表現として、決まった(低い)確率でビットが反転したりします。

    • 子1: 01011010100 → 0101101010”1”
  • このように交配すると、親の性質を受け継ぎながら親とは違うパターンが誕生します。

genescope2.png

遊ぶ

genescope3.jpg

操作

  • 驚き盤本体
    • ドラッグ:円盤を回転させ、動きを確認できます
    • プレス(押しっぱなし):回っている円盤を止めます
  • Genekis(円盤に配置されているオブジェクトをここではそう呼んでいきたい!)
    • ドラッグ:Genekisの配置位置変更(回転/拡大縮小)
    • ダブルクリック:必要ないGenekisを消去
  • [Generate Now!]ボタン
    • クリック:円盤上のGenekisを交配し、子孫を作ります
  • [Auto Rotate]ボタン
    • クリック(トグル):円盤が自動的に回転/停止します

操作の流れ

  1. flashがロードされるとGenekisがランダムに生成されます
  2. 生まれたGenekisから気に入らないものを消したり、位置を変えたりします
  3. 円盤をまわして動きを確認します
  4. [Generate Now!]ボタンを押し、Genekisを進化させます
  5. 気に入った動きができたら、プリントアウトして裏の黒い厚紙に張り、縁とスリットを切り抜きます。割りバシにピンで留めれば驚き盤の完成です
  6. 鏡をスリット越しにのぞきながら円盤をまわして楽しみましょう

こまかい仕様とうまく作るコツ

  • 世代交代時、子供パターンは親パターンの数だけ生成されます。それだけでパターンの最大数(デフォルトだと8)が埋まらない場合は、ランダムパターンが充填されます。
  • 親を選ぶとき、ついつい奇抜なものばかり選んでしまいがちですが、違いすぎるのばかり親にしてるといつまでたってもパターンが収束しないので、ある程度目標とするパターンを軸にして考えたほうがよさそうです。
  • パターンはほとんどが3制御点のベジェ曲線ですが、たまに2制御点のとか4制御点のとかが混ざるので、それらをうまく交配させてくとおもしろいかも。
  • 同様に、スリットよりフレーム数の少ない(多い)パターンが混ざります。これらは実際にのぞいたとき、パターン全体が右回転したり左回転したりするパターンです。

問題点、バグ

謝辞

  • GAや遺伝子コードの表現については森川幸人さんの『マッチ箱の脳 使える人工知能のお話』を参考にしました。ありがとうございます。