Page 1 of 1

Beowulf 2.2 bugfix - new personality

PostPosted: 25 May 2005, 14:17
by Jim Ablett
Image

I've hopefully fixed a bug with Beowulf v2.2 - see here for details.

http://f27.parsimony.net/forum67828/messages/1510.htm

The bug looks like it's been fixed in v2.3, but I'd like my fixed 2.2 build
to be tested just to make sure.

I've also created a new personality for Beowulf that makes it play
more aggressively and sacrifice for better position (a little like Fischer
perhaps, or perhaps not!).
Also a new opening book from the top ten best openings
statistically.

http://homepage.ntlworld.com/adam.bozon/stats.htm


Initial testing indicates it to be a stronger than 2.3 (default settings).

http://homepages.tesco.net/henry.ablett ... ischer.zip


Bug reports/comments welcome.

Jim.

Re: Beowulf 2.2 bugfix - new personality

PostPosted: 25 May 2005, 17:48
by Norm Pollock
I ran 2 sets of 8 games between Beowulf 2.3 and Beowulf2.2-Fischer. I used the Fritz8gui with 128M each. I used my own book for both engines.

The first set was at 2'+1". Beowulf 2.3 did better with a score of 5.0/8 to 3.0/8 for Beowulf2.2-Fischer. The only big difference I noticed is that Beowulf 2.3 uses about 18M more memory space (154M v 136M) even though they both have a 128M setting.

The second set used 40/3' + 40/2' and Beowulf2.2-Fischer did better with a score of 4.5/8 to 3.5/8 for Beowulf 2.3. Again Beowulf23 used an extra 18M of actual memory space.

Combined result is Beowulf 2.3 with 8.5/16 to 7.5/16 for Beowulf 2.2-Fischer.

Neither engine had a hang problem nor a time management problem.

I liked the following game where Beowulf23 is up 3 pawns to 1 pawn in a bishop of opposite colors ending. It looks like a 50-move draw but Beowulf23 offers to sacrifice a bishop. Beowulf22-Fischer takes the bait and loses. To be fair there was very little time left when this happened. I'm posting that game.

8/8/p7/1p6/1P2b3/2BpK3/8/3k4 w - - 0 92
It is White to move (move #92)

[diag]8/8/p7/1p6/1P2b3/2BpK3/8/3k4 w - - 0 92[/diag]


[Event "a-5"]
[Site "?"]
[Date "2005.05.25"]
[Round "1.1"]
[White "Beowulf_Fischer"]
[Black "Beowulf"]
[Result "0-1"]
[ECO "B42"]
[TimeControl "120+1"]
[EventDate "2005.05.25"]
[PlyCount "222"]
[EventType "tourn"]
[Source "Pollock"]

1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Bd3 Bc5 6. Nb3 Be7 7. Be3 d6 8.
Nc3 Nf6 9. Qf3 O-O 10. O-O Nc6 11. Qg3 b5 12. a3 Ne5 13. f4 Nxd3 14. cxd3
Bb7 15. f5 e5 16. Bh6 Ne8 17. Kh1 Rc8 18. Rac1 Kh8 19. Be3 Nf6 20. h3 Nd7
21. Rc2 d5 22. exd5 Bxd5 23. Nd2 h5 24. Nde4 Bb3 25. Rcc1 f6 26. Qf3 Qe8
27. Rfe1 g6 28. Nd2 Bf7 29. fxg6 Bxg6 30. Nd5 Qf7 31. Bh6 Rg8 32. Nxe7 Qxe7
33. Rxc8 Rxc8 34. Kg1 Kh7 35. Be3 Rc2 36. b3 Qxa3 37. Qd5 Qe7 38. Ra1 Nc5
39. Ne4 Nxe4 40. dxe4 Qg7 41. Bd2 Qa7+ 42. Kh2 Kg7 43. Rd1 Qf2 44. Qd3 Ra2
45. b4 Qd4 46. Qxd4 exd4 47. g4 hxg4 48. hxg4 Bxe4 49. Kg3 Rb2 50. Kf2 Kg6
51. Ke2 Rb1 52. Rxb1 Bxb1 53. Kf3 f5 54. Kf4 fxg4 55. Kxg4 Kf6 56. Kf4 Bg6
57. Be1 Ke6 58. Bd2 Kd5 59. Kf3 d3 60. Kf2 Kd4 61. Ke1 Bh5 62. Kf2 Kc4 63.
Ke3 Be8 64. Kf2 Bf7 65. Ke3 Bg8 66. Ke4 Bd5+ 67. Ke3 Bc6 68. Be1 Be8 69.
Bd2 Bg6 70. Be1 Bh7 71. Bd2 Bf5 72. Be1 Bg6 73. Bd2 Kb3 74. Kf4 Kc2 75. Ke3
Be8 76. Be1 Bf7 77. Bd2 Bg6 78. Be1 Bh5 79. Bd2 Bg4 80. Be1 Be6 81. Bd2 Bd7
82. Be1 Be8 83. Bd2 Bf7 84. Be1 Bg8 85. Bd2 Bd5 86. Be1 Bc4 87. Bd2 Bg8 88.
Be1 Bd5 89. Bd2 Bc6 90. Be1 Kd1 91. Bc3 Be4 92. Kxe4 Kc2 93. Be1 d2 94.
Bxd2 Kxd2 95. Kd4 Kc2 96. Kd5 Kb3 97. Kc5 Ka3 98. Kd5 Kxb4 99. Kd4 a5 100.
Kd3 a4 101. Kd4 a3 102. Kd3 a2 103. Ke4 Kc4 104. Ke5 b4 105. Ke4 b3 106.
Kf4 b2 107. Kf3 Kd5 108. Kf2 b1=Q 109. Kf3 a1=Q 110. Ke2 Qe4+ 111. Kd2
Qae1# 0-1

Re: Beowulf 2.2 bugfix - new personality

PostPosted: 25 May 2005, 17:51
by Dann Corbit
What did you change?

Re: Beowulf 2.2 bugfix - new personality

PostPosted: 25 May 2005, 19:04
by Jim Ablett
Hi Norm,

Thanks for running the tests. It's as I thought, the bug was fixed in 2.3.
My personality changes seem to have added a small increase in strength to 2.2 to bring it up to 2.3 levels. (If in fact it was weaker to begin with? - I dont know - maybe you can tell me.

best,
Jim.

Hi Dann,

In the personality file, I just 'upped' a lot of the parameters.
In the code of 2.2, I added the updated lines from 2.3 that fixed the
bug (I hoped!)


Code: Select all
/////////////  2.2 'comp.c'   /////////////
 
/* Probe the hashtable for the suggested best move */
    Entry = HashProbe(B);
    if (Entry) {
      BestMove = Entry->move;
      score = (int)Entry->score;
    }
    else {BestMove = NO_MOVE;fprintf(stdout,"Could Not Find First Ply Hash Entry!\n");}
    if (BestMove == NO_MOVE) {fprintf(stderr,"No Best Move!\n");while (1);}           <---- problems start here ?
         
     /* If we aborted the search before any score was returned, then reset to the
      * previous ply's move score */
    if (AbortFlag && BestMove == NO_MOVE) score = PreviousScore;
     /* Otherwise store what we've found */
    else {     
      PreviousScore = score;
      Previous   = BestMove;
    }
    BestMoveRet = Previous;
 
     /* Go to the next depth in our iterative deepening loop */
    depth++;
 
////////////////////////
 

And here's the fix in 2.3 comp.c
 

/////////  2.3 'comp.c'   /////////////////
 
/* Probe the hashtable for the suggested best move */
    Entry = HashProbe(B);
    if (Entry) {
      BestMove = Entry->move;
      score = (int)Entry->score;
    }
    else {BestMove = NO_MOVE;fprintf(stdout,"Could Not Find First Ply Hash Entry!\n");}
    if (BestMove == NO_MOVE) {fprintf(stderr,"No Best Move! Assigning previous\n");BestMove = Previous;}  <---- Fix!
         
     /* If we aborted the search before any score was returned, then reset to the
      * previous ply's move score */
    if (AbortFlag && BestMove == NO_MOVE) score = PreviousScore;
     /* Otherwise store what we've found */
    else {     
      PreviousScore = score;
      Previous = BestMove;
    }
    BestMoveRet = Previous;
 
     /* Go to the next depth in our iterative deepening loop */
    depth++;
 
//////////////////////////////////


regards,
Jim.