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.