Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: a question to Tord about detecting threats in null move

Author: Tord Romstad

Date: 00:46:16 10/04/03

Go up one level in this thread


Hello, Uri!

I think it would be better to ask Sergei these questions -- after all he has
much more
experience with this extension than I have.  I give you some answers and
comments
below, but I'm not sure they are worth much.

On October 03, 2003 at 12:03:49, Uri Blass wrote:

>
>I can detect every big threat by adding a special search after making null move.
>
>For example if I like to detect threats of at least 2.2 pawns I can do
>val=-alphabeta(depth-4,-beta+219,-beta+220,...)
>
>if (val<=beta-220)
>threatmove[ply-1]=1;
>//ply-1 because I still did not undo the null move.
>
>
>I understood that you use the botvinik extension only after big threats so how
>do you detect big threats?
>
>Do you decide to detect only part of the threats or do you do additional search
>to detect all of them?

In general, I don't see any reason to keep any secrets about how my program
works,
but there is one exception:  In cases when I use an idea I have recieved in
private
e-mail from another engine author, and I am not sure the author wants the idea
to
be public, I naturally don't want to reveal it.  Unfortunately my precise
definition of
"sufficiently serious threats" is based on such an idea.

At least I can tell you that I don't do anything similar to your pseudo-code
above.
Because I am using MTD(f), I am forced to avoid all search extensions,
reductions,
or forward pruning tricks based on the values of alpha and beta.  All such
tricks
give me search instabilities which are so huge that they would scare even you.
:-)

But the short answer is that I don't always find a sufficiently big threat to
trigger
the extension, even when such a threat exists.  In this respect, my
implementation
of the Botvinnik-Markoff extension is imperfect.  It happens that I don't extend
in positions which should have been extended (but this is probably much better
than extending in too many positions, of course).

>Another question is about your order of moves.
>Do you start with the threat move in case of a big threat or do you start with
>good captures?

After a null move, I search moves with the same target as the previous threat
move
(if such a move exists, of course) directly after the move from the hash table,
and
before good captures.

I haven't experimented much with this yet, though.  It is likely that I will
need
much fine-tuning before my implementation is anywhere near optimal.  So far,
I have just added a few simple lines of code without thinking much, and played
a few test matches.  This makes me even more optimistic regarding the potential
of the idea.  When even a quick and dirty implementation is good enough to
beat a version without the extension by 111.5-88.5, it is likely that a
fine-tuned
implementation would perform extremely well.

Tord



This page took 0.04 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.