It's something of a miracle, not because it is extemely difficult to find the solution but because the previous version totally could not find this even after more than half an hour of searching
Code: Select all
// No EndgameKingMobility yet, this is just for King Safety calculations
const Value MidgameKingMobilityBonus[] = {
// 0 1 2 3 4 5 6 7 8 9
V( -28),V( -12),V( 0), V( 2),V( 3),V( 8),V( 9),V( 10),V( 11),V( 12)
Code: Select all
Bitboard attackedByOthers =
ei.attacked_by(Them, PAWN) | ei.attacked_by(Them, KNIGHT)
| ei.attacked_by(Them, BISHOP) | ei.attacked_by(Them, ROOK);
Bitboard escapeSquares =
pos.attacks_from<KING>(s) & ~pos.pieces_of_color(Us) & ~attackedByOthers;
if (attackUnits > 20)
{
attackUnits -= MidgameKingMobilityBonus[count_1s_max_15<HasPopCnt>(escapeSquares)];
}
Engine: Rainbow Serpent 1.5 Build 123 (Athlon 2009 MHz, 256 MB)
by Romstad, Costalba, Kiiski, De Groot
1.00 0:00 +0.60 1.Rd1 (120) 0
2.00 0:00 -2.34 1.b4 Nc3 2.Qd3 Nxb1 3.bxa5 bxa5 (14.075) 33
2.00 0:00 -0.32 1.Rbc1 Nc5 2.Rd1 Rfc8 (86.201) 162
2.00 0:00 0.00 1.Qe4 Nc5 2.Qc2 Rac8 3.Rd1 (242.175) 303
2.00 0:00 +1.53 1.Qc2 Nc3 2.Rxc3 Bxc3 3.bxc3 f6
4.Be3 (352.069) 357
3.01 0:01 +1.33 1.Qc2 Nc3 2.Rxc3 Bxc3 3.bxc3 f6
4.Be3 Rad8 5.Bf4 (675.431) 450
3.14 0:03 +1.73 1.Bf6 Rfc8 2.Qe5 Qxc4 3.Qg5 Qc1+
4.Rxc1 Rxc1+ 5.Qxc1 gxf6 6.Qc6 (1.697.001) 522
3.28 0:03 +1.89 1.Qf1 Nc5 2.b4 Bxb4 3.Rbxb4 Qxa2
4.Ne5 f6 (1.816.174) 528
4.01 0:03 +1.89 1.Qf1 Nc5 2.b4 Bxb4 3.Rbxb4 Qxa2
4.Be7 Rfc8 5.Ng5 (1.844.031) 531
4.02 0:03 +3.15 1.Bf6 h5 2.Ne5 Nc3 3.bxc3 Bxc3 4.Qd3 gxf6
5.Rxc3 Qxd3 6.Nxd3 (1.972.278) 534
5.01 0:04 +3.35 1.Bf6 h5 2.Ne5 Nxb2 3.Rxb2 Rac8
4.Rxc8 Qxc8 5.Rc2 Qb7 6.Qxh5 gxf6 (2.335.913) 541
6.01 0:05 +3.35 1.Bf6 h5 2.Ne5 Nxb2 3.Rxb2 Rac8
4.Rxc8 Qxc8 5.Rc2 Qb7 6.Qxh5 gxf6 (2.895.420) 558
7.01 0:09 +3.15-- 1.Bf6 Nc3 2.bxc3 Rfc8 3.Rxc8+ Qxc8
4.Be5 f6 5.Bd4 e5 6.Nxe5 fxe5 7.Qxe5 Qd7 (5.738.314) 609
8.01 0:22 +3.95++ 1.Bf6 Nc3 2.bxc3 Rfc8 3.Qd2 Rxc4
4.Qg5 Kf8 5.Qxg7+ Ke8 6.Rc1 (14.547.831) 659
9.01 1:49 +4.96 1.Bf6 Nc5 2.Ne5 Qxc4 3.Nxc4 gxf6
4.Qg4+ Kh8 5.Qh4 Nd7 6.b4 Bxb4
7.Rxb4 Rac8 8.Kf1 Rc5 9.Nd6 f5
10.Qg5 f6 11.Qh6 (75.418.825) 687
10.01 3:04 +4.80 1.Bf6 g6 2.Ne5 Bc3 3.bxc3 Nxc3 4.Qe3 Nd5
5.Ng4 Nxf6 6.Nxf6+ Kg7 7.Rf4 Qa5
8.Rc1 Rfc8 9.Rf3 Qe5 10.Qa3 Rxc1+
11.Qxc1 (124.658.559) 674
best move: Bg5-f6 time: 3:29.891 min n/s: 660.915 nodes: 138.720.187
Eelco
Code: Select all
const Value MidgameKingMobilityBonus[] = {
// 0 1 2 3 4 5 6 7 8 9
V( -28),V( -12),V( 0), V( 2),V( 3),V( 8),V( 9),V( 10),V( 11),V( 12)
Code: Select all
Bitboard attackedByOthers =
ei.attacked_by(Them, PAWN) | ei.attacked_by(Them, KNIGHT)
| ei.attacked_by(Them, BISHOP) | ei.attacked_by(Them, ROOK);
Bitboard escapeSquares =
pos.attacks_from<KING>(s) & ~pos.pieces_of_color(Us) & ~attackedByOthers;
if (attackUnits > 20)
{
attackUnits -= MidgameKingMobilityBonus[count_1s_max_15<HasPopCnt>(escapeSquares)];
}
