niel5946 wrote: ↑Sat Mar 20, 2021 6:36 pm
Hi.
I am in the middle of reworking my search and eval since I, and others, have noted the lack of strength despite all the features the engine has. I have just finished some relatively quick tc tests for the baseline elo (~1250 elo - too little for bare alphabeta with material+pst?),
Depends. Lithander provided me with a private compile of MinimalChess 0.3 that implements the PeSTO tapered and tuned evaluation. That caused a +230 Elo jump. The PST's, and having a tapered evaluation, can have a HUGE difference. However, if your engine has bare alpha-beta, no move ordering, and only PST/Material, 1250 seems ok. If you have alpha-beta, MVV-LVA move ordering, and somewhat good PST's/Material values, high 1500 (like MinimalChess) should be possible; at LEAST. My engine scores 1675-1695 (depending on the opponent and time control) with only Alpha-Beta, QSearch, MVV-LVA, Material, and PST's.
then killers, history, MvvLva and quiescence. I have recorded the individual gains from each of these additions (tested with baseline vs killers, then killers vs history etc..), and I am now doing the transposition table, with the default size of 16MB.
If you have Alpha-Beta, QSearch, MVV-LVA, Material and PST, you're on par with Rustic Alpha 1's feature set. 1650 Elo should be in the cards. If you have killers and history on top of that, I should expect _at least_ 1700 Elo. (Killers and History are next for me, on top of Alpha 2, which is Alpha 1 + Transposition Table.)
PS: A 16 MB TT is tiny. It'll be full in a few seconds:
Code: Select all
go depth 9
info score cp 70 depth 1 seldepth 1 time 0 nodes 21 nps 0 pv e2e4
info score cp 0 depth 2 seldepth 4 time 0 nodes 132 nps 0 pv e2e4 e7e5
info score cp 60 depth 3 seldepth 8 time 0 nodes 1068 nps 0 pv e2e4 e7e5 d2d4
info score cp 0 depth 4 seldepth 10 time 1 nodes 6372 nps 6372000 pv e2e4 e7e5 d2d4 d7d5
info score cp 20 depth 5 seldepth 14 time 30 nodes 274616 nps 9153867 hashfull 16 pv e2e4 e7e5 d2d4 d7d5 c1e3
info score cp 5 depth 6 seldepth 18 time 70 nodes 566965 nps 8099500 hashfull 39 pv d2d4 d7d5 e2e3 c8d7 c2c4 e7e6 c4d5 e6d5
info score cp 15 depth 7 seldepth 21 time 198 nodes 1632723 nps 8246076 hashfull 99 pv d2d4 d7d5 e2e3 e7e6 c1d2 c7c5 f1e2 c5d4 e3d4
info score cp 5 depth 8 seldepth 23 time 582 nodes 4156201 nps 7141239 hashfull 294 pv d2d4 d7d5 e2e3 e7e6 f1e2 c8d7 c2c4 f8d6 c4d5 e6d5
info score cp 15 depth 9 seldepth 27 time 3726 nodes 28034333 nps 7523976 hashfull 967 pv d2d4 d7d5 e2e3 e7e6 f1e2 c8d7 c1d2 f8d6 g1f3
bestmove d2d4
My problem is that the tt (cutoffs in non-PV nodes + move ordering) only gives around 35 elo, which I would suspect is way too little seeing as hashtables are a main feature of nearly _all_ engines.
You must have a bug somewhere, either in the hash table itself, the zobrist hash, or sorting the move. I had a bug storing the wrong move in the hash table during the beta cutoff, which cost me 50-60 Elo. And I already gained 105 Elo which I thought to be disappointing. Fixing this gained another 60-65 Elo, for a total gain of +/- 170 Elo for the TT + TTMove sorting.
In one of the tests done by the author of Dumb & Dumber, the engine Dumb (which is on par with Rustic Alpha 1, except it has a tuned evaluation), gained 180 Elo from TT Cuts + TT Move sorting. Rustic gained about 170 Elo (160-170, depending on the opponents and time controls). As the engine gets more advanced, the hash table's impact becomes bigger: in Dumb (Dumber is a cut-down version of Dumb), disabling the TT, made the engine lose -350 Elo.
So yes, 35 Elo is too little, and there must be something wrong somewhere. 150+ Elo for a simple engine can be expected.
Because the impact of the TT becomes bigger, features added AFTER you already have a TT will therefore seem to gain more Elo. (Either you have 160 Elo for the TT in a simple engine, and then gain more Elo per feature, or you gain a little bit of Elo per feature and then a massive gain for the TT, depending which you implement first.)