Computer Chess Club Archives


Search

Terms

Messages

Subject: Transposition table woes

Author: Rick Bischoff

Date: 12:59:57 07/17/03


Hello,

I am debugging my search code at the moment, using the following position:
r1bq4/1p4kp/3p1n2/5pB1/p1pQ4/8/1P4PP/4RRK1 w - - bm Re8; id "WCSAC.0002";

As you can see, the best move is Re8, but my engine says...

Depth: 4 e=-50 g5f6 d8f6 e1e7 g7g6
 trying hash move :   9 BISHOP: g5 X f6(KNIGHT) first
0/48  150 g5f6 d8f6 d4c4 c8d7 f1f5
1/48  150 f1f5 c8f5
2/48  150 d4f6 d8f6 g5f6 g7f6
3/48  150 d4d6
4/48  150 d4c4 d8b6 g5e3 b6b2 c4c8
5/48  150 h2h4 d6d5 g5e3 d8b6 d4b6
6/48  150 g5c1 g7h8 d4c4 d6d5 c4c8
7/48  150 g5d2 g7h8 d4c4 d6d5 c4c8
8/48  150 g5e3 g7h8 d4c4 d6d5 c4c8
9/48  150 g5f4 b7b5 f4d6 b5b4 f1f5
10/48  150 g5h4 c4c3 b2c3 g7h8 f1f5
11/48  150 g5h6
12/48  150 e1a1 c4c3 b2c3 g7h8 a1a4
13/48  150 e1b1 c4c3 b2c3 g7h8 b1b7
14/48  150 e1c1 c4c3 b2c3 g7h8 f1f5
15/48  150 e1d1 c4c3 b2c3 g7h8 f1f5
16/48  150 e1e2 c4c3 g5f6 d8f6 e2e7
17/48  150 e1e3 c4c3 g5f6 d8f6 e3e7
18/48  150 e1e4 c4c3 g5f6 d8f6 e4e7
19/48  150 e1e5 g7g6 g5f6 d6e5 f6d8
20/48  150 e1e6
21/48  150 e1e7
22/48  150 e1e8
23/48  150 f1f2 c4c3 b2c3 g7h8 f2f5
24/48  150 f1f3 c4c3 b2c3 g7h8 f3f5
25/48  150 f1f4 c4c3 b2c3 g7h8 f4f5
26/48  150 d4d1 g7h8 d1d6 d8d6 g5f6
27/48  150 d4d2 g7h8 d2d6 d8d6 g5f6
28/48  150 d4f2 c4c3 f2a7 a8a7 g5f6
29/48  150 d4c3 g7h8 g5f6 d8f6 c3f6
30/48  150 d4d3
31/48  150 d4e3 c4c3 e3a7 a8a7 g5f6
32/48  150 d4e4
33/48  150 d4f4 g7h8 f4d6 d8d6 g5f6
34/48  150 d4g4
35/48  150 d4h4 c4c3 g5f6 d8f6 h4f6
36/48  150 d4c5
37/48  150 d4d5
38/48  150 d4e5
39/48  150 d4b6
40/48  150 d4a7
41/48  150 g1h1 c4c3 b2c3 g7h8 f1f5
42/48  150 b2b3
43/48  150 g1f2 g7h8 g5f6 d8f6 d4f6
44/48  150 g2g3 c4c3 b2c3 g7h8 f1f5
45/48  150 h2h3 c4c3 b2c3 g7h8 f1f5
46/48  150 b2b4
47/48  150 g2g4 c4c3 b2c3 f5f4 g5f4
Depth: 5 e=150 g5f6 d8f6 d4c4 c8d7 f1f5

Two questions:

A) Why in god's green earth would the hash table be empty for the move e1-e8?
B) Why do some of these lines have less than 5 moves?

I think I know why, but we'll get to that in a moment.  The lines are collected
from the hash table using a collectPV that just keeps making the "best move"
stored in the hash table... How do those moves get there?

Move bestmove(BADMOVE);
for each move M:
   make M;
   int v = -alphabeta(-beta,-alpha);
   unmake move M;

   if (v >= beta) { store bestmove, beta, etc....; return beta; }
   if (v > alpha) { bestmove = M; alpha = v; }
end for

store bestmove, alpha, etc.
return alpha

Ok, so what I think is happening is that after
e1e8
The first move it is trying after e1e8 is >= beta so no move gets stored into
the hash table.  Should I simply add the change:

if (v >= beta) {
  bestmove = M;
  ....
}

Thanks,
Rick



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.