| View previous topic :: View next topic |
| Author |
Message |
Robert Hyatt
Joined: 27 Feb 2006 Posts: 10470 Location: Birmingham, AL
|
Post subject: Singular Extensions Posted: Wed Jul 28, 2010 2:41 am |
|
|
It has finally popped up to the top of my "to-do" list, so I am fixing to start experimenting with this again. I once released a version of Crafty that had Singular Extensions, but removed it later.
First, a little bit of background on what I tried in conjunction with Bruce Moreland, or in Cray Blitz.
Hsu/Campbell clearly defined their SE implementation, which is somewhat messy and complex. Key points:
(1) Using the usual PV, CUT and ALL node types, Hsu defined SE for PV and CUT, but not for ALL nodes. CUT (He called this FH-singular) is pretty simple. When a move fails high, before you return the FH score, you do a singular test on the remaining moves, using an offset (downward) alpha/beta window and a reduced-depth search. If no moves fail high on the offset window, you re-search the fail-high move you just searched, but one ply deeper. We call this move a FH-singular move since it appears to be significantly better than any other move.
(2) for PV-singular, the process is more complex. After you get a score for the first move, you search the remainder to the same depth, but with an offset (downward) window. If all still fail low, the move that produced the score is called PV-singular, and gets re-searched one ply deeper. If any move fails high on the offset-window search, you now have two moves to test to see if one is significantly better than the other. Which makes this messy. And other moves can also fail high on that downward offset window. When you finish this mess, either one move is clearly better, and gets extended, or else none do.
(3) Hsu was also concerned about inconsistencies, and therefore created a special small hash table he called the "sticky TT". If a move gets extended as being singular, the position and move is entered into this table. It lets us avoid all the singular testing the next time we encounter this position, and also guarantees us that independent of the depth, we will extend this move as singular each time we encounter it, to avoid the case where a move appears to be singular at one depth and not at another. There is a complex aging scheme so that we don't do this forever and a move can fall out of "singular" status.
That's all complex. I implemented it in Cray Blitz, and it appeared to certainly help in tactical positions. Unfortunately, our testing was extremely limited, so I never produced any quantitative proof showing it was better in real games. The code was lost, although I _might_ have a printout of it. But Carey and I tried to OCR a version of Cray Blitz and it was beyond hopeless, since "1" (one) and "l" (ell) look the same. Since fortran doesn't require variables to be declared before they are used, this absolutely wrecks a program and it has to be debugged line by line. Not for me with that many lines of code. And it would not transfer to Crafty very well anyway, since it was an iterated version of alpha/beta written in fortran, rather than a recursive version in C>
(4) There are some "el-cheapo" approaches that we tested. One is quite simple. Whenever you get a fail-high, you can do a quick reduced-depth with offset window search, and if the move appears to be singular, it can be searched more deeply. Not so hard to do and I have this code saved somewhere.
(5) At the front of search, you can first do a quick reduced-depth search to see if you can identify a singular move. Get a score for the first move, search the rest with a downward offset window, and if they all fail low, remember this move as singular. All of this was done at the same reduced-depth. Then, when you get into the regular search and search a move that matches the singular move, you extend it by one ply (or whatever fraction you choose). The downside is that the SE search is done at _every_ node. The upside is that it is cheap if you use a reduced-depth search and will likely see most searches terminated by hash hits anyway.
(6) We tried the ip* TT-SE idea where you wait until you get a hash hit that does not terminate the search. If the depth is close to being "good enough" (close but no cigar, of course else the search would terminate here immediately) then you can use this is a "hint" that you have a singular move. If the score appears to be "reasonably better" than the current search bound, you can do the quick reduced-depth search on the other moves to make sure they fail low on a lowered window, and then extend this move as part of a normal search. Extra overhead for the "proof" search, but how many hash hits do you get in the middlegame, 25%? How many will have a lower bound significantly better than current beta?
There might be another idea or two I have not remembered. The point of this is to first discuss potential ideas to see if anyone has anything better/different to try. I intend on trying all the old ideas (except Hsu's approach unless I find a lot of extra energy somewhere) and run 'em thru the cluster tests.
There are a couple of related ideas, such as Donninger's "threat extension." Idea is that when you get a fail-high (or a new best move) you do a null-move search to reduced depth with a downward offset window. If that fails low, and the current move fails high, while doing nothing with a lowered window still fails low, this move might be our only move that holds off some significant threat by the opponent (often it is a check or horizon-effect type move). So we extend the thing. Somewhere in the single-digit versions of Crafty we used this for quite a while, but again with nowhere near proper testing. It saw some impressive tactics at times, but it had a definite cost as well (all those null-move proof searches are not free).
Any other comments, corrections, additions or suggestions??? |
|
| Back to top |
|
 |
|
| Subject |
Author |
Date/Time |
Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 2:41 am |
Re: Singular Extensions |
Marco Costalba |
Wed Jul 28, 2010 6:22 am |
Re: Singular Extensions |
Daniel Shawul |
Wed Jul 28, 2010 12:28 pm |
Re: Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 4:11 pm |
Re: Singular Extensions |
Vincent Diepeveen |
Thu Jul 29, 2010 12:11 am |
Re: Singular Extensions |
Robert Hyatt |
Thu Jul 29, 2010 12:51 am |
Re: Singular Extensions |
Vincent Diepeveen |
Thu Jul 29, 2010 1:02 am |
Re: Singular Extensions |
Robert Hyatt |
Thu Jul 29, 2010 4:22 am |
Re: Singular Extensions |
Vincent Diepeveen |
Thu Jul 29, 2010 11:19 pm |
Re: Singular Extensions |
Marco Costalba |
Thu Jul 29, 2010 6:22 am |
Re: Singular Extensions |
liuyuan |
Thu Jul 29, 2010 6:35 am |
Re: Singular Extensions |
Volker Böhm |
Thu Jul 29, 2010 7:16 am |
Re: Singular Extensions |
Robert Hyatt |
Thu Jul 29, 2010 5:07 pm |
Re: Singular Extensions |
Volker Böhm |
Wed Jul 28, 2010 8:25 am |
Re: Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 4:21 pm |
Re: Singular Extensions |
H.G.Muller |
Wed Jul 28, 2010 9:37 am |
Re: Singular Extensions |
Daniel Shawul |
Wed Jul 28, 2010 12:14 pm |
Re: Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 4:24 pm |
Re: Singular Extensions |
H.G.Muller |
Wed Jul 28, 2010 4:38 pm |
Re: Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 4:58 pm |
Re: Singular Extensions |
H.G.Muller |
Wed Jul 28, 2010 5:19 pm |
Re: Singular Extensions |
Robert Hyatt |
Sat Jul 31, 2010 2:28 pm |
Re: Singular Extensions |
Daniel Shawul |
Wed Jul 28, 2010 12:10 pm |
Re: Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 4:48 pm |
Re: Singular Extensions |
Daniel Shawul |
Wed Jul 28, 2010 7:59 pm |
Re: Singular Extensions |
Robert Hyatt |
Wed Jul 28, 2010 8:19 pm |
Re: Singular Extensions |
Richard Vida |
Thu Jul 29, 2010 4:32 am |
Re: Singular Extensions |
Robert Hyatt |
Fri Jul 30, 2010 6:59 pm |
Re: Singular Extensions |
Ralph Stoesser |
Fri Jul 30, 2010 9:04 pm |
Re: Singular Extensions |
Robert Hyatt |
Fri Jul 30, 2010 9:29 pm |
Re: Singular Extensions |
Daniel Shawul |
Fri Jul 30, 2010 11:46 pm |
Re: Singular Extensions |
Robert Hyatt |
Sat Jul 31, 2010 12:25 am |
Re: Singular Extensions |
Daniel Shawul |
Sat Jul 31, 2010 12:37 am |
Re: Singular Extensions |
Robert Hyatt |
Sat Jul 31, 2010 1:11 am |
Re: Singular Extensions |
Mauro Riccardi |
Sat Jul 31, 2010 6:34 pm |
Re: Singular Extensions |
Robert Hyatt |
Sat Jul 31, 2010 6:50 pm |
Re: Singular Extensions |
Robert Hyatt |
Sat Jul 31, 2010 10:29 pm |
Re: Singular Extensions |
Marco Costalba |
Sat Jul 31, 2010 10:43 pm |
Re: Singular Extensions |
Robert Hyatt |
Sat Jul 31, 2010 11:55 pm |
Re: Singular Extensions |
Daniel Shawul |
Sun Aug 01, 2010 12:12 am |
Re: Singular Extensions |
Robert Hyatt |
Sun Aug 01, 2010 2:00 am |
Re: Singular Extensions |
Robert Hyatt |
Sun Aug 01, 2010 2:21 am |
Re: Singular Extensions |
Robert Hyatt |
Sun Aug 01, 2010 4:35 am |
Re: Singular Extensions - long games |
Robert Hyatt |
Sun Aug 01, 2010 6:17 am |
Re: Singular Extensions - long games |
Daniel Shawul |
Sun Aug 01, 2010 9:23 am |
Re: Singular Extensions - long games |
Robert Hyatt |
Sun Aug 01, 2010 5:50 pm |
Re: Singular Extensions - long games |
Don Dailey |
Sun Aug 01, 2010 9:47 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Sun Aug 01, 2010 10:16 pm |
Re: Singular Extensions - long games |
Volker Böhm |
Mon Aug 02, 2010 7:25 am |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 2:22 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 2:45 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 4:05 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 4:19 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 8:22 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 9:38 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 4:26 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 4:47 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 8:23 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 3:56 pm |
Re: Singular Extensions - long games |
Ralph Stoesser |
Mon Aug 02, 2010 4:29 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 4:48 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 5:05 pm |
Re: Singular Extensions - long games |
Marco Costalba |
Mon Aug 02, 2010 5:55 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 6:47 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 7:11 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 7:25 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 7:30 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 7:40 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 8:00 pm |
Re: Singular Extensions - long games |
Ralph Stoesser |
Mon Aug 02, 2010 8:55 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 9:13 pm |
Re: Singular Extensions - long games |
Uri Blass |
Mon Aug 02, 2010 9:25 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 9:24 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 9:46 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 10:24 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 10:56 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 11:49 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Tue Aug 03, 2010 12:01 am |
Re: Singular Extensions - long games |
Don Dailey |
Thu Aug 05, 2010 6:53 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Thu Aug 05, 2010 7:57 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Fri Aug 06, 2010 1:27 am |
Re: Singular Extensions - long games |
Ralph Stoesser |
Thu Aug 05, 2010 9:28 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Fri Aug 06, 2010 1:32 am |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 9:28 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 10:48 pm |
Re: Singular Extensions - long games |
Ralph Stoesser |
Tue Aug 03, 2010 12:13 am |
Re: Singular Extensions - long games |
Robert Hyatt |
Fri Aug 06, 2010 1:16 am |
Re: Singular Extensions - long games |
Uri Blass |
Mon Aug 02, 2010 7:54 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 8:02 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 8:06 pm |
Re: Singular Extensions - long games |
Uri Blass |
Mon Aug 02, 2010 8:13 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 8:22 pm |
Re: Singular Extensions - long games |
Uri Blass |
Mon Aug 02, 2010 9:11 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 9:28 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 9:49 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 9:49 pm |
Re: Singular Extensions - long games |
Uri Blass |
Mon Aug 02, 2010 9:53 pm |
Re: Singular Extensions - long games |
Ralph Stoesser |
Mon Aug 02, 2010 10:23 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 11:10 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 9:12 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 8:31 pm |
Re: Singular Extensions - long games |
Uri Blass |
Mon Aug 02, 2010 9:20 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 10:49 pm |
Re: Singular Extensions - long games |
Uri Blass |
Tue Aug 03, 2010 4:36 am |
Re: Singular Extensions - long games |
Robert Hyatt |
Tue Aug 03, 2010 4:51 am |
Re: Singular Extensions - long games |
Volker Böhm |
Tue Aug 03, 2010 12:30 pm |
Re: Singular Extensions - long games |
Don Dailey |
Tue Aug 03, 2010 12:46 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Tue Aug 03, 2010 3:24 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Tue Aug 03, 2010 3:08 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Tue Aug 03, 2010 3:21 pm |
Re: Singular Extensions - long games |
Volker Böhm |
Wed Aug 04, 2010 9:42 am |
Re: Singular Extensions - long games |
Robert Hyatt |
Wed Aug 04, 2010 7:39 pm |
Re: Singular Extensions - long games |
Volker Böhm |
Thu Aug 05, 2010 11:29 am |
Re: Singular Extensions - long games |
Daniel Shawul |
Thu Aug 05, 2010 12:12 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 5:07 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 5:11 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 5:30 pm |
Re: Singular Extensions - long games |
Daniel Shawul |
Mon Aug 02, 2010 5:48 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 6:19 pm |
Re: Singular Extensions - long games |
Don Dailey |
Mon Aug 02, 2010 6:21 pm |
Re: Singular Extensions - long games |
Robert Hyatt |
Mon Aug 02, 2010 8:25 pm |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|