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 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.