Edaxのコマンドについて、ヘルプの説明だけではよくわからないものもあるので、仕様を整理してみました。コマンドにもいろいろな種類がありますが、今回はBook系のコマンドについて整理しました。それ以外のものについては下記リンクを参照ください(リンク切れのものは未作成です)
Book系のコマンドを使う上では、Bookとはを参照して基本的な概念を覚えておくと理解しやすいと思います。
書式
book new レベル 深さ
指定されたレベルと深さのBookを新規に作成します。レベルの初期値は21、深さの初期値は36です。作成直後は、初期局面のみが登録されています。
quit
やexit
を実行してEdaxを終了した時に自動でファイルに保存されます。既存のBookファイルは上書きされてしまうので注意してください。実行例
book new 24 40
書式
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の深さを指定した値に変更します。大きくすることも小さくすることも可能です。保存が行われるわけではないので、変更後はbook save
コマンドを実行して保存してください。また、深さの値を小さくしたからと言って、既に登録されているそれ以上深い局面のデータが削除されるわけではありません。
値を指定しなかった場合は、36を指定したものとみなされます。
実行例
book depth 40
書式
book fix
Book内の各種情報を再計算・再設定します。以下の処理が行われます。
書式
book prune
以下の局面がBookから削除されます。
例えば、以下の3つの定石が登録されているBookがあったとします。
このBookに対してbook prune
を実行した場合、以下のようになります。
また、削除後にbook fix
と同じ処理を行い、各種再計算を行っています。
書式
book subtree
現局面以降の局面以外を全て削除します。削除後にbook fix
と同じ処理を行い、各種再計算を行っています。
例えば、f5d6c3
としてからbook subtree
を行うと、虎系以外は全て削除され、虎系のみのBookとなります。
book subtree
実行後は、book store
を行って、初期局面から現局面までの局面を再登録しておくことを強く推奨します。書式
book negamax
Book内の評価値関連情報を再計算します。以下の処理が行われます。
book fix
の後半部分の処理のみが行われます。書式
book correct
Book内の局面のうち、完全読み(終局までselectivity=100%で探索)を行っている局面について、leafを再探索します。
探索後はbook fix
と同じ処理を行い、各種再計算を行っています。
結果は、元々のBookファイル名に拡張子.err
を付加したファイル名で保存されます。
書式
book stats
Book内の局面についての統計情報を出力します。以下の内容が出力されます。
出力例
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を学習する際のログ出力レベルを指定します。 実行例
book verbose 2
書式
book check 棋譜データベースファイル名
指定された棋譜データベースの棋譜に現れる全局面について、Book上の最善の手かどうかを集計し出力します。
実行例
book check game.txt
書式
book store
棋譜を学習するコマンドです。
最新の対局の各局面のうち、Bookに指定された深さまでの範囲で、かつBookに未登録の局面をBookに追加し、leafを探索します。詳細は「Bookとは」内の説明を参照してください。
学習した結果は、元々のBookファイル名に拡張子.store
を付加したファイル名で保存されます。
書式
book deviate 相対誤差 絶対誤差
Bookを拡張するコマンドです。まず、拡張対象となる局面の選定を行い、選定された局面を拡張する、という2つのステップで行われます。
以上のステップを、自分側と相手側の立場を入れ替えてもう一度行います。
さらに、上記を追加する局面がなくなるまで繰り返し行います。結果、「自分は相対誤差だけ悪い手を打って良く、相手は常に最善」「自分は常に最善で、相手は相対誤差だけ悪い手を打って良い」という条件でたどり着く局面について、Bookの深さに到達するまでBookを拡張することになります。
結果は、元々のBookファイル名に拡張子.dev
を付加したファイル名で保存されます。
相対誤差、絶対誤差の省略値はそれぞれ2,4です。
実行例
book deviate 2 4
書式
book enhance 序中盤誤差 終盤誤差
Bookを拡張するコマンドです。まず、指定された序中盤誤差、終盤誤差に基づいて、Bookの各局面の評価値の上限と下限を再計算します。上限・下限については「Bookとは」内の説明を参照してください。その後、拡張対象となる局面の選定を行い、選定された局面を拡張する、という2つのステップの処理が行われます。
以上のステップを、追加する局面がなくなるまで繰り返し行います。
結果は、元々のBookファイル名に拡張子.enh
を付加したファイル名で保存されます。
序中盤誤差 終盤誤差の省略値はそれぞれ2,4です。
実行例
book enhance 4 2
書式
book fill 深さ
Bookに登録された各局面に対して、指定された深さ分だけ任意の手を進めたときに再びBook内の局面に到達した場合、その過程の局面がBookに未登録であれば追加登録します。
例えば、虎定石f5d6c3d3c4だけが登録されているBookについて、book fill 3
を行うと、Book内にあるf5d6の局面からc4d3c3と3手進めると(いわゆる猫→虎)再びBook内の局面に到達するので、この途中の局面がBookに追加されることになります。
結果は、元々のBookファイル名に拡張子.fill
を付加したファイル名で保存されます。
深さの省略値は1です。
実行例
book fill 2
book store
,book deviate
,book enhance
等でBookに新たな局面を追加する場合、追加した局面で打てる手全てについて、その次の局面がBookにあればlinkを張るので、深さ=1でbook fill
を行う意味はないように思われます。書式
book add 棋譜データベースファイル名
指定した棋譜データベースの棋譜をBookに追加します。データベースに関しては、データベース系コマンドを参照してください。
結果は、元々のBookファイル名に拡張子.gam
を付加したファイル名で保存されます。
実行例
book add game.txt
書式
book play
Bookを拡張するコマンドです。まず、拡張対象となる局面の選定を行い、選定された局面を拡張する、という2つのステップで行われます。
以上のステップを、追加する局面がなくなるまで繰り返し行います。
結果は、元々のBookファイル名に拡張子.play
を付加したファイル名で保存されます。
書式
book deepen
書式
book on
go
コマンド、hint
コマンド、自動対戦の際に、Bookを使用するようにします。初期値はonです。
書式
book off
go
コマンド、hint
コマンド、自動対戦の際に、Bookを使用しないようにします。初期値はonです。
書式
book analyze 手数 book analyse 手数
Bookを利用して棋譜の解析を行います。基本コマンドのanalyzeコマンドとほぼ同じですが、以下の点が異なります。
実行例
book analyze 60
書式
book randomness 値
go
コマンド、自動対戦の際に、Book中でその局面に登録されている最善手の評価値からいくつ低い評価値の手までを採用するかを指定します。採用する手はその範囲の中からランダムで決まります。例えばbook randomness 2
とした場合で、その局面の最善手の評価値が+3だった場合、採用する手は+3〜+1の範囲の手の中からランダムで決まります。
値を指定しなかった場合は、0を指定したものとみなされます。また、初期値は0です。
実行例
book randomness 2
書式
book problem 空きマス数 局面数
Bookの中にある局面のうち、以下の条件を満たす局面を指定された局面数だけ出力します。
出力結果は、最初の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に登録されている局面をメモリ上のhashテーブルに登録します。
書式
book load ファイル名 book open ファイル名
指定されたBookファイルを読み込みます。
book new
が行われ、新規にBookを生成します。この時点ではメモリ上に新規作成されただけですが、book new
の注意書きに書いたように、この後Edaxを終了すると既存のBookファイルは新規の空のBookファイルで上書きされてしまいますので、必要であれば速やかに退避してください。実行例
book load data/book.dat
書式
book save ファイル名
指定されたファイル名でBookを保存します。
実行例
book save data/book.dat
書式
book import ファイル名
book export
コマンドでexportしたファイルからBookの内容を読み込みます。新規のBookとして取り込まれます(現在のBookに追加するわけではなく、新規のBookとなるので注意してください)。また、本コマンドでは読み込んだ内容はメモリ上に展開されるだけなので、必要であれば本コマンド実行後、book save
コマンドで読み込んだBookを保存してください。新規のBookのレベルと深さは、取り込んだpositionのレベルと深さの中で最大のものになります。
また、読み込み後にbook fix
と同じ処理を行い、各種再計算を行っています。
book depth
コマンドで適切な深さに再設定してください。このバグはv4.4で修正されています。実行例
book import data/book_export.txt
書式
book export ファイル名
指定したファイルにBookの内容を書き出します。ファイルはCSV形式で書き出されます。CSVの各行は1つのpositionを表し、以下の項目が出力されます。
実行例
book export data/book_export.txt
書式
book extract 出力ファイル名
Bookに登録されている局面で、初期配置から両者最善の進行の棋譜を指定されたファイルに出力します。出力ファイル形式は.txt
,.ggf
,.sgf
,.pgn
,.wtb
,.edx
に対応しています。
出力される棋譜は、対称形や虎と猫→虎を重複して出力しないようにするために、最初の数手がF5D6C4
またはF5F6E6F4
のもののみが出力されます。
指定された出力ファイルが既に存在する場合は、そのファイルに追記されます。