1.2くらいから考える将棋ブログ

わかった気になるも、よくわからないことを考えていく?

やねうら王のテラショック定跡コマンドで遊ぶー1

やねうらお様がやねうら王v4.85以降からテラショック定跡の生成手法を公開してくださったので、いろいろ動かしてみた忘備録を載せる予定である。

参考リンク

ご本尊の解説

yaneuraou.yaneu.com

やねうら王公式による定跡掘削代行はじめました | やねうら王 公式サイト

YaneuraOu/解説.txt at master · yaneurao/YaneuraOu · GitHub

えむいーさんの記録

tkgstrator.work

tibigameさんの記録

github.com

 

コマンド整理

makebook think reads.sfen writebook.db startmoves A moves B depth X node Y
read.sfenという棋譜を読みこみ、そのA手目からB手目までをdepth Xで思考させ(node Y調べたら途中でも終了)、定跡ファイル(やねうら大定跡形式)に書き出す。

これはテラショック以前にもあった定跡生成機能だが、テラショック形式で定跡生成する際にも必要。

オプション
makebook think bw sente.sfen go-te.sfen writebook.db startmoves A moves B depth X

"bw"を指定した場合、sfenファイルとして2つのファイルが指定できる。
1つ目のsfenファイル(sente.sfen)は、そのsfenファイルから先手の局面だけを抽出して使う。
1つ目のsfenファイル(go-te.sfen)は、そのsfenファイルから後手の局面だけを抽出して使う。

 

makebook build_tree read_book.db write_book.db

makebook thinkで生成したやねうら大定跡形式のread_book.dbを読み込み、やねうらテラショック定跡形式のwrite_book.dbを書き出す。

解説.txt(commit 8814a872a23af2e7502bd404a5eec217075e8e07)によると

read_book.dbには、thinkコマンドで実戦で出現した局面に評価値がついているものとして、 leaf nodeについている評価値を使ってmin-max探索のようなことをして、それぞれの局面での最善手を write_book.dbに書き出す機能。

とのこと

 

makebook extend_tree read_book.db read_sfen.txt write_sfen.txt black_eval_limit -200 white_eval_limit -300

read_book.dbの定跡に対して、read_sfen.txtのsfenの局面から開始して延長する枝をwrite_sfen.txtに書き出します。

read_sfen.txtの局面から、評価値が先手で-200以上、後手で-300以上の値がついている枝(候補手)だけを延長していきます。

ここで書き出されたsfenファイルを、makebook thinkコマンドで思考させるのを繰り返すと定跡ツリーが成長していきます。


※ read_sfen.txtにはこの延長を行う開始局面を複数指定できます。(わからなければ、"startpos"とだけ書いたテキストを用意すれば、  平手の開始局面からになるのでそれで問題ないはずです。) "startpos moves.."の形で複数の局面を指定します。

 うーん、わかるようなわからんような…

オプション
makebook extend_tree base.db read_sfen.txt write_sfen.txt extend_range -1 1

extend_rangeを指定すると、その範囲のleaf node(末端の局面)の候補手だけを延長対象とします。(MultiPVで思考させ複数の指し手が登録されている場合、このextend_rangeの範囲内の候補手で進めた局面だけが延長されます。) extend_range -1 1 と指定したならば、leaf nodeでextend_treeの引き分けのスコア(-1,0,+1)の局面だけを延長します。(棋譜として書き出します)

角換わりなど千日手が重要でなければ気にしなくても大丈夫? 

 

makebook endless_extend_tree book/db2019.db book/kadai_sfen.txt book/think_sfen.txt depth 12 startmoves 1 moves 32 loop 100 black_eval_limit -50 white_eval_limit -150 nodes 100000

makebook extend_treeとthinkを合体させたコマンド。think_sfen.txtのところは、思考対象局面を書き出す一時ファイル。このときbook/kadai_sfen.txtに “startpos” とだけ書いておけば、平手の初期局面が課題局面になるので、そこから自動的に定跡が掘られていきます。loopの回数だけ繰り返されます。

makebook extend_treeで既存定跡dbの延長→makebook thinkで延長局面を思考

の繰り返し?

 

コマンド解説を読んだ段階では微妙にわからない性なので、次回以降では体当たりして試した結果を載せてみる。