現役高校2年生の奮闘

thagwenの学問・趣味に奮闘する日記

近状報告。遺伝的アルゴリズムで自作ゲームを学習したかったのだが…。

こんにちは!Thagwenです。


ここ数週間の間、遺伝的アルゴリズムという、人工知能の一種を用いて、自作のゲームをクリアするように学習させていました。

もちろん、ブログを書く時間はすべてそちらに注がれたわけです。(実際には半分くらい寝てました)



学習させたいゲームは、横スクロールアクションゲームです。ゆくゆくは洞窟物語とか魔界村レベルのものを学習させたいので、その練習として今回のゲームを作りました。ジャンプ移動以外は適当です。



とりあえず、近状報告。


ぜんっぜん学習してくれない



数時間放置したりしましたが、局所解から一向に抜け出してくれません(笑)

評価関数が悪いのか、それとも交叉の仕方があまり良くないのか・・・でもゲームクリアさせるなら2点交叉以外使い物にならないし・・・



とりあえず困りました。

小さなステージにすると楽勝にクリアしてくれます。3世代ぐらいで半分進める優秀個体が多く存在するのです。遺伝子の長さが非常に短くて良いからです。

でも大きなステージとなると、遺伝子量が多くなっていくのでなかなかうまく優秀個体を進化させられない!




他の方法を考えてみます。


f:id:thagwen:20170705000117j:plain

※画像は学習中のものです。ここはゲーム序盤。しかしほぼすべての世代で、ここでは200体中100体が消滅します。

※優秀な遺伝子を持つ個体ほど遠くに進んでいます。また各個体のopacityは0.5に設定。色が濃いように見えるのは個体が重なっているためで、同じような遺伝子を持った個体であると考えられます。

※お手軽な JavaScript with enchant.js で開発しています。