現状
floodgateにkuma2_test流しています。bona6のfv.bin利用。
ビットボード使っていない劣化ボナンザです。
シングルコアでもfv.bin使えばR2500行くとの助言を頂いたので頑張ってますが、なかなか厳しいです・・・
個人的にはボナンザがなんであんなに強いのか、
どの部分が強さに利いているのかという事に興味があります。
以下、定量的ではないですが、まとめてみました。
A.効果が高いもの
・fv.bin
・PVS
・ハッシュ手(ハッシュ手を二つ格納するようにしたらもっと良くなった)
・seeオーダリング
seeは同じマスでひたすら駒を取り合うと思っていたけど、
実は損する時点で取り合いをやめることに気付いた。
・reduction
reductionには謎の定数がありますが、あの値が重要なようです。
・futility cut
手を指した後の評価値の推定(estimate)が重要なようです。
evaluateせずにカットできます。
当初、これが間違っていてザクザク枝刈りされて、NPSは800Kとかになって
喜んでいましたが、余計に弱くなりました。
・null move pruning
・history heuristics
・差分評価
NPSが3割程度速くなる
・王手延長
B.効果が少ない、良く分からないもの。
・アスピレーションサーチ(stable判定のため?)
・キラー手
やり方がまずいのか、いれると却って探索ノードが増えてしまう。
reduction抑制のため使っている?
・動的futility(check_futile_score_quies)
ボナンザは動的にfutilityのマージン変えています。
これらは効果が少ないと思われますが、その積み重ねで強くなっていると思われます。
NPS3%向上×10でNPS30%増える。
C.今後、入れた方が多分良いもの。
・短手詰め
静止探索が安定する気がする。強力なβカット法と考えるといいかも。
・時間制御
重要な局面で2倍時間かければNPS2倍と同じ効果なので当たり前といえば当たり前。
強いソフトは時間の使い方も上手い。
現在、kuma2_testはAのみの状態です。ですが、Aだけだとコードもシンプルです。
NPSはcore i7 3.0GHz シングルコアで、最初のうちは300KNPS、ハッシュが埋まってくると400KNPS程度です。
R2200以上はある気がします。