GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

とりあえずGA + UCB1-TUNED実装完了

まず練習問題として、多碗バンディット問題を連続値行動に拡張したものをでっち上げました。

これは、行動として一つの実数を選択すると、報酬として1.0または0.0を返す問題で、報酬は乱数が閾値以下なら1.0、閾値より大きければ0.0としました。

閾値http://d.hatena.ne.jp/h_mitani/20080608で書かれていた式を少しいじって、閾値=Math.max( 0.0, 1.0 - 0.1 * ( Math.abs( Math.sin( x - 3 ) * 5 ) + Math.abs( ( x - 3 ) / 4 ) ) )です。基本的に、上下反転して細々といじっただけです(上に凸の多峰性のグラフになってます)。xに入るのが行動として選択した実数。

んで、この問題をGA + UCB1-TUNEDで解かせると、準最適解は発見出来ます。行動は大体3.0±0.05位、閾値は0.98。

実際にはもうちょっと誤差を減らす事も出来るのですが、収束の速さを重視して調整したんでこの誤差でも満足しています。


ここからは完全に個人的なメモ。

個体数と世代更新の間隔はそれぞれ8,50がミニマムっぽい。4とか25では問題あり。

エースは4個体生存が多分ベスト。2でも行けるけど、収束が遅くなるかも。

非定常環境の場合も軽くテストしたが、一旦収束した後に最適行動が変化すると再収束が遅い。

免疫アルゴリズムか何かを導入する必要があるかもしれないが、それに関しては三目並べなりリバーシなりでテストしてから判断する。