Author: Jaime Benito de Valle Ruiz
Date: 11:35:46 03/23/04
Go up one level in this thread
> >There's a chance, if it happens it's because of instability. Caused for >instance by using the hashtable as transportationtable, and pruning (for >instance null-move, that's alpha-beta dependant) and other such techniques. > >In Neurosis I have complicated aspirationsearchwindow things at the root, >and before I wouldn't do anything about these instabilities (that luckily >don't happen often in my program, once or twice a game, and mostly after >I started using the hashtable as transportationtable.) but now I detect >them by looking if, when researching and expecting a lower score a higher >comes back and the other way around, and try to resolve them, by researching >the entire iteration (not just that (best move, uptill then anyway) move, >because it could be after getting rid of the instability the score for that >move is actually very bad, and needs to find a better one, that might be >further infront in the move-list.) and research starting with that move, >and with different alpha-beta values at the root, and try this a few times, >and if it's still not resolved then, I again do some researches with >different alpha-beta values, but then with clearing (clearing the scores) >the hashtable everytime. And if all that fails..I go on..but this seems to >(at some point..) always solve the instability. :) It's not so slow, as >these instabilities usually return right away, and seem to happen mostly >on lower depths in my program, for instance by re-using hashtable >information from previous (actual game) moves. > >Greetings and goodluck, >Stan Hi Stan, Since I tried to add aspiration search I've found so many problems, that I don't know where to start (and they all disappear as soon as I disable the aspiration). I've just detected a silly one: Searching at fixed depth 1, my program takes a pawn with a knight, and gives a positive score. Well, after a few captures it can be seen that the capture was a very bad idea. The first thing I thought was that I had a bug in my quiescent search, but I didn't: Qsearch called without a tiny alpha-beta window returns a big negative score. This is what happened: The root tried first a capture, it turned out to be bad (-3.26), and alpha is set at -3.26 (alpha=-INFINITE, beta=INFINITE initially). The second move was tried, and search was called with a small window around -3.26 (alpha-326, beta=-325). The problem here is that due to this values for alpha and beta, one of the captures in the quiscent search is found to be futile (doesn't reach alpha after capturing), and it stops before completing the full sequence where it finally looses. PROBLEM: Qsearch returns a false value, and it is stored in the hash as an "Exact" value (+0.24). This value fails high (-3.27,-3.25), so a research is done with a wider windows. But now there is a hash match with +0.24!, so Qsearch is never called. The result: +0.24. This would have never happened without hash tables... or with tables but without aspiration. How to fix this mess? Thank you, Jaime
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.