2011年11月30日水曜日

Mario AI Competitionにて、プログラムからMarioを動かす in 2009

何度も右往左往

2009ver -> 2011ver -> 2009ver(今ここ)

とりあえず、参考サイト通りの動きができた

参照したのは、

> /src/ch/idsia/ai/agents/ai

以下にある
ForwardAgent.java
これと参考サイト様を見ながらやっていく。以下のようなソースを作成。
> /src/ch/idsia/ai/agents/ai/KanpeAgent.java



package ch.idsia.ai.agents.ai;

import ch.idsia.ai.agents.Agent;
import ch.idsia.mario.engine.sprites.Mario;
import ch.idsia.mario.environments.Environment;
import ch.idsia.utils.MathX;

/*
*By Kanpe777
*/


public class KanpeAgent extends BasicAIAgent implements Agent
{
private int trueJumpCounter = 0;

    public KanpeAgent()
    {
        super("KanpeAgent");
        reset();
    }

    public boolean[] getAction(Environment observation)
    {
if (trueJumpCounter > 16) {
                trueJumpCounter = 0;
                action[Mario.KEY_JUMP] = false;
            } else {
                trueJumpCounter++;
                action[Mario.KEY_JUMP] = true;
            }

        action[Mario.KEY_RIGHT] = true;

return action;
    }
}

このファイルを作成して、AIMarioのトップディレクトリにて
>ant
コマンドを実行、BUILD SUCCESSFULがでるはず
>cd classes
にて、
>java  java ch.idsia.scenarios.Play ch.idsia.ai.agents.ai.KanpeAgent
これで定期的にジャンプをするMarioができる。

これをGAでやるため、メタプログラミングをするか迷ったが、既に学習プログラムがある。
もともとに入っている。
次は、NNで学習しているソースを読みたいと思う。



2011年11月28日月曜日

LLVM3.0のビルド_Lion

ちょっくらソースを読むためにビルド

まずダウンロードとかしたいが、公式ページによると2.9まではダウンロードできるが
3.0はsvnじゃないと無理とかorz

mkdir とかでとりあえず、svnで落としてくるようのディレクトリ作成。
>mkdir ~/llvm

作成したディレクトリのsvnでおとす
>svn co http://llvm.org/svn/llvm-project/llvm/trunk ~/llvm
>mkdir ~/myllvm
>cd ~/myllvm
>~/llvm/configure --disable-optimized --enable-assertions --enable-debug-runtime --enable-debug-symbols
そうするとmakeファイルができる。
>ls

Makefile         config.log       include/         runtime/         utils/
Makefile.common  config.status*   lib/             test/
Makefile.config  docs/            llvm.spec        tools/
bindings/        examples/        projects/        unittests/

以前gccをビルドする際に、フツーにmakeをすると、6h以上かかってしまったので.....
パラレルビルドをしてやります。
make j○<-数字
My Mac はcoreは2個なので2にしてやりました。
1h以内でおわったはず
>make -j 2
でやりました。
jの後に引数を渡さないと、やりすぎとあるので気をつける。
※j の後の引数はコア数*1~2がいいとのこと

んで、make終了。

2011年11月15日火曜日

Rubyのバージョンを上げる

色々苦戦したので載せる

MacにはデフォルトでRubyが入っている。

>ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11]

Ruby on Railsの環境構築のサイトは結構あるが、Rubyのバージョンアップはなかなかしんどい。
っていってもやることは、MacPortsのバージョンアップをして、installをやればok。

MacPortsのバージョンアップ
>sudo port selfupdate

Ruby1.9のインストール
>port search ruby
ruby19 @1.9.xがあるはず

インストールする
>sudo ports install ruby19 +nosuffix
これで、ruby19としてではなく、rubyとして登録できる。

>ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11]
done

参考にさせてもらいました。

2011年11月12日土曜日

Mario AI Competition 2009 -> 2011 移行

参考サイトに沿って、じゃあ次はプログラムで動かすぞー
しかし、googleグループにあるはずのiMario.jarがない!!
2009/5/18(一番古い記事)に遡っても、iMario.jarは見つからないorz

色々やってみた。しかし、見つからないorz
eclipseも用意したのに...

もう2009を諦める。
実は2011年verがあるのでそれに移行する。

2011 Mario AI Championship

上記のサイトから「Getting Started」--> 「Mario AI Benchmark source package」から「MarioAI.zip」というファイルをダウンロード。
解凍する。

















MarioAI フォルダ内にて

>cd MarioAI/bin/AmiCobuild/PyJava
>java ch.idsia.scenarios.Main

あっさり起動。

A:fire and run
S:jump
←:左へ動く
→:右へ動く
↓:ストップ and しゃがむ
W:強制終了
L:ラベル(ウィンドウのからの座標?)
C:マリオの位置をセンターへ
G:グリッド表示
Z:ウィンドウをズーム
-:FPS を1下げる
^:FPSを1上げる
8:FPSを無限
スペースキー:ポーズ
F:空を飛ぶ(チートw)





前回までは、時間切れや敵にあたって死亡すると、そのままだったが、今回は色々結果が出力され、プログラムも終了した。

例:時間切れの出力結果
[~ Mario AI Benchmark ~ 0.1.9]

[MarioAI] ~ Evaluation Results for Task: BasicTask
Evaluation lasted : 122994 ms
Weighted Fitness : 307
Mario Status : Loss...
Mario Mode : FIRE
Collisions with creatures : 0
Passed (Cells, Phys) : 15 of 256, 243 of 4096 (5% passed)
Time Spent(marioseconds) : 200
Time Left(marioseconds) : 0
Coins Gained : 0 of 285 (0% collected)
Hidden Blocks Found : 0 of 0 (0% found)
Mushrooms Devoured : 0 of 0 found (0% collected)
Flowers Devoured : 0 of 0 found (0% collected)
kills Total : 0 of 40 found (0%)
kills By Fire : 0
kills By Shell : 0
kills By Stomp : 0
MEMO INFO: Reason of death: Time out!

プログラムが良い感じになってる〜
2011/11/12

2011年11月8日火曜日

Mario AI Competition にて最初の一歩

Mario Competition 2009というのがあったらしい

この話はRL Competition 2009の一部....
RL Competition = 強化学習コンペ(Reinforcement Learning Competition)
強化学習アルゴリズムを競う大会

頑張ればこんなこともできる

Infinite Mario AI - Long Level



ちょっと課題でこれを機会学習でマリオを操作することになった。(面白そ~)
方法はGA(遺伝的アルゴリズム)!!

最終的にはGAでマリオの動きを最適化とかしたい。
GAでやる方法も後々考えるorz
下記のブログ様を参考にさせてもらいました。
http://symfoware.blog68.fc2.com/blog-entry-120.html


動作環境
Mac OSX 10.7.2
javaのバージョン:1.6.0_26

Mario AI Competition



このサイトの「Getting started」から右上にある「source code」をクリックするとソースコードがzip形式でダウンロードされる。


これを解凍して動かす。
方法もこのサイトに載っている。
marioai/classesにて
>java ch.idsia.scenarios.Play
すぐに起動


マリオの動作
→:右へ
←:左へ
↓:しゃがむ
 s :ジャンプ
 a :ファイアボール
  l :各Agentの座標
 w :強制終了
まぁ最初はこんなもん
2011/11/8