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.