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

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

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

忘備録とリマインダー的なものも兼ねて書いておく(やろうと思ってやってない)

・テラショックの良さそうなところは合流局面の手前の棋譜をそれぞれ生成してくれる点

やねうら大定跡/真定跡形式では、その局面で思考した指し手しか候補手に加えられない。その点テラショック定跡は、教師として渡した棋譜に含まれている実際のプレイアウトで選ばれた手を候補手に加えられるのがメリットだと見ることができる。

最もこれはやねうら標準定跡では当たり前にできるので、
・やねうら標準定跡に評価値を付けたい
・これまで与えた棋譜には前例がないが別途思考させて候補手を捻り出したい
などの目的がないと大量の棋譜を与えた標準定跡に劣る可能性も高い。

 

・テラショック定跡で仮想的側に任意の指し手を追加させたい。

本シリーズの1~4では袖飛車の定跡を拡張し続けていたが、例えば絶対袖飛車を指したい定跡を作りたい時に、相手の任意の指し手に対してこちらは袖飛車を選択したい。(後手番例だと、58玉74歩68銀72飛みたいな)

cf. comment-34917:やねうら王を使って定跡を作る | やねうら王 公式サイト

以下を試す

1.何も入ってないblank.dbと、絶対指したい手のある課題局面までのsfenを用意
endless_exend_treeでloop(2n-1)延長する。すると課題局面から2n-1手延長されたツリーが出来上がる(メモ:課題局面までの手数が長い場合、その手前までを分岐しないようにする方法を確認)
done...の状態からextend_treeで、もう一手分延長する。これで、仮想敵がn手指したsfen集が書き出される。あとはいらないものを省くなどする。
もしくはdone...の状態で書き出されたsfen集に対して、自分の指したい指し手を末尾に追加するというのもある。

2.endless_exend_treeで2n延長して、最後にextend_tree。これで棋譜sfen集には此方側の最終手が載っている。あとは気に食わないこちらの指し手を改変/削除する。

3.以下を参考にする

A: comment-35449:やねうら王を使って定跡を作る | やねうら王 公式サイト

B: 

github.com

 

・非やねうら定跡形式でもextend_treeで棋譜にできる。

>Apery形式のBook.binに対してextend_treeコマンドを打ったら棋譜ファイルが生成できた。ただ、軽く中身を見た感じでは、同じ手順を何十回もループしてるようなものが多くそのまま使うことは困難か(おそらく手数情報がないことが関係している?)