search.c
評価関数を呼んで>=betaならやっている
if ( null_depth < PLY_INC )のときは静止探索を呼んでいる
現状既にかなり良い盤面しかnullMove探索しないってことかな
fruitChessのようなhistoryをされているけど、
next.cの中で使っているオーダリング用かな
特にreductionの条件には絡んでないみたい
misakiではLMRの方が性能がいいと思ってhistoryは捨てちゃったけど
オーダリングに使えばいいかもしれない。
singularExtensionは見あたらなかった。もうやられてないのかもしれない。
探索延長部分
LimitExtension(extension, ply)はshogi.hでマクロ定義
if ( turn ? is_move_check_w( ptree, MOVE_CURR ) : is_move_check_b( ptree, MOVE_CURR ) ) { ptree->check_extension_done++; ptree->nsuc_check[ply+1] = (unsigned char)( ptree->nsuc_check[ply-1] + 1U ); extension = EXT_CHECK; } else if ( ! ptree->nsuc_check[ply] && ( state_node & node_do_recap ) && I2To(MOVE_CURR) == I2To(MOVE_LAST) && ( MOVE_CURR == ptree->anext_move[ply].move_cap1 || ( ( ptree->anext_move[ply].value_cap1 < ptree->anext_move[ply].value_cap2 + MT_CAP_PAWN ) && MOVE_CURR == ptree->anext_move[ply].move_cap2 ) ) && ( UToCap(MOVE_LAST) || ( I2IsPromote(MOVE_LAST) && I2PieceMove(MOVE_LAST) != silver ) ) ) { ptree->recap_extension_done++; state_node_new = node_do_null | node_do_mate | node_do_futile; if ( ! I2IsPromote(MOVE_CURR) && I2PieceMove(MOVE_LAST) == UToCap(MOVE_LAST) ) { extension = EXT_RECAP2; } else { extension = EXT_RECAP1; } } LimitExtension( extension, ply );