In the section on reductions....
http://members.home.nl/matador/chess840.htm#REDUCTIONS
...it says:
Code: Select all
REDUCTION-2b :
We are still in "Reduce_Depth", going to the next formula detecting possible reductions. Reduction 2b is only done in the last "x" plies till the horizon (remaining depth). "x" varies in REBEL, although the definition of "x" is more sophisticated in REBEL it in general comes down to: middle game : maximum is 8
early end game : maximum is 6
end game : maximum is 4
late end game : maximum is 3 // rook endings, B/N endings
pawn ending : maximum is 2
"x" is defined again after each iteration, table driven, its formula for the middle-game: x = table_for_mid_game [iteration_depth];
static char table_for_mid_game [] = { 0,1,1,1,2,2,3,3,3,4,4,5,5,6,6,7,
8,8,8,8,8,8,8,8,8,8,8.... };
You get the picture for the other tables, the idea is not only to limit "x" to 8, but also to excuse the early iterations from the reductions, a safety guard. So when we are in the last "x" plies of the search we try reduction-2b,
if (remaining_depth<=x && remaining_depth>1) then
{
if (ALPHA > SCORE + THREAT &&
ALPHA < SCORE + THREAT + MARGIN) -> reduce depth with one ply.
}
SCORE : score of EVAL
THREAT : Queen=900, Rook=500, Bishop=300, Knight=300, Pawn=100
MARGIN : TABLE [remaining_depth];
static int TABLE[]= { 00,00,10,15,20,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25 ........... };
The idea is, if SCORE+THREAT are not going to make it to ALPHA, but with an extra small MARGIN it will then reduce the depth. I can't remember the speed-up this reduction gave.
So, AM I an idiot, or is there something missing?
Many thanks in advance,
jm