Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Limited singular extensions. Anybody tried?

Author: Gian-Carlo Pascutto

Date: 09:52:25 05/18/01

Go up one level in this thread


On May 18, 2001 at 11:26:43, Miguel A. Ballicora wrote:

>I am toying with the possibility to include (and learn about) some sort of
>singular extensions in my program. I haven’t read any paper about that, just
>the explanations given in this forum and long time ago in r.g.c.c.
>Intuitively, the overhead would be huge and will hardly justify the benefits.
>Now, the question is, has anybody ever try to implement a limited version of
>singular extensions?

I have done a full implementation of Singular Extensions for Crafty 18.9,
based on the JICCA papers and comments from Robert.

I am quite interested in how your implementation works, especially when
dealing with some of the nastier cases (like fail-low on a fail-high
singular move etc...)

My code is freely available on request.

>Like, triggering the algorithm only in certain positions or circumstances?
>(there might be many possibilities to try, like there is an attack, evaluation
>is unstable, mate threats, checks etc. etc.)

How are you going to trigger the algorithm reliably? Mate threats and
checks should already be extended without SE. 'An attack' is a too limited
classification.

When you check whether the evaluation is unstable, you are going to have
to use quiescent searches to determine this. The actual evaluation is
never stable in a real search tree. Doing those Qsearches is already
going to add a lot of overhead.

The idea of SE is to pick up things going on that are not detectable by
static criteria. If you can come up with a reliable algorithm to trigger the
check for SE, then you have made that same check pretty useless.

>I just started to try and I found that my first try solved one problem much
>faster.

One problem...but how many were worse? My implementation has an overhead
of nearly 2 ply. In the LCT2 which I used that lost many other solutions.

>Did anybody try anything like it? Comments? Suggestions?

I added two 'tricks' to my implementation:

a) when you detect that several moves were singular but failed low
after being extended, something interesting must be going on, and
instead of continuing to extend/check/fail we just extend _everything_
at this node. This is sort of a worst-case elimination.

b) We can assume Crafty's 1st move is best in 92% of the attempts, and
the best move is one of the first 5 in 99% of the attempts. If we do not
get a move that disproves the singularity of the fail-high move within
the first 5 moves we test, we assume it is singular and do not check the
remainder.

--
GCP



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.