リファレンス(Book系コマンド編)

Edaxのコマンドについて、ヘルプの説明だけではよくわからないものもあるので、仕様を整理してみました。コマンドにもいろいろな種類がありますが、今回はBook系のコマンドについて整理しました。それ以外のものについては下記リンクを参照ください(リンク切れのものは未作成です)

Book系のコマンドを使う上では、Bookとはを参照して基本的な概念を覚えておくと理解しやすいと思います。

管理系コマンド

book new

書式

book new レベル 深さ

指定されたレベルと深さのBookを新規に作成します。レベルの初期値は21、深さの初期値は36です。作成直後は、初期局面のみが登録されています。

実行例

book new 24 40

book merge

書式

book merge ファイル名

「現在のBook」に、指定された「マージ対象のBookファイル」をマージします。Bookのレベルや深さは「現在のBook」のまま変わりません。「マージ対象のBookファイル」に含まれるpositionの内、「現在のBook」に存在しないpositionがleaf情報とともに取り込まれます。取り込まれたpositionは元のpositionのレベルを引き継ぎます(これによって異なるレベルのpositionが混在するBookファイルができるケースがあります)。また、取り込まれたpositionの評価値等は未計算のままになっているので、メッセージにも出力されますが使用前にbook fixを行ってください。

実行例

book merge data/book2.dat

book depth

書式

book depth 深さ

現在のBookの深さを指定した値に変更します。大きくすることも小さくすることも可能です。保存が行われるわけではないので、変更後はbook saveコマンドを実行して保存してください。また、深さの値を小さくしたからと言って、既に登録されているそれ以上深い局面のデータが削除されるわけではありません。

値を指定しなかった場合は、36を指定したものとみなされます。

実行例

book depth 40

book info

書式

book info

Bookの基本情報を表示します。表示内容は「Bookとは」を参照してください。

book fix

書式

book fix

Book内の各種情報を再計算・再設定します。以下の処理が行われます。

  • 各position情報が正しいかのチェック(盤面の状態、手の合法性、二重登録チェック等)。正しくない場合は以下を実行。
    • 不正な盤面の場合は削除
    • 正しい盤面であれば、positionのレベルをBookのレベルに再設定し、linkの張り直しとleafの再計算を実施
  • 全positionに対してlinkの張り直し(ただし、追加のみで削除は行われません)
  • 全positionに対して評価値、勝敗数等の統計情報の再計算(leafの再探索は行われません)
  • 全positionに対してlinkの順序を評価値の高い順に並べ直し

book prune

書式

book prune

以下の局面がBookから削除されます。

  • Bookに指定された深さを超える局面
  • 初期局面から以下のどちらかを満たすBook内の手(link)をたどって到達できない局面
    1. 黒はBook内の最善手を打ち続ける(白は最善手でない手を打って良い)
    2. 白はBook内の最善手を打ち続ける(黒は最善手でない手を打って良い)

例えば、以下の3つの定石が登録されているBookがあったとします。

  • f5d6c3d3c4(虎定石)
  • f5d6c5f4e3c6(兎定石)
  • f5d6c5f4e3d3(三村流)

このBookに対してbook pruneを実行した場合、以下のようになります。

  • 虎定石は双方最善なので残ります
  • 兎定石は3手目のc5で黒が最善ではない変化をしていますが、白は最善を打ち続けているので2の条件を満たし、残ります
  • 三村流は3手目のc5で黒が最善ではない変化をしており、6手目のd3で今度は白が最善ではない変化をしたので、1,2のいずれの条件も満たせず、最後のd3を打った後の局面が削除されます

また、削除後にbook fixと同じ処理を行い、各種再計算を行っています。

book subtree

書式

book subtree

現局面以降の局面以外を全て削除します。削除後にbook fixと同じ処理を行い、各種再計算を行っています。

例えば、f5d6c3としてからbook subtreeを行うと、虎系以外は全て削除され、虎系のみのBookとなります。

book negamax[隠しコマンド]

書式

book negamax

Book内の評価値関連情報を再計算します。以下の処理が行われます。

  • 全positionに対して評価値、勝敗数等の統計情報の再計算(leafの再探索は行われません)
  • 全positionに対してlinkの順序を評価値の高い順に並べ直し

book correct[隠しコマンド]

書式

book correct

Book内の局面のうち、完全読み(終局までselectivity=100%で探索)を行っている局面について、leafを再探索します。

探索後はbook fixと同じ処理を行い、各種再計算を行っています。

結果は、元々のBookファイル名に拡張子.errを付加したファイル名で保存されます。

book stats[隠しコマンド]

書式

book stats

Book内の局面についての統計情報を出力します。以下の内容が出力されます。

  1. ハッシュ値の分布
    • 局面はメモリ上で、ハッシュ値を元にサイズ=$2^k$の配列内に格納されています($k$の値はBookの規模によって決まります。最小サイズは$2^{16}=65536$です)。この$2^k$個の格納先について、局面がいくつずつ格納されているかの分布が出力されます。
    • indexは同一の格納先に格納されている局面の個数を表します(indexという名称から格納先の位置のような印象がありますが、違うようです)
    • positionsは局面の個数がindex個格納されている格納先の個数を表します。つまり$\Sigma(positions)=2^k$、$\Sigma(positions \times index)=$全局面数、となります。
  2. 空きマス数の分布
    • 空きマス数ごとの局面の分布が出力されます。
    • stageは空きマス数を表します。stage=60は初期局面です。
    • positionsはの局面数を表します。
    • linksはlinkの数を表します。
    • leavesはleafの数を表します。
    • terminal nodesは末端の局面、すなわちlinkが1つもない局面の数を表します。
  3. 評価値の分布
    • 評価値ごとの局面の分布が出力されます。
    • Scoreは局面の評価値を表します。
    • positionsはの局面数を表します。

出力例

Book statistics:

Hash distribution:
index    positions
    0        23921
    1        24000
    2        12174
    3         4133
    4         1055
    5          216
    6           34
    7            3

Stage distribution:
stage    positions        links       leaves      terminal nodes
   22          467            0          467          467
   23          413          473          413            0
   24          365          416          365            0
   (中略)
   58            3            8            2            0
   59            1            3            0            0
   60            1            4            0            0

Best Score Distribution:
Score    positions
  -64            8
  -62            3
 (中略)
  +62            7
  +64           11

book verbose[隠しコマンド]

書式

book verbose ログ出力レベル

Bookを学習する際のログ出力レベルを指定します。 実行例

book verbose 2

book check[隠しコマンド]

書式

book check 棋譜データベースファイル名

指定された棋譜データベースの棋譜に現れる全局面について、Book上の最善の手かどうかを集計し出力します。

  • missingは棋譜データベース上に現れる局面のうち、Bookに存在しない局面の数を表します
  • goodは棋譜データベース上で打たれた手について、Book上の最善であった手の数を表します
  • badは棋譜データベース上で打たれた手について、Book上の最善ではない手の数を表します

実行例

book check game.txt

学習・拡張系コマンド

book store

書式

book store

棋譜を学習するコマンドです。

最新の対局の各局面のうち、Bookに指定された深さまでの範囲で、かつBookに未登録の局面をBookに追加し、leafを探索します。詳細は「Bookとは」内の説明を参照してください。

学習した結果は、元々のBookファイル名に拡張子.storeを付加したファイル名で保存されます。

book deviate

書式

book deviate 相対誤差 絶対誤差

Bookを拡張するコマンドです。まず、拡張対象となる局面の選定を行い、選定された局面を拡張する、という2つのステップで行われます。

  1. 拡張対象となる局面の選定
    1. 既にBookに登録されている局面に対し、現局面を起点に(以降、この局面を起点局面と呼びます)以下の条件を満たす手(link)をたどっていきます
      • 評価値が、自分側(起点局面の手番側)は「その局面の最善の評価値ー相対誤差」以上の手、相手側は最善の手
      • 評価値が、「起点局面の評価値±絶対誤差」の範囲内
    2. たどった局面のうち、最善の手とleafの手の評価値の差が、自分側は相対誤差以内、相手側は0以内であれば、その局面を対象局面とします
  2. 選定された局面の拡張
    1. 選定された局面Aについて、leafの手を打った局面BをBookに追加し、局面Bのleafを探索します
    2. 局面Aについてleafを再探索します(局面Bを追加したことにより、元々のleafがlinkになったので)

以上のステップを、自分側と相手側の立場を入れ替えてもう一度行います。

さらに、上記を追加する局面がなくなるまで繰り返し行います。結果、「自分は相対誤差だけ悪い手を打って良く、相手は常に最善」「自分は常に最善で、相手は相対誤差だけ悪い手を打って良い」という条件でたどり着く局面について、Bookの深さに到達するまでBookを拡張することになります。

結果は、元々のBookファイル名に拡張子.devを付加したファイル名で保存されます。

相対誤差、絶対誤差の省略値はそれぞれ2,4です。

実行例

book deviate 2 4

book enhance

書式

book enhance 序中盤誤差 終盤誤差

Bookを拡張するコマンドです。まず、指定された序中盤誤差、終盤誤差に基づいて、Bookの各局面の評価値の上限と下限を再計算します。上限・下限については「Bookとは」内の説明を参照してください。その後、拡張対象となる局面の選定を行い、選定された局面を拡張する、という2つのステップの処理が行われます。

  1. 拡張対象となる局面の選定
    1. 既にBookに登録されている局面に対し、現局面を起点に以下の条件を満たす手(link)をたどっていきます
      • 手の評価値の上限がその局面の評価値の上限以上の手(実際には超えることはないはずなので、上限と等しい)
      • または、手の評価値の下限がその局面の評価値の下限以上の手(こちらも実際には超えることはないはずなので、下限と等しい)
    2. たどった局面のうち、leafの評価値の上限がその局面の評価値の上限以上、またはleafの評価値の下限がその局面の評価値の下限以上であれば、その局面を対象局面とします
  2. 選定された局面の拡張
    1. 選定された局面Aについて、leafの手を打った局面BをBookに追加し、局面Bのleafを探索します
    2. 局面Aについてleafを再探索します(局面Bを追加したことにより、元々のleafがlinkになったので)

以上のステップを、追加する局面がなくなるまで繰り返し行います。

結果は、元々のBookファイル名に拡張子.enhを付加したファイル名で保存されます。

序中盤誤差 終盤誤差の省略値はそれぞれ2,4です。

実行例

book enhance 4 2

book fill

書式

book fill 深さ

Bookに登録された各局面に対して、指定された深さ分だけ任意の手を進めたときに再びBook内の局面に到達した場合、その過程の局面がBookに未登録であれば追加登録します。

例えば、虎定石f5d6c3d3c4だけが登録されているBookについて、book fill 3を行うと、Book内にあるf5d6の局面からc4d3c3と3手進めると(いわゆる猫→虎)再びBook内の局面に到達するので、この途中の局面がBookに追加されることになります。

結果は、元々のBookファイル名に拡張子.fillを付加したファイル名で保存されます。

深さの省略値は1です。

実行例

book fill 2

book add

書式

book add 棋譜データベースファイル名

指定した棋譜データベースの棋譜をBookに追加します。データベースに関しては、データベース系コマンドを参照してください。

結果は、元々のBookファイル名に拡張子.gamを付加したファイル名で保存されます。

実行例

book add game.txt

book play[隠しコマンド]

書式

book play

Bookを拡張するコマンドです。まず、拡張対象となる局面の選定を行い、選定された局面を拡張する、という2つのステップで行われます。

  1. 拡張対象となる局面の選定
    1. Bookの深さの範囲内で、かつlinkが1つも登録されていない局面を対象局面とします
  2. 選定された局面の拡張
    1. 選定された局面Aについて、leafの手を打った局面BをBookに追加し、局面Bのleafを探索します
    2. 局面Aについてleafを再探索します(局面Bを追加したことにより、元々のleafがlinkになったので)

以上のステップを、追加する局面がなくなるまで繰り返し行います。

結果は、元々のBookファイル名に拡張子.playを付加したファイル名で保存されます。

book deepen

書式

book deepen

利用系コマンド

book on

書式

book on

goコマンド、hintコマンド、自動対戦の際に、Bookを使用するようにします。初期値はonです。

book off

書式

book off

goコマンド、hintコマンド、自動対戦の際に、Bookを使用しないようにします。初期値はonです。

book show

書式

book show

現局面のBook情報を表示します。表示内容は「Bookとは」を参照してください。

book analyze (a) または book analyse

書式

book analyze 手数
book analyse 手数

Bookを利用して棋譜の解析を行います。基本コマンドのanalyzeコマンドとほぼ同じですが、以下の点が異なります。

  • 解析にはBookのみを使用する。したがって、Bookの存在する局面のみが出力対象となる。
  • 引数に手数を指定することができる。手数は、最終局面から何手遡った局面までを解析対象とするかを表す。手数は省略可能で、省略すると全ての手を解析対象とする。
  • 最後の統計は出力されない

実行例

book analyze 60

book randomness

書式

book randomness 値

goコマンド、自動対戦の際に、Book中でその局面に登録されている最善手の評価値からいくつ低い評価値の手までを採用するかを指定します。採用する手はその範囲の中からランダムで決まります。例えばbook randomness 2とした場合で、その局面の最善手の評価値が+3だった場合、採用する手は+3〜+1の範囲の手の中からランダムで決まります。

値を指定しなかった場合は、0を指定したものとみなされます。また、初期値は0です。

実行例

book randomness 2

book problem[隠しコマンド]

書式

book problem 空きマス数 局面数

Bookの中にある局面のうち、以下の条件を満たす局面を指定された局面数だけ出力します。

  • 空きマス数が指定された空きマス数
  • linkとleafを合わせて2手以上の手が登録されている
  • 最善手の評価値が次善手の評価値よりも高い(等しくない)

出力結果は、最初の64文字が盤面の配置(Xが黒石、Oが白石、-が空きマス)、次の1文字が手番(X or O)、bmの後が最善手とその評価値、baの後が次善手とその評価値です。

空きマス数と局面数の省略値はそれぞれ24と10です。

実行例

>book problem 57 5

Extracting 5 positions at 57 ...
-------------------O-------OXX-----XX-----X--------------------- O % bm d6:+0; ba f5:-2;
-----------------X--------XOO------XX------X-------------------- O % bm f6:+9; ba e6:+7;
------------------X-------OXO------XX------X-------------------- O % bm e6:+4; ba c6:+1;
-------------------X------OXO-----XXX--------------------------- O % bm c2:-6; ba c6:-7;
---------------------X-----OXX-----XXX-------------------------- O % bm f6:+1; ba g4:-1;

book feed-hash[隠しコマンド]

書式

book feed-hash

現局面配下でBookに登録されている局面をメモリ上のhashテーブルに登録します。

ファイル操作系コマンド

book load または book open

書式

book load ファイル名
book open ファイル名

指定されたBookファイルを読み込みます。

実行例

book load data/book.dat

book save

書式

book save ファイル名

指定されたファイル名でBookを保存します。

実行例

book save data/book.dat

book import

書式

book import ファイル名

book exportコマンドでexportしたファイルからBookの内容を読み込みます。新規のBookとして取り込まれます(現在のBookに追加するわけではなく、新規のBookとなるので注意してください)。また、本コマンドでは読み込んだ内容はメモリ上に展開されるだけなので、必要であれば本コマンド実行後、book saveコマンドで読み込んだBookを保存してください。新規のBookのレベルと深さは、取り込んだpositionのレベルと深さの中で最大のものになります。

また、読み込み後にbook fixと同じ処理を行い、各種再計算を行っています。

実行例

book import data/book_export.txt

book export

書式

book export ファイル名

指定したファイルにBookの内容を書き出します。ファイルはCSV形式で書き出されます。CSVの各行は1つのpositionを表し、以下の項目が出力されます。

  • 盤面の状態(Xが自分、Oが相手、-は空きマス。最後のXは今の手番が自分であることを表します)
  • positionのレベル
  • そのpositionのleafの手
  • leafの評価値

実行例

book export data/book_export.txt

book extract[隠しコマンド]

書式

book extract 出力ファイル名

Bookに登録されている局面で、初期配置から両者最善の進行の棋譜を指定されたファイルに出力します。出力ファイル形式は.txt,.ggf,.sgf,.pgn,.wtb,.edxに対応しています。

出力される棋譜は、対称形や虎と猫→虎を重複して出力しないようにするために、最初の数手がF5D6C4またはF5F6E6F4のもののみが出力されます。

指定された出力ファイルが既に存在する場合は、そのファイルに追記されます。

ログインするとコメントできます。
  • edax/ref_command_book.txt
  • 最終更新: 2018/05/28 21:51
  • by lavox