Author: José Carlos
Date: 09:00:27 01/26/04
Go up one level in this thread
On January 26, 2004 at 11:10:55, Tord Romstad wrote: >On January 26, 2004 at 02:53:37, José Carlos wrote: > >>On January 24, 2004 at 17:12:45, Tord Romstad wrote: >> >>>On January 24, 2004 at 15:57:50, Mike Siler wrote: >>> >>>>In an average middlegame position, around 80-85% of the nodes my program >>>>searches are quiesce nodes. I have a static exchange evaluator and I only search >>>>captures with SEE value > 0. It seems like other engines are always under 25% >>>>qnodes. What else should I be doing to reduce these numbers? >>> >>>Use the SEE more aggressively. When the static eval is below beta, but >>>static_eval+(value of capturing biggest hanging enemy piece) > beta+margin, >>>return beta. This is too risky unless your SEE is very sophisticated. >> >> This doesn't make sense unless you do a real qsearch in your SEE, which is >>ridiculous of course. > >Yes. That is why I don't do this at all nodes, but only when the evaluation >function reports that the current position is "sufficiently close to >quiescent" that it is safe to rely on the relatively simple SEE. > >Consider the simplest possible example: > >Assume that the side to move has no hanging, pinned or overloaded pieces, >and that the opponent has an undefended hanging piece. If the static >eval plus the value of the hanging piece is considerably bigger than >beta, it is reasonably safe to return beta. This works even with >a very simple SEE. > >>Otherwise, you simply assume the opponent doesn't have a >>capture anywhere else on the board that can bring his score above alpha >>again. I do not understand why you assume that. > >You are right, the presence of hanging pieces for the side to move elsewhere >on the board is one of the conditions you should look out for when deciding >whether you should search the captures or just return the SEE value of the >biggest capture. > >Tord Thanks for the explanation. I was confused. I do something similar in Anubis, but instead of adding complexity to SEE, I check it at the top of qsearch. If material is way below alpha and the opponent can't make a capture that makes it near alpha, then I fail low. I can detect attacks with a simple bitboard lookup so that's pretty cheap anyway. I guess your gain comes from not needing to make() the move, but it wouldn't work for me anyway because I won't know about attacks until I make the move and update my bitmaps. José C.
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.