Computer Chess Club Archives




Subject: Re: Finding mate in the quiesce search

Author: Tord Romstad

Date: 06:37:27 08/24/04

Go up one level in this thread

On August 24, 2004 at 09:33:29, Alessandro Scotti wrote:

>On August 24, 2004 at 09:26:36, Uri Blass wrote:
>>On August 24, 2004 at 08:45:56, Alessandro Scotti wrote:
>>>What value do you return when you find a mate in the quiesce search? I used to
>>>return a "mate" score but then I found this is not correct because many paths
>>>were not considered in quiesce, so sometimes I got a "mate in n" score at the
>>>root which wasn't really a forced mate. I've patched the bug by returning a
>>>fixed value for now, but... which value is best?
>>I return mate.
>>I simply do not keep the mate backward.
>>If I have RxR RxR mate then the capture RxR is not good and I return the same
>>value that I return when RxR is illegal.
>>When you are in the qsearch you evaluate the position.
>>The evaluation of the position is a lower bound for the evaluation of the
>>you cannot return mate against the side to move if the side to move is not in
>>position that you search all of it's moves and the worst that you can evaluate
>>for that side is the static evaluation.
>Ok let me put this in code. So far I have used:
>    return quiesce( ... );
>I will now use:
>    int result = quiesce( ... );
>    if( isMate(result) ) result = -5000; // Any "bad" value...
>Is that correct?

As far as I can see, you should't need to do any such thing.  It should
be perfectly safe to return mate scores in the qsearch, and there is
no need to do an "if(isMate(result)) ..." after the qsearch returns.
The mate score should be handled exactly like all other scores.

I can't see how this could give rise to incorrect mate scores at the root.
You probably have a bug somewhere.


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.