Author: Edward Screven
Date: 10:09:37 06/12/99
Go up one level in this thread
On June 11, 1999 at 20:51:00, vitor wrote: >thanks for the reply. i'll definately give it a try. >but im unclear about a couple things. why do you check for futility threshold? i'm not sure if you are asking (a) why i included the futility threshold, or (b) what a futility threshold is. answer to (a): it's a win to apply the futility threshold as soon as you can to avoid work generating moves. answer to (b): in a quiescing search, each side is always allowed to stand-pat (not move). that means that q-search moves that don't immediately push the current static evaluation score over alpha cannot help the side to move avoid failing low -- they are futile. one way to identify futile q-search moves, is to compute a futility threshold, something like threshold := alpha - (evalscore + HEDGE) where HEDGE is a constant (or maybe non-constant) that approximates the best expected non-material evalation impact of any move. then consider any q-search move which doesn't gain at least threshold material futile. note that unless you are very conservative with HEDGE, or you have only small dynamic evaluation components this method of determining futility isn't completely safe. for example, a pawn capturing a pawn could cause a side to go from one isolated passed pawn to a pair of connected passed pawns. or capturing a bishop could deprive an opponent of the ability to queen an outside passed pawn. >and how would you go about updating the between[from][to] table? between[fromsquare][tosquare] is a constant table of 64 bit values, one bit per square, that describes the set of squares between fromsquare and tosquare. so the value of between[SQUARE_A1][SQUARE_H8] will have six non-zero bits describing a diagonal. - edward
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.