Computer Chess Club Archives


Search

Terms

Messages

Subject: Whither Null Move?

Author: Stuart Cracraft

Date: 18:11:00 08/18/01


So I've been dinkering with null move. Or it's been dinkering
with me.

Without using null move, an 8-ply search in the opening
position looked like:

ply    time   nodes  score  pv
  1    0.00      21     28  d2d4
  2    0.00      97    -20  d2d4 d7d5
  3    0.06     842     16  d2d4 d7d5 g1f3
  4    0.06    3423    -15  e2e4 g8f6 e4e5 f6e4
  5    0.17   22430      1  e2e4 e7e5 g1f3 g8f6 b1c3
  6    0.77   87605      0  e2e4 e7e5 g1f3 g8f6 f3e5 f6e4
  7    3.90  502473     11  e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 c6d4 d1d4
  8   25.27 2944173     -6  e2e4 e7e5 g1e2 g8f6 b1c3 c7c5 f2f4 b8c6 f4e5
                            c6e5

After null move is enabled (a few extra lines of code -- see below), all hell
breaks loose with the pv after the 4th iteration.

ply    time   nodes  score  pv
  1    0.00      21     28  d2d4
  2    0.00      97    -20  d2d4 d7d5
  3    0.00     469     16  d2d4 d7d5 g1f3
  4    0.06    1943    -20  d2d4 d7d5 g1f3 g8f6
  5    0.11   13981     -2  c2c3 b8c6 g1f3 e7e5 d2d4
  6    0.39   48418     -1  e2e3 b8c6 g1f3 d7d5 d2d4 g8f6
  7    1.21  147016     20  e2e3 b8c6 g1f3 d7d6 d2d4 e7e5 c1d2
  8   14.17 1598546     -9  e2e3 b8c6 d2d4 e7e5 d4d5 c6e7 g1f3 g8f6 f3e5
                        e7d5

I like the times and node-count but hate the variations even more
(pieces en prise, etc.)

The related code:

        :
        :
        /* No null move if any of the following is true:
         *    at a pv node
         *    at frontier
         *    having made a null move in this variation
         *    side to move's king is in check
         *    previous move is null move
         *    material difference between sides + pawn is still below beta
         *    piece material of side to move less than a bishop
         *    too deep in the tree
         */
        if (
            !pv_node &&
             depth > 1 &&
             !innull &&
             !c  &&
             MATERIAL+ValueP[pawn] > beta &&
             piece_material[side] > ValueP[bishop] &&
             ply < 5
            ) {
          index[ply+1] = index[ply];
          nm.from = 0;
          MakeMove(nm);
          nullscore = -search(-beta, -beta+1, depth-3, 1); /* 1 -> innull */
          UnMakeMove();
          if (nullscore >= beta)
            return(nullscore);
          }
       }
       :
       :

I've tried dropping a variety of the above conditions, to no avail.

Anyone else see lousy pv's upon use of a null move?

--Stuart



This page took 0.01 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.