Author: Andrew Williams
Date: 13:01:08 12/29/03
Go up one level in this thread
On December 29, 2003 at 15:26:27, Geoff wrote: >Hi > >I have attempted to implement futility pruning for the first time today in my >program. I was expecting it to be fairly straightforward to get working as far >as reducing the number of nodes searched. >Unfortunately I hit a strange problem that when I enable my futility and >extended futility pruning I generally see an increase in the number of nodes >searched and the time to depth can be greatly increased !! >This weird effect is due to my beta cutoffs being made lower, I would guess I am >seeing a typical 90% beta cutoff on the first move being reduced to 80% once I >switch on the futility pruning. I wasn't anticipating this and for the moment >cannot see a reason why it should have this adverse effect on my beta cutoffs ? >Has anyone come across this problem before, or any ideas what could be going on >? I have included a code snippet at the end in case I am doing something stupid >? I wish the search archive was working as there is probably tons of relevant >info on this topic. Thanks for any advice/suggestions. > > Regards Geoff > > > > >For info > >My pruning code has been put in the normal search routine after the makemove but >just before the call to the recursive alphabeta search function > >Futility code currently looks like this > >/* if not in check before move was made and not close to Mate score and not a >capture or a promo move and not a checking move */ > >if ((depth == 1) && > !weAreInCheck && (alpha > -9900) && (alpha < 9900) && > (!(gen_dat[i].m.b.bits & CAPTURE_MOVE)) && > (!(gen_dat[i].m.b.bits & PROMOTE_MOVE)) && > !inCheck(sideToMove)) >{ > lazyEval = lazyEvaluate(); > > if ((lazyEval + FUTILITY_PRUNE_THRESHOLD) < alpha) /* le+300 */ > { > /* dont bother searching this move any deeper just ignore it */ > futilityCutNodes++; > takeBack(); > /* try next moved at this depth */ > continue; > } >} > >/* recurse search function */ >value = -search(-beta, -alpha, (depth + extensions - 1), TRUE); I make sure that I have a legal move available before pruning stuff. I also don't use lazy eval. Andrew
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.