CG^2所属のysk(@yskcon)です.
自己紹介として作ったゲームの紹介をしておくと,去年の工大祭(東工大の学園祭)ではFlashの3Dシューティング「テックスペース」を制作・展示しました.
自己紹介として作ったゲームの紹介をしておくと,去年の工大祭(東工大の学園祭)ではFlashの3Dシューティング「テックスペース」を制作・展示しました.
図1.テックスペース
突然ですが,今回は「遺伝的アルゴリズム」について説明します.
遺伝的アルゴリズムとは,生物の遺伝の仕組みを再現することで問題のより良い解を求める手法です.
適当な解に対して特定の操作を繰り返していくとより良い解が得られます.
解の「良さ」を数値化でき,かつ病的でない問題であれば適用可能です.
具体例として,「理想的なテックちゃん※」を求める問題を考えます.
テックちゃんには,遺伝子として「髪」,「目」,「口」,「アクセサリー」などの要素があるものとします.
また,理想的なテックちゃんは言うまでもなく「水色でアホ毛つきの髪」,「水色の目」,「V字形の口」,「片耳ヘッドフォン」です.
(今回は最適解が既知なので遺伝的アルゴリズムを用いる必要はないのですが,実際には未知の問題に対して適用します)
図2.理想的なテックちゃん
テックちゃんの「理想度」は,テックちゃんがどれだけこの要素を持っているかどうかで判断することにします.
まず,ランダムにテックちゃんの集団を生成します.
図3.ランダムなテックちゃん集団
次に,「選択」 「交叉」 「突然変異」の3つの手法を適当に用いて,新たな集団を生成します.
「選択」では,既存の集団から理想度が高そうなテックちゃんを1人ランダムに選んで新たな集団に加えます.
図4.選択
「交叉」では既存の集団から理想度が高そうなテックちゃんを2人ランダムに選んで両方の遺伝子をランダムに持つ新たなテックちゃんを生成し,新たな集団に加えます.
図5.交叉
「突然変異」では既存の集団から理想度が高そうなテックちゃんを1人ランダムに選んで一部の遺伝子をランダムに変化させ,新たな集団に加えます.
図6.突然変異
これらの操作により,どちらかといえば既存の集団よりも新たな集団のほうが個々のテックちゃんの理想度が高くなります.
そしてこれを複数回繰り返すと,平均的にはより理想的なテックちゃんの集団が得られます.
図7.より理想的なテックちゃんの増加
本当は新歓向けに遺伝的アルゴリズムを使ったタワーディフェンス風のゲームでも作ろうかなと思ったのですが,ネタがまとまらないのと尊敬すべき先輩の作品の1つとかぶるので結局日の目を見ることはありませんでした.
ですが,今年の工大祭あたりまでにはなにかそういうようなゲームを作りたいと考えています.
それでは.
※ 「テックちゃん」は工大祭の公式マスコットキャラクターであり,一切の著作権は工大祭実行委員会に帰属します.
※ 「テックちゃん」は工大祭の公式マスコットキャラクターであり,一切の著作権は工大祭実行委員会に帰属します.