Author: Stuart Cracraft
Date: 21:51:47 08/31/04
I know this is a long shot throwing this out there without much more
info, but perhaps I'll get lucky and someone has seen this before.
It's appeared on this bulletin board about 6 years ago.
[D]4r1k1/p1qr1p2/2pb1Bp1/1p5p/3P1n1R/1B3P2/PP3PK1/2Q4R w - - bm Qxf4; id
"WAC.141";
This position is supposed to be a good test for the implementation
of Moreland's mate threat extension (if null move search value returns a mate,
extend, or if it returns a mate one move away, extend (the more limited version)
He says many humans can see this mate threat (even I could and I am a class
C or B player) along the h-file but that some null move type programs have a
problem, hence his extension.
I am pretty sure my program is implementing the extension but it
grinds and grinds and can't break free from Kf1 to the winning Qxf4.
with mate threat code:
1/11 g2f1 0.00 -953 352 g2f1 f4d5
2/11 g2f1 0.01 -953 723 g2f1 f4d5 c1g5
3/16 g2f1 0.01 -953 2038 g2f1 f4d5 c1g5 d5f6
4/16 g2f1 0.05 -953 9887 g2f1 f4d5 b3d5 c6d5 f1g2
5/21 g2f1 0.36 -953 75432 g2f1 b5b4 b3a4 f4d5 f6g5 d5e7
6/33 g2f1 1.32 -953 267360 g2f1 b5b4 b3a4 f4d5 f6g5 d5e7
7/33 g2f1 9.36 -939 2144638 g2f1 a7a5 f6g5 f4e6 c1e3 d6e7 g5e7 d7e7
8/34 g2f1 16.14 -939 3355663 g2f1 a7a5 f6g5 f4e6 h4e4 a5a4 b3e6 e8e6 f1g1
9th ply here takes too long and didn't finish in a decent amount of time
without mate threat code
1/11 g2f1 0.00 -953 352 g2f1 f4d5
2/11 g2f1 0.01 -953 723 g2f1 f4d5 c1g5
3/16 g2f1 0.01 -953 2038 g2f1 f4d5 c1g5 d5f6
4/16 g2f1 0.05 -953 9887 g2f1 f4d5 b3d5 c6d5 f1g2
5/21 g2f1 0.36 -953 75432 g2f1 b5b4 b3a4 f4d5 f6g5 d5e7
6/33 g2f1 1.39 -953 267360 g2f1 b5b4 b3a4 f4d5 f6g5 d5e7
7/33 g2f1 8.16 -939 1875448 g2f1 a7a5 f6g5 f4e6 c1e3 d6e7 g5e7 d7e7
8/34 g2f1 15.78 -939 3145843 g2f1 a7a5 f6g5 f4e6 h4e4 a5a4 b3e6 e8e6 f1g1
9/42 g2f1 151.08 -825 30769486 g2f1 g8f8 h4h5 g6h5 h1h5 e8e1 f1e1 d6b4 e1d1 f4
h5 c1h6 f8e8
10/46 g2f1 471.92 -825 92873175 g2f1 e8b8 h1g1 f4e6 h4h5
11/46> g2f1 666.85 -575 133140320 g2f1 e8b8 h1g1 f4e6 h4h5
basically blows up at ply 9 and moves on to ply 10.
ply 11 then gets a fail high. I decided not to wait for
the final ply 11 search as it was taking too long with the wider window.
The mate threat code comes right after the null move portion in the main search
and is:
#ifdef MATETHREAT
// If no extension so far, and null move thinks we're mated next move
// then extend. Sorry, I don't use fractional extensions presently.
if (!extend && value == -MATE+qdepth+2) {
// printf("mate threat:\n");pbd(bd);getchar();
extend=1;
depth++;
}
#endif
I've tried it with the comment uncommented and it does show positions
with the rook threat along the h file with the long-diagonal bishop's
support threatening mate so I know it is seeing the threat, clearly.
In this code, qdepth is like ply in most programs. It is poorly named
and will be renamed at some point.
Program structure if that helps for the above:
Principal Variation Search
Adaptive Null Move
Move ordering by hash move, captures (mvv/lva), history heuristic, centrality
Quiescence extends all checks with 1-ply search handoff by Main-search
Quiescence uses SEE to avoid all SEE-negative captures
Quiescence uses delta (futility) pruning with margin of maximum positional
score so far for side to move
Main search extends all checks by one, does one-move reply extension
(There are other things like Enhanced Transposition Cutoff, Internal
Iterative Deepening, Pawn Promotion and threat-to-promote extensions,
recapture extensions, MTD(f), etc. that are disabled since they didn't seem
to help with my one-second searches.)
Hashing is done only in main search and algorithm is replace always
when length >= depth stored in table. Hash table is single-tier only.
Evaluation is material-only with pc/sq presently. (Next year is full eval.)
Evaluation is in millipawns. Typical maximum positional score is 150. Pawn
is 1000
Goal for this year was to simply get rid of bugs in the non-evaluation
areas of the program, particularly the search.
Thanks ahead,
Stuart
P.S. The program is solving 241/300 on WAC on the same slow 1ghz p3 and at
the same 1 second per position setting that Crafty 19.16 gets 270/300 on --
fun since only was 175/300 a couple months ago and the program is less than 5
months old. Also recently up from expert score on IQ4 to master. Did not code
specifically for any given position other than one in WAC (141 is the second.)
I did not look at the positions beyond the first couple and avoided looking at
the printout except the summary/stats. Position printout was disabled, etc.,
etc.
This page took 0.02 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.