Computer Chess Club Archives


Search

Terms

Messages

Subject: WAC 141 blowup

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.