I'm reading again and again the whole post nad I'm rather confuse.
let's see if I could summarize everything I have read about Razoring
just after Qsearch (if depth<=0) and TT testing i could try to razor the search.
There is Razoring (cutting if score <alpha) and static null move pruning or eval pruning (score>beta)
talking about Razoring
Code: Select all
if(!isCheck && beta ==alpha+1 && depth<=3 && abs(beta) < CHECKMATESCORE - 1000){
int score=board.eval();
if ( score - razoringMargin(depth) < alpha )
{
int res = qsearch( ply, alpha-razoringMargin(depth), beta - razoringMargin(depth) );
if (res - razoringMargin(depth) <= alpha)
return score;
}
}
}
what still I havent' understood is how big could be razorMargin.
talking instead about Static Null Move Pruning, it could be done even in no PV nodes, and could be done without Qsearch and with a smaller margin.
something like this:
Code: Select all
if(!isCheck && depth<=3 && abs(beta) < CHECKMATESCORE - 1000){
int score=board.eval();
if ( score + margin[depth] > beta ){
return beta;
}
}
I hope I haven't done too much errors
Have I understood it correctly?