Computer Chess Club Archives




Subject: Re: Nullmove: when to avoid it?

Author: Severi Salminen

Date: 11:17:48 03/01/01

Go up one level in this thread

>Thanks. Could you please tell me how much is MARGIN? For example,
>is it about two pawns?

Are you doing any futility pruning? This is the futility margin used in futiity
pruning. This margin should be lower than your maximum positional score to gain
some selectivity. If you max_pos_score is 10 pawns then 2 pawns is probbly too
low and vice versa. 2 pawns is a good value to start. You must experiment with

>And I assume that, in the above condtion, 'material' is the result of a
>Static Exchange Evaluator, not just the current material balance,
>since that would be wrong when we are in the middle of
>a swap-off sequence.

I left the whole futility stuff away so it _is_ only material, but you must
program futility pruning in order to make this work. This won't definitely work
in other cases. So plain if(material+MARGIN<=alpha) is _not_ enough. A move is
futile if depth==1 and material(node)+material_gain(move)+MARGIN<=alpha. This is
because in qsearch this kind of move would cause a stand pat cutoff
(eval(node)>=beta) - we are just concluding it one ply earlier.

So, if depth==1 and material+MARGIN<=alpha we are in a quite bad node which will
very likely have many futile moves and we can skip null moves. The reasoning: if
we are in bad position, skipping our right to move would be very disasterous.
And if the above condition is true we should start checking those
material_gain(move) in order to determine if a move is futile.

Please ask more if something was unclear.


This page took 0.02 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.