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.