前回、Stockfishの探索部の移植をビルドできるところまで行った。
いくつかあったバグを修正して、とりあえず対局できる状態にできた。
駒得評価関数
駒に以下の通り評価値を付けただけの評価関数である。
序盤では差がつかないため、評価値0になる。
constexpr Value PawnValue = 90; constexpr Value LanceValue = 315; constexpr Value KnightValue = 405; constexpr Value SilverValue = 495; constexpr Value GoldValue = 540; constexpr Value BishopValue = 855; constexpr Value RookValue = 990; constexpr Value ProPawnValue = 540; constexpr Value ProLanceValue = 540; constexpr Value ProKnightValue = 540; constexpr Value ProSilverValue = 540; constexpr Value HorseValue = 945; constexpr Value DragonValue = 1395;
NPS
1スレッドで、200万NPS、
16スレッドで、2200万NPSくらいである。
強さ
駒得評価関数で、将棋所に標準で添付するLesserkaiと対局して、勝てることを確認した。

Aperyのコードとの違い
はじめ頭金で1手詰めもできないため原因を調べたら、Aperyでは、NonCaptureMinusProで、駒打ちを生成しないないことが原因であった。
既存のAperyのmovePicker.cppのソースでは、MovePickerのQuietInitで、NonCaptureMinusProとは別に、generateMoves<Drop>を別に呼び出していた。
やねうら王に合わせて、NonCaptureMinusProで、駒打ちも生成するようにした。
まとめ
Stockfishの探索部を移植して、駒得評価関数で対局できるところまで実装した。
駒得評価関数でもLesserkaiに勝てることを確認した。
チェス由来のコードが残っている箇所と、探索部のコードを理解しきれていない部分があるので、修正しながら理解していくつもりである。