オセロで打ち手をランダム選択する条件で10000回対局させてみた

概要

オセロのAIを作っていく上で参考とするため、自作のオセロスクリプトを活用し、先手番・後手番共に打てる手からランダムに選択(以後ランダムと呼称)する条件で10000回対局させた結果を整理しました。
オセロスクリプト本体に関しては以下記事を参考にしてください。

【完成】Pythonでオセロのスクリプトを作成



また、リポジトリは以下です。
https://github.com/Rosyuku/othello

対局結果まとめ

勝率について

横軸に対局回数を、縦軸に確率を表しており、0が引き分け、1が先手勝ち、2が後手勝ちを示しています。目視した感覚での評価ですが、4000回〜6000回程度で勝率が収束している傾向が見て取れます。

10000回の対戦結果がこちら。先手勝率が45.6%程度なのに対し、後手の勝率は50.4%であり、何も考えずに打ちあった場合、後手のほうが少しだけ勝ちやすいと言えそうです。

先手 後手 引き分け率 先手勝ち率 後手勝ち率
ランダム ランダム 4.0% 45.6% 50.4%

石数について

次に、石の数について見てみます。以下は最終的な先手の石数と後手の石数をヒストグラムにしたものです。ほぼ重なる結果になっており、僅差の試合が多いことが分かります。

10000回の石の数の平均値はこちら。平均の違いはわずか0.9石ととても僅差ですね。

先手 後手 先手平均石数 後手平均石数
ランダム ランダム 31.5 32.4

場所について

最終局面の分析

今度は、どこの場所をとっているかを見ていきます。以下は、最終局面において先手がその場所を取得していた確率をヒートマップで表しており、このマップにアルゴリズムの特徴が出てくると考えられます。本ケースではランダムVSランダムだけあって、特に場所ごとの違いはなく、どこの場所もほぼ50%という結果になっています。

一方で、先手が勝ったケースに限定して同じグラフを描いたのがこちら。先ほどとはかなり違いが現れていて、勝った場合は高確率で角を抑えていることが分かります。一方で、素人的には一番重要と考えられる4隅よりも、角の中央を抑えていることが重要という結果になっています。このあたりは、アルゴリズムのせいなのか、オセロが本当はそういうゲームなのか、分析調査していかなければいけないですね。

逆に以下は先手が負けたケースに限定した場合のものです。先ほどの裏返しで、角を取得できていないことが分かります。また、0.5以上のもの(取っていると負けやすい場所)は特に無いようですね。

ひっくり返った回数の分析

最後に、どの場所はよく取り合われるのか(黒と白が入れ替わるか)を見ていきます。以下は、各場所ごとに1回の対局で平均的に何回ひっくり返ったか(返されたか)の10000対局の平均値を示しており、4隅は0(ひっくり返らない)、中央は5回(1回の対局で平均5回程度ひっくり返っている)といった傾向が出ています。よくひっくり返るところは維持するのが難しいということであり、アルゴリズムを考えていくうえでの参考に出来そうですね。

まとめ

オセロのAIを作っていく上で参考とするため、自作のオセロスクリプトを活用し、先手番・後手番共に打てる手からランダムに選択(以後ランダム)する条件で10000回対局させた結果、以下のようなことが分かりました。これらの結果を参考にオセロAIを作っていきたいと思います。

  1. 勝率は4000回〜6000回の対局で収束し、先手の勝率(45.6%)に対して、後手の勝率(50.4%)はやや高く、後手番が少しだけ有利であると言える
  2. 石の数のヒストグラムを見ると、先手番・後手番の石の数は拮抗しており、ワンサイドゲームは起きにくく、僅差の試合のほうが発生しやすいと言える
  3. 勝ち試合では角の中央を持っている可能性が高く(69%)、これは4隅(64%)より高い
  4. 中央ほどひっくり返る頻度が多く(1対局平均で5回程度)、維持が難しいと言える

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA