The right answer must be debugging. The question become, how to get positions badly evaluated/searched that are easy to debug ?How do you conclude when you engine is weak in the search versus the eval function?
Let me recall the know post about evaluation from Tord.
http://www.talkchess.com/forum/viewtopi ... 33&t=15504
Now if you think “continuity” and “Good worst case“ replacing evaluation by search, all apply?.
That the base for a method I use:
Traverse a bunch of position and do a depth 2 search on each.
You can instrument your iterative deepening function and calculate:
Code: Select all
double dif = abs(Value_at_depth_1 - Value_at_depth_2);
Code: Select all
if(SaveBadEval && Depth == 2 && dif > MargenError
&& BestMove.desglose.jaque == 0
&& BestMove.desglose.captura == ninguna
&& BestMove.desglose.coronar == ninguna
)
{
FILE *fe = fopen("badeval.epd","a+");
if(fe)
{
fprintf(fe,"%s bm %s;\n",Board.SaveFEN(),BestMove);
fclose(fe);
}
FILE *fl = fopen("badeval.log","a+");
if(fl)
{
fprintf(fl,"%s bm %s;\n",Board.SaveFEN(),BestMove);
fprintf(fl,"PV %s Eval %d dif %4.0lf;\n",SavePV,value,dif);
Board.Draw(fl);
fclose(fl);
}
}
Buena Suerte.