Lasker - Thomas revisited with build 123.

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

User avatar
Eelco de Groot
Posts: 4692
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Lasker - Thomas revisited with build 123.

Post by Eelco de Groot »

Build 123 can now miraculously find the Lasker - Thomas testposition, a favourite testposition, one of the last EPDs from Arasan 7 from Jon Dart, the standard testset I use.

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 8-) I think it is mostly just searchluck...I have not made any crucial changes, some changes in search.cpp, one small change in evaluate.cpp that makes some difference but is not tuned yet, just added a King midgame mobility term to the King Safety eval, re-using some already existing bitboards from Tord:

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)];
	  }
[d]r4rk1/p4ppp/qp2p3/b5B1/n1R5/5N2/PP2QPPP/1R4K1 w - - bm Bf6; id "Alekine-Sterk, Budapest 1921";

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)];
	  }
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
Eelco de Groot
Posts: 4692
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: Alekine-Sterk, Budapest 1921 revisited with build 123.

Post by Eelco de Groot »

Sorry, I got my Grandmasters mixed up, but position is correct!

Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan