Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Turning null-move off

Author: Robert Hyatt

Date: 12:59:22 10/08/01

Go up one level in this thread


On October 08, 2001 at 12:36:51, J. Wesley Cleveland wrote:

>On October 08, 2001 at 10:56:38, Robert Hyatt wrote:
>
>>On October 08, 2001 at 07:29:04, Bernhard Bauer wrote:
>>
>>>On October 07, 2001 at 21:39:52, Robert Hyatt wrote:
>>>
>>>>
>>>>2.  You can tone down (or even disable) the null-move search.  You can
>>>>try sel=2/3 (the default) then sel=2/2, sel=1/1, and finally sel=0/0 which
>>>>will turn null-move off.  This will further reduce the search depth and overall
>>>>strength.
>>>>
>>>
>>>From my experience sel=0/0 doesn't turn null-move completely off.
>>>Here an example with sel=0/0
>>>
>>>[D]4B/8/6N/5p/1r4p/6pk/7b/4K2Q w - -
>>>
>>>
>>>        (4)    6->   1.90  -0.44   1. Bc6 Rb1+ 2. Ke2 Rxh1 3. Nf4+ Kh4
>>>                                   4. Bxh1 Kg5 5. Ke3
>>>        (3)    7     1.96  -0.22   1. Bc6 Rb1+ 2. Ke2 Rxh1 3. Nf4+ Kh4
>>>                                   4. Bxh1 Bg1 5. Bg2 Bd4
>>>               7     2.75     ++   1. Kd2!!
>>>        (2)    7     3.79   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3
>>>        (2)    7->   6.29   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3
>>>               8     8.14   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3
>>>        (2)    8->  14.57   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3
>>>               9    20.50   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3 10. Nf4
>>>        (2)    9->  42.50   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3 10. Nf4
>>>              10     1:05   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3 10. Nf4 Bxf4
>>>        (2)   10->   2:22   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3 10. Nf4 Bxf4
>>>              11     3:35   0.00   1. Kd2 g2 2. Qe1 g1=Q 3. Qh4+ Kg2 4.
>>>                                   Bc6+ Re4 5. Bxe4+ fxe4 6. Qxg4+ Kh1
>>>                                   7. Qxe4+ Qg2+ 8. Ke3 Qxe4+ 9. Kxe4
>>>                                   Bg3 10. Nf4 Bxf4 11. Kxf4 Kh2
>>>             time=5:00  cpu=201%  mat=4  n=142525014  fh=89%  nps=474k
>>>             ext-> chk=10823921 cap=287226 pp=207595 1rep=668532 mate=112510
>>>             predicted=0  nodes=142525014  evals=28834988
>>>             endgame tablebase-> probes done=0  successful=0
>>>             hashing-> trans/ref=47%  pawn=99%  used=99%
>>>             SMP->  split=1018  stop=90  data=7/32  cpu=10:05  elap=5:00
>>>
>>>
>>>Kind regards
>>>Bernhard
>>
>>
>>I'm not sure what that is supposed to show.  But look at option.c to see how
>>the selective command changes null_min and null_max, then look at search.c
>>(the only place a null-move search is done) to see how it uses those two
>>values.  0/0 will definitely turn it off...
>>
>>Completely...
>
>the code in search is
>
>    null_depth=(depth>6*INCPLY && pieces>8) ? null_max : null_min;
>    if (depth-null_depth >= INCPLY)
>      value=-Search(tree,-beta,1-beta,ChangeSide(wtm),
>                    depth-null_depth,ply+1,NO_NULL);
>    else
>      value=-Quiesce(tree,-beta,1-beta,ChangeSide(wtm),ply+1);
>
>which looks to me like it will perform a null move to the full search depth with
>null_max and null_min 0. The if statment that controlls the null move
>does not reference null_max and null_min.
>
>  if (do_null && !tree->in_check[ply] && pieces && (pieces>5 || depth<421)) {

Actually you are right.  However, this will _definitely_ be worse than not
doing a null-move search at all... because the point of null-move is to save
time.  And with null_depth=0, not only does it save no time, but if the null-
move search doesn't fail high, it wastes a huge search to boot.  Just fixed it
in the source code for the next version, but doing selective=0/0 will definitely
reduce the strength...  by maybe 50 points or less as that is all null-move is
really worth, generally...



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.