Author: Mike Byrne
Date: 20:22:58 05/04/04
...will get this problem much quicker. Along with output enhancements while
running under Arena/Winboard
Thanks to Bernhard Bauer for pointing this problem out.
Black(1): [d]R7/3p3p/8/3P2P1/3k4/1p5p/1P1NKP1P/7q w
White(1): go
end-game phase
clearing hash tables
time surplus 29.88 time limit 1666:39 (1666:39)
depth time score variation (1)
starting thread 1
2 0.00 0.68 1. Nxb3+ Kc4 2. Nd2+ Kxd5
2 0.00 0.76 1. Ra5 Qxh2 2. Nxb3+
2-> 0.01 0.76 1. Ra5 Qxh2 2. Nxb3+
3 0.01 0.78 1. Ra5 Ke5 2. Nxb3 Qxh2
3-> 0.01 0.78 1. Ra5 Ke5 2. Nxb3 Qxh2
4 0.01 0.72 1. Ra5 d6 2. Nxb3+ Ke5 3. Kd3 Qxh2
4-> 0.03 0.72 1. Ra5 d6 2. Nxb3+ Ke5 3. Kd3 Qxh2
(s=4)
5 0.03 0.53 1. Ra5 Ke5 2. Rc5 d6 3. Nc4+ Kd4 (s=3)
5-> 0.05 0.53 1. Ra5 Ke5 2. Rc5 d6 3. Nc4+ Kd4 (s=2)
6 0.06 0.49 1. Ra5 Ke5 2. Rc5 d6 3. Nf3+ Ke4 4.
Nd2+ Kf4
6 0.11 0.74 1. Ra7 d6 2. Rxh7 Qg2 3. Nxb3+ Kxd5
4. g6 Qxg6 5. Rxh3
6-> 0.11 0.74 1. Ra7 d6 2. Rxh7 Qg2 3. Nxb3+ Kxd5
4. g6 Qxg6 5. Rxh3 (s=4)
7 0.14 0.50 1. Ra7 Kxd5 2. Rxd7+ Ke6 3. Rxh7 Qxh2
4. Rh6+ Kf5 5. g6 (s=3)
7-> 0.22 0.50 1. Ra7 Kxd5 2. Rxd7+ Ke6 3. Rxh7 Qxh2
4. Rh6+ Kf5 5. g6 (s=3)
8 0.30 0.70 1. Ra7 Kxd5 2. Rxd7+ Ke6 3. Rxh7 Qxh2
4. Nf3 Qg2 5. Nd4+ Kd5 6. Nxb3 (s=2)
8-> 0.42 0.70 1. Ra7 Kxd5 2. Rxd7+ Ke6 3. Rxh7 Qxh2
4. Nf3 Qg2 5. Nd4+ Kd5 6. Nxb3 (s=2)
9 0.56 0.67 1. Ra7 Kxd5 2. Rxd7+ Kc6 3. Rxh7 Qxh2
4. Nf3 Qg2 5. Nd4+ Kc5 6. Nxb3+ Kc4
9-> 0.87 0.67 1. Ra7 Kxd5 2. Rxd7+ Kc6 3. Rxh7 Qxh2
4. Nf3 Qg2 5. Nd4+ Kc5 6. Nxb3+ Kc4
(s=3)
10 1.00 -1 1. Ra7
10 1.36 0.11 1. Ra7 Kxd5 2. Rxd7+ Kc6 3. Rxh7 Qxh2
4. Rh6+ Kd5 5. Nxb3 Qe5+ 6. Kf1 h2
7. g6 Ke4 (s=2)
10 3.15 0.16 1. Nf3+ Kxd5 2. Rb8 Qa1 3. Rxb3 Qa6+
4. Kd2 Qf1 5. Ke3 Qc1+ 6. Ke2 Qc2+
7. Nd2 Qf5
10 3.51 0.44 1. Ra1 Qg2 2. Nf3+ Ke4 3. Ra4+ Kxd5
4. Rb4 d6 5. Rxb3 Qg4 6. Rd3+ Kc5 7.
Re3
10 5.87 0.92 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Nf3+ Kc4 5. Rg4+ Kc5 6. Rg5 d6 7. Rxd5+
Kxd5
10-> 5.87 0.92 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Nf3+ Kc4 5. Rg4+ Kc5 6. Rg5 d6 7. Rxd5+
Kxd5 (s=2)
11 7.36 0.92 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Nf3+ Kc4 5. Rg4+ Kc5 6. Rg5 d6 7. Rxd5+
Kxd5
11-> 8.15 0.92 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Nf3+ Kc4 5. Rg4+ Kc5 6. Rg5 d6 7. Rxd5+
Kxd5
12 9.36 +1 1. g6!!
12 13.30 1.93 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Rg4+ Kc5 5. Rg5 Qxg5 6. Ne4+ Kc4 7.
Nxg5 d5 8. Nxh3
12-> 13.92 1.93 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Rg4+ Kc5 5. Rg5 Qxg5 6. Ne4+ Kc4 7.
Nxg5 d5 8. Nxh3
13 18.64 1.93 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Rg4+ Kc5 5. Rg5 Qxg5 6. Ne4+ Kc4 7.
Nxg5 d5 8. Nxh3
13-> 20.09 1.93 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Rg4+ Kc5 5. Rg5 Qxg5 6. Ne4+ Kc4 7.
Nxg5 d5 8. Nxh3
14 26.09 2.10 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Nf3+ Kc4 5. Rg4+ Kc5 6. Rg5 Qxg5 7.
Nxg5 Kc4 8. Nxh3 <HT>
14-> 29.12 2.10 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Qxd5 4.
Nf3+ Kc4 5. Rg4+ Kc5 6. Rg5 Qxg5 7.
Nxg5 Kc4 8. Nxh3 <HT>
15 41.70 1.71 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Kxd5 4.
Rxg2 hxg2 5. Nf3 Kc4 6. Ng1 d5 7. h4
d4 8. f4 d3+ 9. Kd2
15-> 57.06 1.71 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Kxd5 4.
Rxg2 hxg2 5. Nf3 Kc4 6. Ng1 d5 7. h4
d4 8. f4 d3+ 9. Kd2 (s=2)
16 2:50 1.71 1. g6 hxg6 2. Ra1 Qg2 3. Rg1 Kxd5 4.
Rxg2 hxg2 5. Nf3 Kc4 6. Ng1 d5 7. h4
d4 8. Kd2 d3 9. f4
? 16 3:00 2/24* 1. Ra1
White(1): ?
time=3:04 cpu=191% mat=0 n=235182110 fh=87% nps=1.28M
ext-> chk=20315681 cap=225067 pp=1382740 1rep=890824 mate=31826
predicted=1 nodes=235182110 evals=117781781 50move=0
endgame tablebase-> probes=8 hits=8
SMP-> split=2014 stop=240 data=6/128 cpu=5:52 elap=3:04
The code essentially adds a 300 point penalty to the side that has no
pieces(major and minor) if there is a outside pawn score. Since the side with
the piece has a huge advantage in that situation - whether as offender or the
defender.
*snippet of code*
=============================================================
after change
=============================================================
if (tree->pawn_score.outside) {
int pscore = 0;
if (tree->pawn_score.outside & 16)
pscore += 3 * outside_passed[(int) TotalBlackPieces];
else if (tree->pawn_score.outside & 32)
pscore -= 3 * outside_passed[(int) TotalWhitePieces];
if (tree->pawn_score.outside & 2)
pscore += 2 * outside_passed[(int) TotalBlackPieces];
else if (tree->pawn_score.outside & 1)
pscore += outside_passed[(int) TotalBlackPieces];
if (tree->pawn_score.outside & 8)
pscore -= 2 * outside_passed[(int) TotalWhitePieces];
else if (tree->pawn_score.outside & 4)
pscore -= outside_passed[(int) TotalWhitePieces];
if (TotalWhitePieces && TotalBlackPieces) score += pscore * passed_scale /
100; //changed
else if (TotalWhitePieces && !TotalBlackPieces) score += (pscore * passed_scale
/ 100)+300; //added
else if (!TotalWhitePieces && TotalBlackPieces) score += (pscore * passed_scale
/ 100)-300; //added
else score += 2*pscore * passed_scale / 100; //added
}
=============================================================
before change
=============================================================
if (tree->pawn_score.outside) {
int pscore = 0;
if (tree->pawn_score.outside & 16)
pscore += 3 * outside_passed[(int) TotalBlackPieces];
else if (tree->pawn_score.outside & 32)
pscore -= 3 * outside_passed[(int) TotalWhitePieces];
if (tree->pawn_score.outside & 2)
pscore += 2 * outside_passed[(int) TotalBlackPieces];
else if (tree->pawn_score.outside & 1)
pscore += outside_passed[(int) TotalBlackPieces];
if (tree->pawn_score.outside & 8)
pscore -= 2 * outside_passed[(int) TotalWhitePieces];
else if (tree->pawn_score.outside & 4)
pscore -= outside_passed[(int) TotalWhitePieces];
if (TotalWhitePieces && TotalBlackPieces) score += pscore * passed_scale /
100;
else if (TotalWhitePieces && !TotalBlackPieces) score += (pscore * passed_scale
/ 100)+300;
else if (!TotalWhitePieces && TotalBlackPieces) score += (pscore * passed_scale
/ 100)-300;
else score += 2*pscore * passed_scale / 100;
}
==================================================================
Best,
Michael
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.