AI Q学習#4

コンピュータプレイヤー

Q学習は膨大な学習(試合)を行いながら、最適な解を求めていく。そのため人が三目並べをやりながら学習させることは不可能に近い。そこで学習用の相手をコンピュータにやってもらう。そのプログラムがクラスPlayerRandomだ。

9行目で全ての打てる座標を取得し、10行目でランダムに選択している。

AIプレイヤー

Q値に基づき手を打つクラスがPlayerAIだ。16行~29行目の処理で、打てる座標の各Q値を取得しながら、最大のQ値、座標を決定している。もし最大値が複数ある場合はランダムに選択している。

13行目のif文は一定の確率でランダムに手を選択するためのものだ。これはQ値に基づいた手のみを打っていると学習範囲が狭くなってしまう、これを防いでいるのだ。

人プレイヤー

最終的にはAndroidアプリに学習内容を反映させる予定だが、学習が進んだAIと今すぐにでも対戦したくなる。そこで人が打てるクラスPlayerHumanを作成した。X(横):0~2、Y(縦):0~2の入力で手を打つことができる。と、いっても実は次のデバック機能が活躍した。

コマンド 内容
d 棋盤表示
a 全てのQ値表示
pキー値 キーに対応するQ値を表示
b 強制終了


前へ<ーーー>つづく

タイトルとURLをコピーしました