Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Qsearch and checking moves?

Author: Robert Hyatt

Date: 10:09:55 03/26/01

Go up one level in this thread


On March 26, 2001 at 11:10:16, Colin Frayn wrote:

>On March 25, 2001 at 03:51:02, Pham Minh Tri wrote:
>
>>I am wondering why we do not search checking moves (moves check opponent king
>>but do not capture) in qsearch function. I think they are not ?quiescence? and
>>should be searched as capture moves. Does anyone try them?
>
>In ColChess I always tested Checking moves and also pawn pushes to the 7th/8th
>rank as part of the quiescence search.  I found that this improved my tactical
>performance quite noticeably.  Of course, it isn't wise to do this to infinite
>depth, but instead I introduced the idea of a 'wide' quiescence search, above
>which I test all captures, checks and pawn pushes.  Below this depth I test only
>captures.  Also, above this depth I generate all replies to checking positions
>and do not allow stand-pat moves.
>
>The depth of the wide-qsearch is generally a base value (0 or 1) plus an extra
>ply or two depending on how volatile the position is, and has recently been.
>e.g. I add on one ply (up to max. 3) for each checking position in the tree
>leading up to the qsearch.
>
>Cheers,
>Colin


I did something like this in Cray Blitz and early versions of Crafty.  IE I
had three parts of the tree search that were defined by three different search
procedures:

1.  Search().  Does just what you would think.  Looks at all moves, extends the
depth as needed, etc.

2.  Threat().  This took checking moves, plus dangerous-looking pawn pushes,
and perhaps a few other rare exceptions, and examined only those moves.  The
depth here was severely limited, to (typically) no more than 4 plies, although
this part of the search _could_ extend and have this continue to work.  At any
point the side to move was "in check" then a normal full-width search was done.

3.  Quiesce().  Just captures, normally, but if the right situation came up,
it would follow checks.  The rule was that it would not follow a check in the
q-search unless it was possible it led to a forced mate.  This was defined as
"is the side being checked 'in check' at every quiescence ply?  If not, stand-
pat option would break a forced checkmate.  If the answer was 'yes' then I would
continue to follow checking moves in the q-search and when in check after such
a checking move, a full-width search was done to see if it was mate.

It is complicated, as you can see.  I haven't done it in several years and have
not seen any bad effects.  And without those 'bad effects' I much prefer simple
code over the more complicated option.





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.