Author: Scott Gasch
Date: 22:20:45 01/02/03
Go up one level in this thread
On January 03, 2003 at 00:28:46, Martin Bauer wrote: >Hi all, > >on Mr. Schröder's Page (thanks for the great page!) i read the an extension in >REBEL is made, when the King moves _out of check_. In my own Engine I extend >when the King is _in check_. > >Are there any known differences between these ideas, or are they equal? >What are other engines doing? > >Without trying it, I would say that extending when King is _in check_ has the >advantage, that you dont enter into the quiescence search with king being in >check. > >Any experiences? > >Martin I tried them both and for me extending the checking move is better than extending the check evasion. This is because I also extend on one reply to check, mate threat from nullmove, singular (one good) reply to check, etc. This can lead to long lings where one side checks (extended), and the reply is forced (extended again). That's both a blessing and a curse -- the engine has seen some long forced lines with relatively low depth search but if you are not careful these lines where both the check and the evasion are extended can blow up your tree and hurt your branching factor. Especially when one side can run the other king around the board with checks but not make any real headway. I have a formula I use to decide when it's ok not to extend a checking move that tries to address this problem. The reason I tried the other way (extending the check evasion rather than the check) was because I was struggling with the problem above (long lines when both check and evasion get extended leading to bad branching factor) and thought this would be a good way to limit it. However on tactical test suites the change performed poorly. I think you could make it work, though, if you are willing to fiddle with it for a while. In the past I used to do something "clever" to try to control the check/evasion both extended problem. It involved taking away the extension in the previous ply when I realized in the current ply that the checking move was lame. So my search might go: A. depth left = 6 ply (move is a check, extend) B. depth left = 6 ply (move proves the check was dumb, reduce) C. depth left = 4 ply ... So basically you are extending from A->B so depth stays the same. Then reducing at B. so when you go to C. you have depth - 1 + Extension where Extension is negative. Vincent pointed out to me that this type of thing could not be good for he hash table because the information stored for the tree under the lame check is all reduced by one ply. If you realized the check was lame when it was played you could just choose not to extend and you are left with: a. depth left = 6 (move is a check, but a dumb one) b. depth left = 5 (move proves the check was dumb) c. depth left = 4 ... Same resulting tree size and more useful information in the hash table, perhaps. Anyway I have since stopped doing this "check anti-extension". Check extension is by far the most often firing extension around -- I think that a way to identify which checking moves are not really worth extending is a powerful thing. It's a hard problem though -- simple ideas like "not worth extending if the checking piece falls immediately" cause the computer to put off seeing disaster by check-hanging a few pieces... just enough to push the trouble over the horizen. Likewise this simplistic rule causes the engine to see smart sacrifices one ply later. There's a solution here, I think, but it's based on things like the current alpha..beta window and the expected score after the check. If you are absolutely sure the checking move will fail high it might not be worth extending. The thought being that it is a rare thing for a move to look significantly crushing and then end up not being so good after all when you look a little deeper. So by extending the crushing check you are burning more time/nodes seeing exactly how great this move is when your opponent is not going to let it happen anyway. The converse might not be wise, though. If it looks certain that the check will fail low by extending the move you may see that it ends up being better than you thought -- e.g. it's a sound sacrifice but you have to look at it deeper to see why. In general I think by looking deeper at a checking move it's more likely to look better than worse than you first thought. If you expect the check to be anywhere near the PV it's probably worth extending. Especially if alpha is way low... maybe indicating that a checking move might be used as a stalling tactic. Scott
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.