RSS

 

RSS


 遺伝的アルゴリズム(GA、Genetic Algorithm)というものがある。人口生命(AL)、人口知能(AI)の1つ。

 GAはかなり「使える」と感じているし、実際、「使える」。過去に実装した例を掲載。

■レースゲームの敵車AIの開発
 レースゲーム(商品)の敵車AIを作り上げるのにGAを使用した。

 帰宅時に、車のスペックデータとコースデータを用意して、ターゲット機上に設定。その時は、車は壁にあたったり、おそるおそる走っていたり。

 その次の朝、見てみると、その車がコースをうまくそして速く走るようになってる。GA君は夜勤専門の働きもの。車の挙動は普通のプレーヤがコントローラで操作するのでは追いつけないレベルになる。

 壁ターン(壁にぶつかった方が速くコーナーリングできるというレースゲームならではのバグ技)も平気で見つけてくれるので、デバッグにもなった。その場合は運動モデルまわりやコースを見直す。
 
 車7種類×コース5種類=25パタン。プログラマが持ってる開発機にかける。5人で分担すれば、35パタン÷5人=7日間で終わるという計算。

 敵車AIの該当部分に関してはGAまかせで、開発メンバーによる調整は行われなかったので、重要な開発手段だったと言える。

■格闘ゲーム風ジャンケン
 こんな感じのジャンケンマトリクス。縦軸が自分の手、横軸が相手の手、表は相手に対するダメージ。自分も同様に相手からダメージをもらう。プレーヤ二人は対等なゲーム。

大技 小技 防御 硬直
大技 10 10 ※0 20
小技  3  3  1  6
防御 ※0  0  0  0
硬直  0  0  0  0
※相手の大技を防御するとその次のターンは相手は硬直しか出せない。

出せる手は、大技・小技・防御・硬直。
大技:相手に対するダメージはでかい。防御されるとペナルティー。
小技:ダメージは小さいが防御されてもペナルティーなし。
防御:相手に対するダメージはなしだが、大技を防御しその次のターンに大技(倍)を入れることができる。
硬直:相手の技が倍で効く。

 遺伝的アルゴリズムでの進化の過程が進むにつれ

・なんでもいいから技を出す個体
・大技ばっか出す個体
・防御オンリー(防御した後は大技)の個体
・小技ばっか出す個体
・大技・小技・防御をおりまぜて闘う個体
・イレギュラーな技のシーケンス(開幕で硬直してみるとか)を入れて相手のペースを狂わせる個体

 といった順番に現れる。

 各個体は「防御が決まった後は大技打ち込めばいいじゃん」ということを受け継いでいく血筋によって、発見・記憶してることになる!!!

■FM音源の音色
 FM音源の音色を調整するのに、GAを使った。FM音源の下記の用な性質がGAと相性がいいと思った次第。
 ・パラメータがたくさんある。
 ・パラメータの変更と音色への影響が人間にはわかりにくい。
 ・パラメータの変更と音色への影響は概ね連続的
 ・パラメータの変更と音色への影響は時に急激

 各個体の評価は自分で聞いて点数をつけるという原始的なもの。
 楽しく音色を調整、電子的なベース音、ホイッスル、バスドラム、謎音などを作ることができた。(※)

 ※岩井政佳:遺伝的アルゴリズムによるFM 音源パラメータの調整, 夏のプログラム・シンポジウム「娯楽とコンピュータ」, 1994. 

2007-09-11:ジャンケンの表中 小技VS防御が0点だったのを1点に訂正。


  • コメント (0)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/893