勝手ルールで一人指し手生成祭をやってみたらゆっくりゆうちゃんだった

確か大会中に「遅いなあ・・・」と思ってたことを思い出しちょっと試してみた。
試した局面は以下の局面から。
何でここなのかというと、大会用ルーチンだとここまで定跡手なもんで、何も考えずに計測できるから。

 9 8 7 6 5 4 3 2 1
+---+---+---+---+---+---+---+---+---+
一|v香|v桂|v銀|v金|v王|v金|v銀|v桂|v香|
+---+---+---+---+---+---+---+---+---+
二| |v飛| | | | | |v角| |
+---+---+---+---+---+---+---+---+---+
三|v歩| |v歩|v歩|v歩|v歩| |v歩|v歩|
+---+---+---+---+---+---+---+---+---+
四| |v歩| | | | |v歩| | |
+---+---+---+---+---+---+---+---+---+
五| | | | | | | | | |
+---+---+---+---+---+---+---+---+---+
六| | | 歩| | | | | 歩| |
+---+---+---+---+---+---+---+---+---+
七| 歩| 歩| | 歩| 歩| 歩| 歩| | 歩|
+---+---+---+---+---+---+---+---+---+
八| | 角| | | | | | 飛| |
+---+---+---+---+---+---+---+---+---+
九| 香| 桂| 銀| 金| 玉| 金| 銀| 桂| 香|
+---+---+---+---+---+---+---+---+---+

そのまま貼り付けるとえらいことになることがわかったので、手順を言うと
1:▲27>26歩 (--)
1:△83>84歩 (--)
1:▲77>76歩 (--)
1:△33>34歩 (--)
って手順で指した局面です。
結果はこちら。

思考時間:10秒
【決定着手】69>78金 (--) →評価値:49

【最善応手手順】
1:▲69>78金 (--)
2:△84>85歩 (--)
3:▲88>22角成(角)
4:△31>22銀 (馬)
5:▲ 14角打(--)
6:△11>12香 (--)
7:▲STAND_PAT

hyouka_num:3368494, ou_kiki_extend_num:49839, maeno_te_extend_num:45182, sentou_
te_extend_num:594, LMR_research_num:37, null_pruning_num:0, futility_num:0

評価関数の呼び出し回数で計算しているので、実際には並び替えとかでも呼んでいるんで完全に正確ではないですが、自分の中ではほぼほぼ公称値であると認識してます。

3368494np10s = 336849nps

おっせえww。
こんなゆっくり探索してたらどうしようもないだろう・・・。
どうすればよいのかしら・・・。

  • 利き生成を差分化する
  • 利きと着手生成を同時に行う

かなあ。

ちなみに完全にバグ取れなくてたまーーーに落ちるから使わなかった利きの差分化では、進む系のだけ実装したら40000nps増えることは確認できてる。
多分戻る系も実装すると40000nps増えるから400000npsくらいか。
それでも十二分におそい・・・。

あと利きと着手生成を同時に行うと、もうちょっと関数呼び出されるのが減るだろうけど、そこまで早くならない気も。

このくらいの速度でなんとかなるんだろうか・・・。
正直、データ構造見直して高速化するスキルはぼくにはありませんが。。。


今気がついたが、
5:▲ 14角打(--)
6:△11>12香 (--)
なんつー手を読んでやがるんだw
いくら序盤とはいえ残念すぎるだろうw