Author: Odd Gunnar Malin
Date: 05:48:20 11/30/01
Go up one level in this thread
On November 30, 2001 at 07:25:42, Erik Robertsson wrote: >I´ve been trying to correct some bugs wich occur when storing mate values in the >hashtable. > >If the position is evaluated as a mate value at the end of an iteration in the >iterative deepening, I stop searching and execute the best move. In some >positions however, I find that due to finding positions in the hashtable it can >result in the engine alternating between two different mate variations ending in >a quite embarrassing draw by repetiton. > >I've tried to solve this by not automatically stop the iterative deepening >unless I've found a shorter mate than found in the previous move. Is there a >better way of solving this? I remember reading something about this some year >ago, but cannot find it. > >I use the draft = *infinity* for mates wich are not bounds which should result >in that most positions with mate should be in the ht in the next search. Maybe >it has something to do with the bounds, but I´ve tried Crafty's MATE-300 bound >and it sometimes result in getting the evaluation of the position as MATE-300. > >This has kept me awake a few nights, please help or I will go insane. I guess you allready do this when saving hash: if (bestscore>(MATE-MAX_PLY)) hashscore=bestscore+ply; else if (bestscore<(-MATE+MAX_PLY)) hashscore=bestscore-ply; else hashscore=bestscore; And the opposite when you reading hash: if (hashscore>(MATE-MAX_PLY)) bestscore=hashscore-ply; else if (hashscore<(-MATE+MAX_PLY)) bestscore=hashscore+ply; else bestscore=hashscore; If you use fail-soft alpha-beta it could be the same error that I had in my little engine. I was returning alpha instead of bestscore in one of my cutoff. Odd Gunnar
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.