Author: Mridul Muralidharan
Date: 02:42:54 09/01/03
Go up one level in this thread
Hi Scott, A looong wweekend just went by , hence the delay in my response :) My comments inline. Regards Mridul <snip> >>You can easily comeup with a easy set of positions where a check will be pretty >>stupid to extend after static board analysis (without any search ofcourse !). >> >>Examples : >> >>1) Simple case : >>[d] r1bqkb1r/pppp1ppp/2n2n2/4p3/3PP3/P4N2/1PP2PPP/RNBQKB1R b KQkq - 0 4 >> >>Trivial to see that Bb4+ is to be not extended. > >When i first saw your idea I was very excited. I tried that exact case, a check >the does not capture, and can be captured by a pawn (I didnt look if the pawn is >pinned against the king or other piece), and chompster's performance on WAC >dropped significantly. > >I think chompster has so much futility pruning, and search reductions code, that >if we extended something stupid, it gets pruned fairly quickly or reduced (the >opposite of extension). > Mess has no form of reductions and pruning (other than double null move), I have not found them useful for mess and indeed found them to be unsound. Futility : what works in qsearch cannot be applied to main search ;) But I dont want people flaming me on this - this is a purely personal view that I have constructed after my testing and analysis - to each his own ! :) Moving furthur , the cases that I illustrated are the basic ones , you can come up with more. Actually mess handles many more patterns which require special handling - like pinned on king , revealed / multiple checks , move that even though check opponent (hence forcing a response) are also leaving our own side in danger , etc. The last case is tricky - it could be that, such a move would lead to a better position or a worse position ! such is the beauty of chess. Eg : You sac a piece with a check to save a higher valued hung and otherwise lost piece , etc ! Beauty is , with a little trick with attacktables (my attacktables differ from Ed Shroeder's) you can do all this statically ! Also I handle non-cap/non-promotion checks differently as compared to caps and promotions. So this path of "selective extensions" (as i call it ;) ) is not a easy one - and has taken me more than 4 months to develop ! so it cant be done in a day or two :) It is not the implementation that matters - but the cases you handle , etc. Easy way on how to understand this better ? Just print out the board when you are going to extend a check and notice the checking move. You will appalled at the ridiculously high number of stupid moves that get extended ! The number of checks that come in a search tree are very high in the first place (in a typical middle game position) - add to that the fact that you are extending all of them !! I have just shown a basic view of how mess works. This sort of selective extensions is just a byproduct of the move ordering code. For getting this extension reduction thing working , you will have to identify many more cases - and if you prune in qsearch based on this , then please make sure that you are not missing some important case. Also , IF you are missing some important case - your ordering and selective extension will suffer - so plese do bear that in mind. In mess , I try out checking moves in qsearch. Also I try out , sometimes , even loosing captures - especially if you are sure that the opponent does not have a good move to respond with (Eg : The defender of the piece that we captured is pinned , multiple/revealed check capture , etc) , then there is no harm in trying this move ! Note : I dont try out funny stuff like lazy_eval_after_move + margin < alpha then prune , stuff. NOR do I use lazy eval (have a eval cache though - since mess has a bit heavy eval ... ) All the best on this , in case you try this path out !
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.