oriyonay wrote: ↑Wed Aug 04, 2021 5:45 am
Hi there - I hope you're having a beautiful day so far!
I've been writing my engine, and it plays decent chess for an engine that just has basic evaluation, aspiration windows, killer/history heuristics, null move pruning, transposition tables, check extension, LMR, qsearch, and PVS. It can evaluate ~3mnps, yet still gets consistently beaten by VICE even though from my understanding most engines with these features can easily play at > 2000 elo while evaluating far fewer nodes. Is there anything I'm missing or could do to easily improve this? I'm open to any feedback/suggestions you have
For your reference, here's my search
code
Thank you so much!! Have a fantastic rest of your day!
- Ori
First, you don't need all of those features to be able to beat VICE. The things you need are:
- Board representation and search obviously.
- Check extension
- QSearch
- MVV-LVA
- A transposition table
At that point, your engine should already be over 1800.
Then when you add a tapered evaluation with good PST's, you should be on par with VICE, or at least over 2000 (depending on the speed of your engine). If you have PVS + Killer moves in addition to the above, your engine should be about +100 against VICE (CCRL Blitz 2150 Elo.)
I'm going by my own experience with Rustic. The current development version has the features above, but NOT null move, LMR, aspiration windows, or history heuristics, and it's consistently +100 Elo stronger than VICE.
So, my suggestion would be to strip all features from your engine, and add them back in one by one, testing how much strength you earn per feature. You can see what Rustic gained, here:
https://rustic-chess.org/progress/sprt_results.html
(In self-play, so the real gains are somewhat lower, but you have a basis for comparison.)
Also take AndrewGrant's suggestions into account. I'm sure the points he mentioned either cause you to not gain Elo while having the feature, or maybe worse, lose Elo by implementing the feature like you did.