オセロ研究支援AIアプリ Egaroucid 使い方

English

このアプリケーションの仕様について、不便なところや「この機能がほしい!」といった要望を募集しています。作者のTwitter(@Nyanyan_Cubeまたは@takuto_yamana)またはGitHubのissueやpull requestなどから要望をお送りください。

 

ここに書いてある機能は研究モードにおける機能です。他のモードでは一部の機能が無効になっています

 

目次

 

 

フォルダ構成

対象モード: 全モード

アプリの実行前に以下のフォルダとファイルがあるかを確認してください。

Egaroucid5.exeをダブルクリックなどで実行するとアプリが起動します。

 

先読み

対象モード: 全モード

先読みは複数のレベルで定義されます。レベルごとに中盤の読み手数および読み切りタイミング、読みの確証が決められています。これらの値は以下の画像のように決まっています。

lookahead

なお、レベルを上げると現代のコンピュータでは現実的な時間に計算が終わらなくなります。そのため、シンプルモードと真剣勝負モードではレベル上限を30にしています。

 

ヒント表示

対象モード: 研究モード、シンプルモード

ヒント表示は局面に存在する合法手に対して行われます。

book登録局面の場合は評価値とbookという表示がされます。bookに登録されていない局面はその場で何手か読んで、評価値とレベル、または完全読み(確証100%で読み切り)した場合は100%を表示します。

その手番にとって一番良いと思われる手は青色の表示になります。なお、評価値と最善手表示は仕様上ずれる場合がありますが、最善手表示の方が信頼性は高いと思われます。

 

人間的ヒント表示

対象モード: 研究モード

本アプリでは、通常の最終石差を推測する評価の他に、人間的な評価も表示できます。具体的には、以下の2点の総合評価です。なお、この評価値は新たな試みのため、今後仕様が変更になる可能性があります。

これらのアイデアはこちらの記事を参考にしたものです: https://othelloq.com/tweet/quantifing-human-difficulty

人間的ヒントにチェックすることで表示でき、各マスの右上に値が表示されます。値が大きいほどその手番にとって有利であることを示していて、一番大きな値となっている数字は青色になります。

人間的ヒントの計算方法は以下です。

  1. 各マスのN手の進行を全て求める
  2. 進行の終了局面での評価値を求める
  3. 評価値と分岐数をまとめた値を計算する

うみがめ数表示

対象モード: 研究モード

本アプリではうみがめ数を表示できます。黒字は黒(先手)のうみがめ数、白字は白(後手)のうみがめ数です。

うみがめ数についてはこちらを参照してください: http://blog.livedoor.jp/umigame_oth/archives/1075469317.html

 

分析

対象モード: 全モード

分析ボタンを押すと1手ずつAIレベルで設定したレベルで評価値が再計算され、グラフに描画されます。評価値が一度も計算されていない手はグラフ上で非表示となる(検討中でない場合)か、0のところに点だけ表示されます(検討中の場合)

 

履歴

対象モード: 研究モード

対局中または対局終了後には、グラフをドラッグしたり左右キー、AキーとDキーを使って局面を移動できます。また、途中から別の手筋を検討することも可能です。

 

入出力

本アプリには様々な入出力機能があります。

棋譜入力

対象モード: 研究モード

棋譜を読み込みます。棋譜はF5D6形式、またはf5d6形式に対応しています。

盤面入力

対象モード: 研究モード

局面を読み込みます。局面は0/B/b/X/x/*のうちどれも黒石(先手)、1/W/w/O/oのうちどれも白石(後手)、、./-が空きマスとして、盤面を1行で表した64文字に、その局面から打つ手番(0/B/b/X/x/*1/W/w/O/o)を加えた65文字に対応しています。なお、任意の場所に半角スペースを入れても動きますので、Edaxのボード入力と互換性があります。例えば、f5d6と縦取りした局面であれば以下のようになります。

局面の読み込みに成功すると盤面が変更されます。

局面を読み込んだら対局開始ボタンを押すとその局面から対局できます。

局面入力の場合は棋譜データが存在しないので、入力された局面よりも前の局面を履歴から参照することはできません。

対局保存

対象モード: 研究モード

対局中、または対局終了後に対局保存ボタンを押すと、現在の対局を保存できます。このとき、先手と後手の名前、およびメモ(大会名などを想定)を書いておくとその内容も一緒に保存されます。

保存先はこのアプリがあるところにあるrecordsフォルダです。

ファイルはテキストファイルで、名称は以下の通りです。

ファイルの中身は以下の形式です。

スコアについては、終局前に保存された棋譜には?と表示されます。

 

棋譜コピー

対象モード: 研究モード

表示されている局面までの棋譜をクリップボードにf5d6形式でコピーできます。

 

book

手の選択におけるbookの使い方

対象モード: 全モード

AIが次の一手を選択する際、 その局面での合法手に一つでもbook登録手があった場合には探索は行わず、必ずbookに登録された手を打ちます。

つまり、bookに悪い手ばかり登録すると、AIは悪い手ばかりを打つようになるということです。bookには必ず良い手から順番に登録する必要があります。

bookに登録されている手から、book誤差の制約のもと、ランダムに手を選択します。

book誤差

対象モード: 全モード

book誤差は、ある局面において複数の手がbookに登録されているときに有効になります。

ある局面からbookに登録された手のうち、最大の評価値をX、book誤差をYとすると、「X-Y」までの評価値の手をランダムに選びます。

例えばある局面からA、B、Cという3つのbookに登録されている手が選べて、それぞれの評価値が1、-2、-10だったとします。このとき、book誤差が2以下であれば、Aのみが選ばれます。book誤差が3から10までなら、AかBが選ばれます。book誤差が11以上であれば、A、B、Cすべてのうちどれかが選ばれます。

bookの手動による修正・追加

対象モード: 研究モード

修正したい局面にセットして、修正したいマスを右クリックします。これでbook修正・追加モードに入ります。

数字キーまたはテンキーとマイナス符号-とバックスペースキーを使って修正した評価値を入力してください。入力の確認のため、画面左下に入力した値が表示されます。

誤ってbook修正・追加モードに入ってしまった場合は何も入力せずに(入力欄が空の状態で)同じマスを右クリックすると抜けられます。

bookを変更するとアプリ終了時に自動で保存されます。

bookの自動学習

対象モード: 研究モード

まず、bookを生成し始めたい根となる局面に設定します。

bookの学習にはAIレベルで設定した先読み手数が使われます。学習開始後には再設定できませんので、ここで設定してください。

bookの設定でbookの深さ(何手目までbookに登録するか)と許容石差(どれくらい形勢がついた局面を登録するか)を設定できます。

この状態で学習開始ボタンを押すとbookの自動生成が開始されます。

学習停止ボタンを押すといつでも学習を停止できます。

book自動生成アルゴリズムの解説

bookは指定された局面を指定されたレベルで示される手数だけ先読みすることで評価値を計算します。

簡単にアルゴリズムの意図を解説すると、有力な進行から順番に評価値を計算していくというものです。

実装には優先度付きキューを使っていて、以下のアルゴリズムで動いています。

  1. 設定された根となる局面をまずキューに追加します。
  2. 以下をキューが空になるまで繰り返します。
  3. キューの先頭から局面を取り出します。このときキューから取り出される局面は、キューの中で最善手に近い手であり、かつ手数の少ない手です。
  4. 局面からの全ての合法手に対して以下を行います。
  5. 局面から1手進めて、評価値を決められた深さで計算し、bookに追加します。このとき、指定された足切り評価値よりも値が小さくなりそうだと判断した場合は探索を途中で打ち切ります。
  6. キューに局面を追加します。

bookの統合

対象モード: 研究モード

本アプリの形式で作られた複数のbook、またはEdax形式のbookはアプリ上で統合できます。なお、複数のbookにおいて同じ局面に違う値が入っていた場合は、後に統合されたbookの値が採用されます。

定石タブのインポートボタンを押すと、ドラッグ&ドロップでbookを統合できます。

bookの自動修正

対象モード: 研究モード

bookに登録されている任意の局面にセットして定石タブの自動修正ボタンを押すと、その局面以降のbook登録局面の登録評価値を自動で修正します。

bookはその性質上、同じレベルで作ったのであれば終局に近い局面ほど値が正確になります。この性質を利用して、bookに登録されているある局面の評価値を、その局面から手を進めたときにbookに登録されている局面を使って自動で修正することができます。

なお、この機能は任意の局面について、最善手が必ずbookに登録されているという前提のもと実装しています。最善手が登録されていないと値が狂います。

標準付属bookの仕様

このアプリには標準で作者が生成したbookが付属しています。このbookは以下の仕様で作られたものです。

Zebraのbookを使うことについては、作者に許可を取ってあります。

 

定石

対象モード: 全モード

表示される定石データはこちらのものを使っています: http://evaccaneer.livedoor.blog/archives/11101657.html

 

AI単体での使用

このオセロAIのコードはGPL3.0ライセンスの下公開しています。コードはライセンスの下で自由に活用してください。

GitHubレポジトリでは、私が単体テストに使うために作った、AI単体で使えるコードを公開しています。こちらをコンパイルすることで、AI単体を使用する実行ファイルができます。入力形式は以下です。

例として縦取りした盤面は、

となります。

出力形式は以下です。