Author: Bernhard Bauer
Date: 01:26:54 09/28/00
Go up one level in this thread
On September 28, 2000 at 01:01:36, Jeremiah Penery wrote:
>On September 27, 2000 at 04:45:38, Eduard Nemeth wrote:
>
>>[D]8/8/p3R3/1p5p/1P5p/6rp/5K1p/7k w - - 0 1
>>
>>Shredder 4 and Fritz 6a this don't find !
>
>I have a modified Crafty that solves this well enough:
>
>7-> 0.33 -0.04 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
> 4. bxa5 b4 5. a6 b3
>8 0.34 -- 1. Re1+
>8 1.85 ++ 1. Re1+!!
>8 1.86 0.61 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
> 4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
>8-> 1.88 0.61 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
> 4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
>9 1.89 -- 1. Re1+
>9 5.86 ++ 1. Re1+!!
>9 5.87 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
> 4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
>9-> 5.89 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
> 4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
>
>Part of the modifications I did was to not do a nullmove at all when the total
>depth is 5 or less, and it also doesn't use nullmove when depth_remaining is 2
>or less. The normal "adaptive null-move reduction" has also been changed, to
>only use r=3 when depth is more than 12 instead of the normal 6. Here's the
>modified parts of the nullmove code from Crafty's search.c
>
> if (iteration_depth > 5 && depth > 2) {
># if defined(NULL_MOVE_DEPTH)
> ....
> null_depth=(depth > 12*INCPLY) ? 2*INCPLY : 3*INCPLY;
> ....
># endif
> }
My modified Crafty solves it good enough too.
6-> 0.30 -4.81 1. Re1+ Rg1 2. Rf1 a5 3. bxa5 b4 4.
a6 b3
7 0.30 ++ 1. Re1+!!
7 0.32 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
7-> 0.32 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
8 0.33 -- 1. Re1+
8 1.53 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 <HT>
8-> 1.55 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 <HT>
9 1.57 -- 1. Re1+
9 5.10 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 <HT>
9-> 5.13 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 <HT>
10 5.16 -- 1. Re1+
10 20.71 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 <HT>
10-> 20.74 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 <HT>
11 20.75 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
11-> 20.77 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
12 20.80 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
12-> 20.82 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
13 20.83 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
13-> 20.86 Mat07 1. Re1+ Rg1 2. Rf1 Rxf1+ 3. Kxf1 a5
4. bxa5 b4 5. a6 b3 6. a7 b2 7. a8=Q#
time=21.03 cpu=200% mat=-5 n=13078644 fh=99% nps=621904
ext-> checks=2624089 recaps=3032 pawns=137543 1rep=83708 thrt:30
predicted=0 nodes=13078644 evals=89865
endgame tablebase-> probes done=0 successful=0
hashing-> trans/ref=105% pawn=99% used=69%
SMP-> split=694 stop=32 data=8/64 cpu=42.10 elap=21.03
My modification has also to do with null move, but I do another change.
Instead of the original statement in search.c
if (do_null && !tree->in_check[ply] && pieces
&& (pieces>5 || depth<421)) {
I use the following statement
if (do_null && !tree->in_check[ply] && pieces>0 && depth>60 &&
&& (pieces>9 || depth>301) ) {
This helps a lot in null move related positions.
For the bench command I get:
MyCrafty.exe version17.14
mt pos1 pos2 pos3 pos4 pos5 pos6 nps etime ttply
1 5.25 49.62 23.45 37.09 45.64 43.93 231873 204 3.137255
2 3.19 28.29 13.20 19.41 24.18 33.35 441338 121 5.289256
WCrafty.exe version17.14 (Nalimov executable)
mt pos1 pos2 pos3 pos4 pos5 pos6 nps etime ttply
1 4.36 42.14 29.44 31.71 38.23 37.22 278854 183 3.497268
2 2.73 23.79 24.64 15.64 20.14 27.04 530251 114 5.614035
Kind regards
Bernhard
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.