JoAnnP38 wrote: ↑Tue Apr 11, 2023 5:17 pm
I am closing in on release 0.2 of Pedantic and I may be able to attain 2500 Elo rating in this release. That would be a pretty good pickup from my first release. I have uncovered a recent bug that I am perplexed about fixing, because every time it happens, I have a good laugh. The bug causes Pedantic to under-promote even when it doesn't need a knight for checkmate. The first time it happened it was when I was testing Pedantic against Leorik and Pendantic underpromoted to a Rook. It didn't affect the outcome of the game because it was a promotion that was intended to force Leorik to capture and then Leorik's rook was captured in exchange. At the time I had a good belly laugh as I imagined Pedantic trolling Leorik. Since then, it has occurred a handful of times. Today, it underpromoted to a bishop that wasn't en prise!! Pedantic went on to win the game, but this bug needs to be stamped out, even though I still laugh at the prospect that Pedantic is taunting the other engine.
JoAnnP38 wrote: ↑Tue Apr 11, 2023 5:17 pm
I am closing in on release 0.2 of Pedantic and I may be able to attain 2500 Elo rating in this release. That would be a pretty good pickup from my first release. I have uncovered a recent bug that I am perplexed about fixing, because every time it happens, I have a good laugh. The bug causes Pedantic to under-promote even when it doesn't need a knight for checkmate. The first time it happened it was when I was testing Pedantic against Leorik and Pendantic underpromoted to a Rook. It didn't affect the outcome of the game because it was a promotion that was intended to force Leorik to capture and then Leorik's rook was captured in exchange. At the time I had a good belly laugh as I imagined Pedantic trolling Leorik. Since then, it has occurred a handful of times. Today, it underpromoted to a bishop that wasn't en prise!! Pedantic went on to win the game, but this bug needs to be stamped out, even though I still laugh at the prospect that Pedantic is taunting the other engine.
Okay, maybe the fact that the position is lost regardless of the chosen promotion. Maybe this bug is actually a manifestation of horizon effect. I would be funny if Pedantic underpromoted to a Bishop simply because its opponents would be more interested in promoting its pawn than killing the bishop.
I am closing in on release 0.2 of Pedantic. I have finished all of the planned features except for updating the unit tests to cover all the functionality of the evaluation function. To do a good job on this final piece will probably take me a few days. The features I have completed in this release are:
More robust UCI implementation
Add updates for: seldepth, hashfull, currmove, currmovenumber and cpuload
Removed LiteDB from project and just write data directly to JSON files. (Removes about 10MB from EXE.)
Implemented SEE (static exchange evaluation). +90 Elo
Allows "bad" captures to be searched at reduced depths
Prevents "bad" checks from triggering search extension
Prune "bad" captures from quiescence search
Optimized time budgeting by adapting to new branching factor (2.0625) +45 Elo
Put Mop-Up evaluation from Chess 4.5 back into evaluation +20 Elo
Extend evaluation to support lazy evaluation and defer some parts of eval and calculate only if necessary. +25 Elo
Correct bug where draws were sometimes avoided in endgame to the point of throwing the game. +10 Elo
Removed expensive draw detection from internal node eval. +20 Elo
In head-to-head play against Pedantic 0.1, Pedantic 0.2 shows about 210 Elo improvement which puts the engine right on the cusp of 2500 Elo.
Score of Pedantic 0.2B vs Pedantic 0.1: 669 - 129 - 202 [0.770] 1000
... Pedantic 0.2B playing White: 362 - 41 - 97 [0.821] 500
... Pedantic 0.2B playing Black: 307 - 88 - 105 [0.719] 500
... White vs Black: 450 - 348 - 202 [0.551] 1000
Elo difference: 209.9 +/- 21.7, LOS: 100.0 %, DrawRatio: 20.2 %
Next, I will schedule a gauntlet against some other engines of around the same rank or higher to confirm. That can be running while I turn my attention to unit tests. (Yes, I know -- I'm old school and don't often write my unit tests before writing application code. Bad boomer.)
rdhoffmann wrote: ↑Thu Apr 27, 2023 10:03 am
This engine looks very nice and well coded, congratulations!
If you can manage to get to 2700 or so I'd love to try it out, as I'm looking for an engine stronger than mine but weaker than Spike 1.4.
Thank you for the encouragement. It may be a while before Pedantic is at the 2700 level, but who knows.
And BTW, I like Spike a lot. It's my go to engine whenever I need to analyze a position to understand Pedantic's "blunders"!
I have the next 2-3 releases planned out culminating with a port to C++, but for now C# is faster for me to code in since I haven't programmed in C++ for over 20 years, and I have a lot to catch up on with all the changes to the language.
Announcement: Official release of Pedantic 0.2 is now available
I am happy to announce that the first official update to Pedantic is now available. Pedantic 0.2 is a UCI engine that I have tested in both Arena and CuteChess.This release is stronger than v0.1 by about 156 Elo which results in overall playing strength of about 2432.
This version includes the following updates:
Lazy Evaluation
Static Exchange Evaluator (SEE)
Mop-up evaluation
Better optimized pruning/reductions/extensions
Better optimized time controls
Better handling of drawn positions (still needs work)
Removed LiteDB and use stand-alone .json file for weights database.
If you have need of an engine with this playing strength please give it a try. As always, I would be happy to hear any experiences you have with it especially if you encounter any bugs.
I am coming near the 2650-2700 area, and would like to have it as a sparring partner.
But I develop mainly with Linux. Do you have an executable ?
At 2650-2700 (vs 2432) I think you are looking for a punching bag!
I have not tested in Linux other than to compile an executable and just run it from the command line to make sure it didn't crash immediately. I could post an executable somewhere if you would like, but I don't want to add it to the current release. I am planning to actually test Linux during my next release.