The idea is to do the first x iterations without AB. What's the effect? You get a fully sorted root move list based on the real scores. I use these real values for LMR at root moves with a 0.12 margin and reduce one ply after all.
That's it. I call the technique AB_FOOL for the moment.
Some code snippets to clarify.
Code: Select all
char ab_depth=2; // 3 or 4
if (ab_depth <= iteration_depth) { don't do AB; }
Only needed in the main-search, keep AB in QS.
Code: Select all
int root_score [max_moves]; // where the normal root scores are
int ab_fool_score [max_moves]; // shadow table for the ab_fool scores
int ab_margin = 12; // educuated guess for the moment.
Possible improvements are:
1. Create 2 margins.
Code: Select all
int ab_margin_1 = 12; // reduce one ply
int ab_margin_2 = 100; // reduce one more