Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: null move improvement ?

Author: Gian-Carlo Pascutto

Date: 03:29:43 03/31/02

Go up one level in this thread


On March 31, 2002 at 06:17:15, Klaus Friedel wrote:

>Has anybody ever tried something like that in his null move code :
>
>
>	int nullDepth = depth - (NULL_REDUCE + 1)*DEPTH_BASE;
>
>	if(tryNull){
>		executeNullMove();
>		beta -= NULL_BONUS;
>		value = - search(nullDepth, -beta, -beta+1, ply + 1);
>		undoNullMove();
>		if(value >= beta){
>			beta += NULL_BONUS;
>			ttStore();
>			return beta;
>		}
>		beta += NULL_BONUS;
>	}
>
>
>Bigger values of NULL_BONUS increase the count of nodes prunded (but you migth
>oversee some tactics). Values of about 30cp made my engine ply slightly better
>than the default null-move (NULL_BONUS = 0).

I tried this before, but no settings made my engine play stronger.

The reason why this doesn't work very well is what I would call semi-zugzwangs.

Say you have a program using piece-square tables, that does not consider
attacked pieces in the evaluation.

You have a knight on e5 that is attacked by a pawn. If you nullmove now,
you are assuming that any move would be better than not moving. In reality,
the best you can do is retreat the knight to f3 where it will get a smaller
bonus from the piece-square tables. The NMO will fail, because not moving
would have given you a higher score than moving.

This is also the reason why side-to-move bonusses don't work very well in
general.

(With thanks to Christophe for explaining this once)

--
GCP



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.