Author: Steffen Jakob
Date: 15:44:33 09/10/99
Go up one level in this thread
Hi Bob! On September 10, 1999 at 00:19:37, Robert Hyatt wrote: [...] >left them alone. Wrong answer. To fix this mate in 4 problem, I decided to >adjust the bounds as well, but I now set any bound value that is larger than >MATE-300, by reducing it to exactly MATE-300, but still using the "LOWER" >flag to say that this is the lowest value this position could have. For bound >values < -MATE+300, I set them to exactly -MATE+300 and leave the flag as is. [...] I had a look at your new hash.c from the 16.18 source code. You are doing this: -------------------------------------------------------------- if (type == EXACT) { if (value > MATE-300) value=value+ply-1; else if (value < -MATE+300) value=value-ply+1; if ((int) tree->pv[ply].pathl >= ply) word1l|=tree->pv[ply].path[ply]; } else if (type == LOWER) { word1l|=tree->current_move[ply]; value=Min(value,MATE-300); } else { value=Max(value,-MATE+300); } -------------------------------------------------------------- For lower scores you compute the minimum of "value" and "MATE-300". But what if "value" is a negative mate score which can also be a lower bound? You have the same problem with the upper bound. Therefore I think the following is correct: -------------------------------------------------------------- if(abs(value > MATE-300)) { if(value > 0) { switch(mode) { case EXACT: value = value + (ply-1); break; case LOWER: case UPPER: value = MATE-300; break; } } else { switch(mode) { case EXACT: value = value - (ply-1); break; case LOWER: case UPPER: value = -(MATE-300); break; } } } -------------------------------------------------------------- Greetings, Steffen.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.