Computer Chess Club Archives


Search

Terms

Messages

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

Author: Uri Blass

Date: 04:44:47 10/04/03

Go up one level in this thread


On October 04, 2003 at 03:46:16, Tord Romstad wrote:

>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.

Ok so I understand that there are reasons for you not to release your source
code even without problems of clones.

I think that if you want to help other not based on ideas that you got from
others you may decide only to give some information about your source code like
the information that you gave about pawns relative to king in the winboard forum
or information about the files that you have in your program(except files that
you got the idea to build them from other programmers).

I have not a lot of files and it also make my life harder when I want to
implement things because I first need to look for the right place to add them in
thousands of C lines.

>
>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).

You are a good programmer if you were able to implement it so fast in a
productive way.

>
>>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.

After every null move or only after null move with a big threat that you detect?

Suppose in the opening position 1.e4 threats 2.d4 and you analyze 1.e4 f5
and you have no hash move because 1.e4 failed high only in the last iteration
so you never analyzed 1.e4 f5 because 1.e4 was proved bad by a different move
of black.

Do you start to search 1.e4 f5 2.d4 and not 1.e4 f5 exf5.

Even if the threat is big I doubt if it is always a good idea.
suppose that you play Nb5 and threats Nd6+ with a fork (the black king and the
black queen under threat)

Suppose the opponent defends d6 with the queen and play Qc7.
Do you start Nd6+ first even before Nxc7+.


>
>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.

If you get so good result than your implementation is very good.
I usually have bugs when I try to implement things and I do not expect to get
correct implementation on the first try.

I even did not try to implement it because I prefered to think about it first
and I saw practical problems.

I have also different ideas about it and I think that it may be possible to
generalize it for more cases to some threat defence threat extension when the
target may be different.

Uri



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.