I noticed some engines does the futility prunning inside the loop moves in alpha beta and some does it outside the loop moves .
In Isa It is outside the loop moves and after ( or before lol) the nulmove
Is there an expert who can explain the diference ?
What is the better way in your advice ?
Bests
Dany
Futility prunning
Moderators: hgm, Rebel, chrisw
-
- Posts: 7218
- Joined: Mon May 27, 2013 10:31 am
Re: Futility prunning
Don't understand how it can do futility pruning outside the loop for it doesn't know if it can capture a hanging piece.
-
- Posts: 7218
- Joined: Mon May 27, 2013 10:31 am
Re: Futility prunning
O wait you are calling QSearch to get an estimate.
-
- Posts: 217
- Joined: Fri Apr 11, 2014 10:45 am
- Full name: Fabio Gobbato
Re: Futility prunning
In my engine I use both.
Before the null move pruning and after the hash probe I have a similar condition:
And inside the moves loop I have a condition like this:
Before the null move pruning and after the hash probe I have a similar condition:
Code: Select all
if (node!=PVNODE && !InCheck && depth<FPDEPTH && (staticeval-margin[depth])>=beta && stm_has_pieces) return staticeval-margin[depth];
Code: Select all
if (node!=PVNODE && !dangerousmove && depth<FPDEPTH && (staticeval+margin[depth])<alpha) continue;
-
- Posts: 2204
- Joined: Sat Jan 18, 2014 10:24 am
- Location: Andorra
Re: Futility prunning
Also some simple or not much developed engines do it outside the moves loop because they don't have the information for example if the king is in check, so they need to start the next alpha_beta call where they calculate all the attacks and such, and they decide if they do the prune when they know the move is not a checking one.
Daniel José - http://www.andscacs.com
-
- Posts: 759
- Joined: Fri Jan 04, 2013 4:55 pm
- Location: Nice
Re: Futility prunning
Thanks guys for yours explanations!
I'll continue to play with all the pruning schemes
I'll continue to play with all the pruning schemes