試しに対戦してみましたが、私(オセロ初心者)よりは少し強い感じです。
また、以前実装した中で最強プレイヤーだったDfsStoneNumPlayer(評価関数を石の数としたゲーム木探索プレイヤー)よりも強いです。
せっかくなので、市販のオセロAIと対戦させてみよう。
ということで、iphoneアプリのHAYABUSAと対戦させてみました。
まずは最弱レベルであるLOCAL-EASYを相手にしてみました。
MctsPlayerというのが私が作ったAIの名前です。
MctsPlayer ●44 - ○20 HAYABUSA(LOCAL-EASY)
MctsPlayer ○50 - ●14 HAYABUSA(LOCAL-EASY)
MctsPlayer ●53 - ○11 HAYABUSA(LOCAL-EASY)
MctsPlayer ○41 - ●23 HAYABUSA(LOCAL-EASY)
MctsPlayer ●41 - ○23 HAYABUSA(LOCAL-EASY)
最弱モードと言えども、圧勝できると嬉しいものです。
相手を連続パスに追い込むという場面も多々見られ、なかなかいい感じです。
次にLOCAL-NORMAL(LOCAL-EASYより1つ上のレベル)と対戦させてみました。
ちなみに私が自分でプレーした戦績は0勝2敗でした。こいつに勝てると嬉しいですね。
MctsPlayer ○20 - ●44 HAYABUSA(LOCAL-NORMAL)
MctsPlayer ●15 - ○49 HAYABUSA(LOCAL-NORMAL)
MctsPlayer ○24 - ●40 HAYABUSA(LOCAL-NORMAL)
MctsPlayer ●15 - ○49 HAYABUSA(LOCAL-NORMAL)
MctsPlayer ○16 - ●48 HAYABUSA(LOCAL-NORMAL)
完膚なきまでに打ちのめされてしまいました。
打ちたくない場所にいいように打たされて、最終的にひっくり返されるというパターンで負けていました。
相手の動きを観察すると、
- 敵が打てる場所を減らす
- 敵に空マスの隣を取らせる
おそらく、disc count、mobility、frontierの加重和を評価関数にしてα-β探索でもやってるのかなと思います。もっと複雑なことやってるかもしれませんが。