スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Ruby]遺伝的アルゴリズム

現在ゼミの研究前の下準備として,ゲーム開発者のためのAI入門を読んでいます.
ゲーム開発者のためのAI入門ゲーム開発者のためのAI入門
(2005/01)
デイビッド・M. ボーググレン シーマン

商品詳細を見る


その中で遺伝的アルゴリズムのサンプルプログラムを,Rubyで書き直してみました.

いや,正直な話C++で書かれた本書のサンプルコードが読むのがいやだったので自分でこんなもんだろうって組んじゃっただけなんですけどね.

遺伝的アルゴリズムサンプル

起動したとき,世界に水や日光などの環境パラメーターが設定されます.さらに,植物を11本生成します.この植物にはそれぞれ,自分が育ちやすい水や日光などの条件が設定されています.

そして,植物の成長条件と現在の環境条件から,その植物がどれだけ成長したか判定して,それを茎の長さとして表現します.

その後,成長が大きい植物のNo1とNo2を探し,それぞれの遺伝子(成長条件が入ってる配列)を交配(交叉ともいう)させ,新しい種を作り出します.このとき,遺伝子の一部に突然変異をおこさせます.

そして,もっとも成長の悪かった植物を引っこ抜き,交配で生み出した新しい植物を植えなおします.

これを繰り返すと,世代が重なるごとにどんどん植物全体の身長が伸びていく(最初の親の背よりも高く)というプログラムです.それだけしかでき無いとも言いますがw

実際ゲームに使うとしたら,モンスターのパラメーターなどをゲームに自動的に生成させる,などといった時に使えるかもしれません.

詳しくはマッチ箱の脳という記事に載ってますので,そちらを参照のこと.

ファイルも一応アップしておきます.よろしければどうぞ.
http://totobook.pepper.jp/zip/GeneticAlgorithms.zip
コメント

ハンドメイド2000連射

品種改良って大変なんだなぁ、と思いました。
http://blog-imgs-36.fc2.com/r/3/j/r3jou/rendanomudadukai.png

1000?!

まあ,あくまでも最初に設定された環境に最大限適応するように進化していくから,このままだとあまり面白みはないんだよねぇ.

100世代ごとに環境リセットしたりすると,また最適化への道を進んでいくから前のドベがトップに踊り出たりして結構面白い.

それにつけてもTRPGやりたいことよ.今度AMでもやるかも.

TRPG…
であるならば、AMの活動時間をフルに使っても、1プレイすら終わらない事態に陥ると言うことを覚悟せねばなりますまい。
1プレイにかかる平均時間は3時間前後ですので。
ソード・ワールド2.0でなければ、もっと長かったり短かったりするかもですけども。

いろいろと犠牲にした果てに桃源郷はあり。
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。