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

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

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

 

jotcut-jshakki.hatenablog.com

続き

 

今回の記事ではextend_tree, endless_extend_tree でちょっと遊んでみた結果を残す。

 

手順

1.空の定跡ファイルと読み込む棋譜として以下の4局面を用意した。

startpos moves 7g7f 3c3d
startpos moves 7g7f 8c8d
startpos moves 2g2f 3c3d
startpos moves 2g2f 8c8d

2.MultiPVを2にして、以下のコマンドを順に実行

makebook think book/start4.sfen book/exam0.db depth 24 startmoves 1 moves 4

makebook extend_tree book/exam0.db book/start4.sfen book/write0.sfen

makebook think book/write0.sfen book/exam1.db depth 24 startmoves 1 moves 4

makebook extend_tree book/exam1.db book/start4.sfen book/write1-db1-s4.sfen

makebook extend_tree book/exam0.db book/start4.sfen book/write1-db0-s4.sfen

makebook extend_tree book/exam1.db book/write0.sfen book/write1-db1-w0.sfen

makebook extend_tree book/exam0.db book/write0.sfen book/write1-db0-w0.sfen

3.コマンド実行時のログと生成物の比較をした。

対象:exam0.db, exam1.db (定跡の比較), start4.sfen, write0.sfen, write1-db1-s4.sfen, write1-db0-s4.sfen, write1-db1-w0.sfen, write1-db0-w0.sfen (棋譜の比較)

 

実行ログ抜粋

makebook think book/start4.sfen book/exam0.db depth 24 startmoves 1 moves 4
total 7 nodes
[1/7:1] Sun Jun 27 02:31:28 2019 : lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1
[7/7:2] Sun Jun 27 02:31:36 2019 : lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL b - 3
write book/exam0.db ..

 

makebook extend_tree book/exam0.db book/start4.sfen book/write0.sfen
read_book_name = book/exam0.db
read_sfen_name = book/start4.sfen
write_sfen_name = book/write0.sfen
extend[0] : startpos moves 7g7f 3c3d

0|2.extend[1] : startpos moves 7g7f 8c8d
extend[2] : startpos moves 2g2f 3c3d
extend[3] : startpos moves 2g2f 8c8d
done.

 

makebook think book/write0.sfen book/exam1.db depth 24 startmoves 1 moves 4
total 13 nodes
[1/13:2] Sun Jun 30 02:33:50 2019 : lnsgkgsnl/1r5b1/ppppppppp/9/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL w - 2
[13/13:8] Sun Jun 30 02:34:03 2019 : lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/1BG4R1/LNS1KGSNL w - 4
write book/exam1.db ..

 

makebook extend_tree book/exam1.db book/start4.sfen book/write1-db1-s4.sfen
read_book_name = book/exam1.db
read_sfen_name = book/start4.sfen
write_sfen_name = book/write1-db1-s4.sfen
extend[0] : startpos moves 7g7f 3c3d

0|2.extend[1] : startpos moves 7g7f 8c8d
extend[2] : startpos moves 2g2f 3c3d
extend[3] : startpos moves 2g2f 8c8d


makebook extend_tree book/exam0.db book/start4.sfen book/write1-db0-s4.sfen
read_book_name = book/exam0.db
read_sfen_name = book/start4.sfen
write_sfen_name = book/write1-db0-s4.sfen
extend[0] : startpos moves 7g7f 3c3d

0|2.extend[1] : startpos moves 7g7f 8c8d
extend[2] : startpos moves 2g2f 3c3d
extend[3] : startpos moves 2g2f 8c8d

 

makebook extend_tree book/exam1.db book/write0.sfen book/write1-db1-w0.sfen
read_book_name = book/exam1.db
read_sfen_name = book/write0.sfen
write_sfen_name = book/write1-db1-w0.sfen
extend[0] : startpos moves 7g7f 3c3d 2g2f

0|2.extend[1] : startpos moves 7g7f 3c3d 6i7h
extend[2] : startpos moves 7g7f 8c8d 2g2f
extend[3] : startpos moves 7g7f 8c8d 6i7h
extend[4] : startpos moves 2g2f 3c3d 2f2e
extend[5] : startpos moves 2g2f 8c8d 2f2e


makebook extend_tree book/exam0.db book/write0.sfen book/write1-db0-w0.sfen
read_book_name = book/exam0.db
read_sfen_name = book/write0.sfen
write_sfen_name = book/write1-db0-w0.sfen
extend[0] : startpos moves 7g7f 3c3d 2g2f
extend[1] : startpos moves 7g7f 3c3d 6i7h
extend[2] : startpos moves 7g7f 8c8d 2g2f
extend[3] : startpos moves 7g7f 8c8d 6i7h
extend[4] : startpos moves 2g2f 3c3d 2f2e
extend[5] : startpos moves 2g2f 8c8d 2f2e

 

比較

sfen
start4 write0 write1-db1-s4 write1-db0-s4 write1-db1-w0 write1-db0-w0
7g7f 3c3d
7g7f 8c8d
2g2f 3c3d
2g2f 8c8d
7g7f 3c3d 2g2f
7g7f 3c3d 6i7h
7g7f 8c8d 2g2f
7g7f 8c8d 6i7h
2g2f 3c3d 2f2e
2g2f 8c8d 2f2e
7g7f 3c3d 2g2f 4c4d
7g7f 3c3d 2g2f 4a3b
7g7f 3c3d 6i7h 4c4d
7g7f 3c3d 6i7h 4a3b
7g7f 8c8d 2g2f 8d8e
7g7f 8c8d 2g2f 4a3b
7g7f 8c8d 6i7h 8d8e
7g7f 8c8d 6i7h 4a3b
2g2f 3c3d 2f2e 2b3c
2g2f 3c3d 2f2e 4a3b
2g2f 3c3d 6i7h
2g2f 8c8d 2f2e 8d8e
2g2f 8c8d 2f2e 4a3b
7g7f 3c3d 2g2f
7g7f 3c3d 6i7h
7g7f 8c8d 2g2f
7g7f 8c8d 6i7h
2g2f 3c3d 2f2e
2g2f 8c8d 2f2e
7g7f 3c3d 2g2f 4c4d
7g7f 3c3d 2g2f 4a3b
7g7f 3c3d 6i7h 4c4d
7g7f 3c3d 6i7h 4a3b
7g7f 8c8d 2g2f 8d8e
7g7f 8c8d 2g2f 4a3b
7g7f 8c8d 6i7h 8d8e
7g7f 8c8d 6i7h 4a3b
2g2f 3c3d 2f2e 2b3c
2g2f 3c3d 2f2e 4a3b
2g2f 8c8d 2f2e 8d8e
2g2f 8c8d 2f2e 4a3b
7g7f 3c3d 2g2f
7g7f 3c3d 6i7h
7g7f 8c8d 2g2f
7g7f 8c8d 6i7h
2g2f 3c3d 2f2e
2g2f 8c8d 2f2e

それぞれのsfenを比較すると、write0, write1-db0-s4, write1-db0-w0 は同じ中身のsfenファイルとなっている。

これらのsfen集はdb0をstart4から延長して作られている。(実のところwrite0と write1-db0-s4は同じコマンド)

extend_treeの説明が

makebook extend_tree read_book.db read_sfen.txt write_sfen.txt
read_book.dbの定跡に対して、read_sfen.txtのsfenの局面から開始して延長する枝をwrite_sfen.txtに書き出します。
read_sfen.txtの局面から、評価値が先手で-50以上、後手で-150以上の値がついている枝だけを延長していきます。

であることと合わせると、extend_treeコマンドは与えられたsfen(read_sfen.txt)の末端局面が定跡(read_book.db)にhitした際に、そこから定跡の指し手が尽きるまで指し継がせた棋譜を書き出す(write_sfen.txt)と見ることができる。

write0とwrite1-db0-w0が同じ棋譜集になっているのは、write0.sfenに登録されていた末端局面が全て4手目以降(w-4)の手であり枝の延長を行うには読み込む定跡に4手目以降の指し手が登録されていなければならないが、exam0.dbには3手目まで(b-3)しか定跡の指し手が登録されていなかったため、一切変更が加えられなかったということである。

 

db
exam0 exam1
#YANEURAOU-DB2016 1.00
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL b - 3
2f2e 4a3b 76 24 484
7g7f 4a3b 51 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1
7g7f 8c8d 65 24 484
2g2f 4a3b 49 24 484
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL b - 3
2g2f 4c4d 117 24 484
6i7h 4a3b 57 24 484
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL b - 3
2g2f 4a3b 64 24 484
6i7h 4a3b 62 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL w - 2
4a3b 7g7f -49 24 484
8c8d 2f2e -109 24 484
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL b - 3
7g7f 4c4d 117 24 484
2f2e 2b3c 50 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL w - 2
4a3b 1g1f -54 24 484
8c8d 6i7h -62 24 484
#YANEURAOU-DB2016 1.00
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/1BG4R1/LNS1KGSNL w - 4
4c4d 5i6i -52 24 484
4a3b 2g2f -54 24 484
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/7P1/9/PPPPPPP1P/1B5R1/LNSGKGSNL w - 4
2b3c 7g7f -30 24 484
4a3b 7g7f -123 24 484
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL b - 3
2g2f 4c4d 121 24 484
6i7h 4a3b 64 24 484
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL b - 3
6i7h 4a3b 60 24 484
2g2f 4a3b 55 24 484
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/2P4P1/PP1PPPP1P/1B5R1/LNSGKGSNL w - 4
4a3b 2f2e -108 24 484
4c4d 5i6h -109 24 484
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL b - 3
7g7f 8d8e 75 24 484
2f2e 4a3b 75 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL w - 2
4a3b 6i7h -58 24 484
8c8d 7g7f -59 24 484
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/9/2P6/PP1PPPPPP/1BG4R1/LNS1KGSNL w - 4
4a3b 2g2f -52 24 484
8d8e 8h7g -67 24 484
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/9/2P4P1/PP1PPPP1P/1B5R1/LNSGKGSNL w - 4
4a3b 2f2e -86 24 484
8d8e 2f2e -96 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1
2g2f 4a3b 62 24 484
7g7f 8c8d 58 24 484
sfen lnsgkgsnl/1r5b1/p1ppppppp/1p7/7P1/9/PPPPPPP1P/1B5R1/LNSGKGSNL w - 4
4a3b 7g7f -84 24 484
8d8e 7g7f -89 24 484
sfen lnsgkgsnl/1r5b1/pppppp1pp/6p2/9/7P1/PPPPPPP1P/1B5R1/LNSGKGSNL b - 3
7g7f 4c4d 119 24 484
6i7h 3a3b 38 24 484
sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL w - 2
4a3b 2g2f -86 24 484
8c8d 2g2f -86 24 484

 

参考

https://github.com/yaneurao/YaneuraOu/blob/master/source/extra/book/makebook2019.cpp#L474

 

長くごちゃごちゃになってきたので次に続く