Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: WAC 141 blowup

Author: Stuart Cracraft

Date: 14:25:52 09/04/04

Go up one level in this thread


On September 03, 2004 at 11:13:05, Robert Hyatt wrote:

>On September 03, 2004 at 00:14:01, Stuart Cracraft wrote:
>
>>On September 02, 2004 at 21:21:41, Robert Hyatt wrote:
>>
>>>On September 02, 2004 at 16:44:58, Stuart Cracraft wrote:
>>>
>>>>On September 02, 2004 at 15:31:31, martin fierz wrote:
>>>>
>>>>>On September 02, 2004 at 09:45:25, Michael Henderson wrote:
>>>>>
>>>>>>On September 02, 2004 at 02:39:28, martin fierz wrote:
>>>>>>
>>>>>>>On September 01, 2004 at 10:11:18, Uri Blass wrote:
>>>>>>>
>>>>>>>>On September 01, 2004 at 05:57:25, martin fierz wrote:
>>>>>>>>
>>>>>>>>>On September 01, 2004 at 00:51:47, Stuart Cracraft wrote:
>>>>>>>>>
>>>>>>>>>[snip]
>>>>>>>>>
>>>>>>>>>Muse on P4 2.4GHz finds the mate at ply 6, failing high on Qxf4 after 0.7
>>>>>>>>>seconds (not shown in the logfile).
>>>>>>>>>
>>>>>>>>>the reason it can solve this at such a low search depth is probably twofold, the
>>>>>>>>>first is that it generates checks in qsearch on the first ply of the qsearch (so
>>>>>>>>>when you drop directly into qsearch with a nullmove, it will see Rh8# every
>>>>>>>>>time), the second is probably that it is using mate-threat extensions.
>>>>>>>>>
>>>>>>>>>cheers
>>>>>>>>>  martin
>>>>>>>>
>>>>>>>>Do you get 2 plies only by mate extensions?
>>>>>>>>In order to do it you need to extend 2/3 ply for mate threat.
>>>>>>>>
>>>>>>>>The line 1.Qxf4 Bxf4 2.Rxh5 gxh5 3.Rxh5 Bh6 4.Rxh6 is 7 plies and qsearch here
>>>>>>>>does not see mate because it is black to move so I need 8 plies even if I
>>>>>>>>disable pruning by evaluation.
>>>>>>>
>>>>>>>hi uri
>>>>>>>
>>>>>>>the reason must be that after 2.Rxh5 i get a mate threat extension and after
>>>>>>>3.Rxh5 again, and since i do a full ply for that, my program sees it.
>>>>>>>
>>>>>>>cheers
>>>>>>>  martin
>>>>>>>
>>>>>>>>
>>>>>>>>With pruning by evaluation latest movei get it only in 10 plies but I think to
>>>>>>>>change my pruning to make it see it faster.
>>>>>>>>
>>>>>>>>Uri
>>>>>>
>>>>>>is recapture extension also playing a role here?...if that applies.
>>>>>
>>>>>it doesn't apply for me, but it probably depends on what an engine would
>>>>>classify as a "recapture". some people might call any sequence of two captures
>>>>>on the same square a recapture, for me a recapture is only if a piece of the
>>>>>same value is recaptured. this isn't the case here.
>>>>>
>>>>>cheers
>>>>>  martin
>>>>
>>>>I consider a recapture to be a capture that restores the root material
>>>>difference to what it was at ply = 0, before the search.
>>>>
>>>>Stuart
>>>
>>>
>>>That is no good.  The starting position comes right after I played BxN.  It is
>>>your move and you start the search.  Material score is -3 for you.  After you
>>>make the re-capture at ply=1, I play RxR at ply=2.  Score = -5.  You play RxR to
>>>make the score 0 again.  0 != -3 so you don't extend.
>>
>>Your example convinces. I discarded it and reclassify recapture extension
>>as extend on 2nd capture on the same square.
>>
>>Didn't give a boost on the test suite though.
>>
>>Stuart
>
>I am no longer sure that the recapture extension is even any good.  It worked in
>the days of 8 ply searches.  But today I am not sure.  Ken Thompson was the
>first to use it that I know of, in 1983.  He later decided it was bad.  Here is
>one position where it helps:
>
>[D]2r2rk1/1bqnbpp1/1p1ppn1p/pP6/N1P1P3/P2B1N1P/1B2QPP1/R2R2K1 b - - 0 1
>
>That is from the kopec-bratko test, position 22, correct move is Bxe4.
>
>Crafty with recapture extension: (750mhz PIII laptop)
>
>                5     0.06   0.00   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4
>                5->   0.15   0.00   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4
>                6     0.24  -0.02   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4 Rfe8
>                6     0.41     -1   1. ... Bxe4!!
>                6     0.48  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7
>                6->   0.51  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7
>                7     0.65  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7
>                7->   0.71  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7
>                8     1.00  -0.50   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Bxf6 Nxf6 5. Nxb6 Rxe4 6. Rac1
>                8->   1.17  -0.50   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Bxf6 Nxf6 5. Nxb6 Rxe4 6. Rac1
>                9     1.99  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7 6. Bc3 a4
>                9->   2.17  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7 6. Bc3 a4
>              time=2.18  cpu=87%  mat=0  n=782537  fh=94%  nps=358K
>              ext-> chk=3964 cap=3294 pp=27 1rep=90 mate=0
>
>and crafty with recapture extension set to zero:
>
>                5     0.06  -0.04   1. ... Nh5 2. Qe3 Bf6 3. Bc3 Nc5
>                5->   0.10  -0.04   1. ... Nh5 2. Qe3 Bf6 3. Bc3 Nc5
>                6     0.19   0.00   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4
>                6->   0.29   0.00   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4
>                7     0.44  -0.02   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4 Rfd8
>                7->   0.58  -0.02   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4 Rfd8
>                8     0.90   0.00   1. ... Nh5 2. Qe3 Bf6 3. Bxf6 Nhxf6
>                                    4. Qf4 Nh5 5. Qg4
>                8     1.80     -1   1. ... Bxe4!!
>                8     2.02  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7
>                8->   2.07  -0.58   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Rxe4 5. Nxd7 Nxd7
>                9     2.79  -0.69   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Nxb6 5. Bd3 Rc5
>                9->   2.98  -0.69   1. ... Bxe4 2. Bxe4 Qxc4 3. Qxc4 Rxc4
>                                    4. Nxb6 Nxb6 5. Bd3 Rc5
>              time=3.00  cpu=87%  mat=0  n=1016538  fh=93%  nps=338K
>              ext-> chk=4568 cap=4045 pp=33 1rep=125 mate=0
>
>it finds Bxe4 about 4.5X faster with recapture than without...

Confirmed.

GA with Recapture: (1.55 seconds)

Alpha=-265 Beta=235 Maxdepth=9999999 MaxTime=999999
 1/ 6  f8e8  0.01    1       92 f8e8
 2/ 6  f8e8  0.03  -22      679 f8e8 a4c3
 3/14  d7e5  0.04    3     3756 d7e5 f3e5 d6e5 a4c3
 4/24> d7e5  0.27  253    48187 d7e5 f3d2 e5d3 e2d3 d6d5 c4d5
 4/34  b7e4  1.55  985   349149 b7e4 d3e4 c7c4 e2c4 c8c4 b2f6 d7f6 e4h7 f6h7 a4b
6 c4c5 f3d4
 5/34  b7e4  1.59  985   357045 b7e4 d3e4 c7c4 e2c4 c8c4 b2f6 d7f6 e4h7 f6h7 a4b
6 c4c5 f3d4
 6/34  b7e4  3.98  985   864551 b7e4 d3e4 c7c4 e2c4 c8c4 b2f6 d7f6 e4h7 f6h7 a4b
6 c4c5 f3d4
 7/34  b7e4  7.40  985  1622336 b7e4 d3e4 c7c4 e2c4 c8c4 b2f6 d7f6 e4h7 f6h7 a4b
6 c4c5 f3d4
 8/34  b7e4 28.66  994  6037941 b7e4 d3e4 c7c4 e2c4 c8c4 a4b6 c4e4 b6d7 f6d7 b2c
3 e4a4 d1d4 a4d4

GA without Recapture: 6 seconds

Alpha=-265 Beta=235 Maxdepth=9999999 MaxTime=9999
 1/ 6  f8e8  0.00    1       92 f8e8
 2/ 6  f8e8  0.00  -22      423 f8e8 a4c3
 3/11  d7e5  0.03   26     1940 d7e5 f3e5 d6e5
 4/11  d7e5  0.04    3     5828 d7e5 f3e5 d6e5 a4c3
 5/12  d7e5  0.12   19    18304 d7e5 f3e5 d6e5 a4c3 f8e8
 6/24  f8e8  0.62   -2   130540 f8e8 a4c3 d7e5 f3e5 d6e5 d3c2
 7/32  d7e5  1.82   13   357427 d7e5 f3e5 d6e5 e2e3 f6d7 a4c3 f8e8
 8/32> d7e5  5.30  263  1033125 d7e5 f3d2 f8e8 b2d4 f6d7 a4c3 c8d8 d3c2
 8/32  b7e4  6.07  898  1203059 b7e4 d3e4 c7c4 e2c4 c8c4 b2f6 e7f6 e4c6
 9/32  b7e4  9.00  992  1709761 b7e4 d3e4 c7c4 e2c4 c8c4 a4b6 c4e4 b6d7 f6d7
10/32  b7e4 13.69  977  2730561 b7e4 d3e4 c7c4 e2c4 c8c4 a4b6 c4e4 b6d7 f6d7 f3d
4

Recapture is regularly selected as one of several optimal settings by
my qa.

Currently the settings it likes the most are unlimited% check extensions in
quiescence (extended back to main search with depth=1), unlimited extensions
in main search, unlimited single-reply extensions, SEE >= 0 for quiescent
moves, SEE with maximum positional score as margin for futility cutoff
delta pruning, and unlimited extension mate threat.

On any of the extensions from this set, a maximum of one is permitted
per node. I am wondering if changing to fraction extensions and
putting in values like

   check extension in quiescence   fraction = 1
   check extension in main         fraction = 1/2
   single-reply extension          fraction = 1/2
   mate threat                     fraction = 3/4

My program has a maximum hard ply limit of 99 for the quiescence
and quiescence.

Well, back to the drawing board...

Stuart



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.