Author: Alvaro Jose Povoa Cardoso
Date: 05:56:32 07/08/01
My problems with mate scores adjustments are all gone now, thanks to the help of
Dr. Hyatt and Bruce Moreland.
In main.c of Crafty 16.18 there is the following notes:
* A very interesting bug was found in storing mate bounds in the hash *
* table, one I had not heard of before. I now store two MATE *
* bounds, either > MATE-300, or < -MATE+300, which is conservative *
* but safe.
Could you please explain why should we do so?
Also this code is from Craft 18.XX
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); <--------|
} |
v
Could you also please explain the lines:
value=Min(value,MATE-300);
value=Max(value,-MATE+300);
It was the inclusion of these two lines that solve all of my hash
inconsistencies and mate scores problems in the hash table.
But I don't understand how these two lines work, could you please explain?
I also would apreciate very much an explanation from Bruce Moreland.
I don't kow much about him but seams to me he is quite an expert on the field.
Best regards,
Alvaro Cardoso
This page took 0.01 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.