Hi Aryan!
I also started chess programming only a few months ago and can relate to your addiction symptoms. But it's a very pandemic-friendly hobby, at least.
I gave your engine a try as it's pretty much exactly the same strength as the current build of my engine MinimalChess that Marcel mentioned. But your's is much faster. It reports around 8 Million NPS where my engine only manages to search 1.4 NPS! Well done!
I have encountered a few stability problems with Bit Genie, though.
My tournament against Bit Genie (bmi2 build) ended prematurely in CuteChess CLI:
Code: Select all
./cutechess-cli.exe -engine conf="MinimalChess 0.3.1 PeSTO" -engine conf="Bit-Genie_100" -each tc=3+0.5 book=varied.bin -pgnout mmc031_pesto_vs_bit-genie_100.pgn -rounds 100 -games 2 -repeat -concurrency 4
[...]
Terminating process of engine Bit-Genie_100(6)
Finished game 37 (MinimalChess 0.3.1 PeSTO vs Bit-Genie_100): 1-0 {Black disconnects}
[pgn]
[Event "?"]
[Site "?"]
[Date "2021.03.22"]
[Round "19"]
[White "MinimalChess 0.3.1 PeSTO"]
[Black "Bit-Genie_100"]
[Result "1-0"]
[ECO "A10"]
[GameDuration "00:00:43"]
[GameEndTime "2021-03-22T13:00:07.779 Mitteleuropäische Zeit"]
[GameStartTime "2021-03-22T12:59:23.814 Mitteleuropäische Zeit"]
[Opening "English Opening"]
[PlyCount "103"]
[Termination "abandoned"]
[TimeControl "3+0.5"]
1. c4 {book} b6 {book} 2. e4 {book} Bb7 {book} 3. Nc3 {book} e6 {book}
4. Nf3 {+0.57/5 0.14s} Bb4 {book} 5. Bd3 {book} Ne7 {book} 6. Ne2 {book}
Na6 {+0.18/7 0.57s} 7. a3 {+0.25/6 0.35s} Bd6 {+0.10/7 0.56s}
8. b4 {+0.51/5 0.59s} f5 {-0.47/7 0.56s} 9. e5 {+2.00/6 0.27s}
Bxf3 {-0.76/7 0.56s} 10. exd6 {+1.62/6 0.15s} Bxg2 {-1.02/7 0.56s}
11. dxe7 {+1.64/6 0.18s} Qxe7 {-0.62/7 0.56s} 12. Rg1 {+1.79/6 0.25s}
Qf6 {-1.23/7 0.55s} 13. Bb2 {+2.29/6 0.34s} Qxb2 {-1.76/7 0.55s}
14. Rxg2 {+2.23/6 0.53s} Qf6 {-1.73/7 0.55s} 15. c5 {+2.40/5 0.62s}
Nb8 {-1.40/7 0.55s} 16. Rc1 {+2.20/5 0.24s} Nc6 {-1.39/7 0.55s}
17. b5 {+2.01/4 0.62s} Ne5 {-0.94/7 0.55s} 18. Rc3 {+0.89/5 0.13s}
Nxd3+ {-0.06/7 0.54s} 19. Rxd3 {+0.95/6 0.13s} bxc5 {-0.30/7 0.54s}
20. Rdg3 {+0.97/5 0.64s} O-O {+0.16/7 0.54s} 21. Rxg7+ {+1.06/5 0.63s}
Qxg7 {-0.16/9 0.54s} 22. Rxg7+ {+1.55/7 0.30s} Kxg7 {-0.26/8 0.54s}
23. Qb3 {+1.78/6 0.33s} Kf7 {-0.52/8 0.54s} 24. Qc4 {+2.02/6 0.39s}
d6 {-0.39/8 0.54s} 25. Nf4 {+2.07/6 0.34s} Rae8 {-0.11/8 0.54s}
26. d4 {+2.13/6 0.31s} Rg8 {+0.04/8 0.53s} 27. Kf1 {+2.16/6 0.30s}
Rg4 {-0.04/8 0.53s} 28. dxc5 {+2.49/6 0.23s} Re7 {-0.44/8 0.53s}
29. c6 {+3.00/6 0.18s} Ke8 {+0.34/8 0.53s} 30. h3 {+3.10/6 0.14s}
d5 {-0.75/8 0.53s} 31. Qc3 {+3.75/6 0.28s} Rxf4 {-1.72/9 0.53s}
32. Qg3 {+4.57/7 0.48s} Rxf2+ {-2.01/9 0.53s} 33. Qxf2 {+4.81/7 0.41s}
e5 {-2.16/9 0.53s} 34. Qa2 {+4.95/7 0.47s} Kf7 {-2.31/9 0.53s}
35. Qxd5+ {+5.06/7 0.30s} Kf6 {-2.86/9 0.53s} 36. Qc5 {+5.24/7 0.64s}
e4 {-3.18/9 0.52s} 37. Qxa7 {+5.23/7 0.35s} e3 {-3.31/9 0.52s}
38. Ke2 {+5.37/7 0.16s} f4 {-3.91/9 0.52s} 39. Qd4+ {+5.64/7 0.23s}
Kf5 {-4.46/8 0.52s} 40. b6 {+6.20/7 0.64s} cxb6 {-6.81/9 0.52s}
41. c7 {+7.12/7 0.44s} Rxc7 {-7.18/9 0.52s} 42. Qd5+ {+7.81/7 0.20s}
Kf6 {-8.04/9 0.52s} 43. Qd6+ {+8.14/7 0.22s} Kf5 {-10.37/10 0.52s}
44. Qxc7 {+8.98/7 0.20s} Ke4 {-10.37/8 0.52s} 45. Qc4+ {+9.63/7 0.42s}
Ke5 {-11.15/9 0.52s} 46. Kf3 {+10.06/7 0.44s} Kf5 {-11.45/9 0.52s}
47. Qxf4+ {+10.57/7 0.63s} Kg6 {-12.20/9 0.52s} 48. Qxe3 {+10.66/6 0.73s}
b5 {-12.20/8 0.52s} 49. Qe5 {+10.87/6 0.72s} Kf7 {-12.49/9 0.52s}
50. Qxb5 {+11.00/6 0.72s} Kf6 {-12.66/8 0.52s} 51. a4 {+11.24/6 0.71s}
Kf7 {-20.49/8 0.51s} 52. a5 {+12.10/6 0.71s, Black disconnects} 1-0
[/pgn]
Maybe you can try to recreate the final position using the PGN and see if there's a reproducable crash?
Up to game 37 I saw no "time forfeits" despite the fast "3+0.5" time controls and our engines seemed to be of equal strength as predicted by Marcel.
However if I try to run a tournament in the CuteChess GUI then Bit-Genie_100 loses almost *all* games on time with "40/5+1" time controls!
mvanthoor wrote: ↑Sun Mar 21, 2021 7:38 pm
MinimalChess 0.3 with PeSTO falls short by just 70 Elo, but it doesn't have a hash table yet. Adding this should add another 170 Elo. Thus... a basic engine with MVV-LVA, TT, TTMove ordering, and a tapered and tuned evaluation, could be around 1950 Elo.
I don't think Hash tables would add 170 ELO to MinimalChess. I don't have TT move ordering (obviously) and no killer and history heuristics but I do play the best move from the principal variation first which provides a lot of the cutoffs you'd otherwise get from TT tables. Also my search depth is constrained by the slow speed of the naive move generator. Both factors together cause the expected gain of adding TT tables to be much lower than what you saw with Rustic.