I have finally finished tinkering around with Pedantic to the point where I can announce a Pedantic v0.1 "pre-release." There will not be an official release until I have completed the portions of the project required to optimize the evaluation. The entire project at this point is a bloated piece of @#%@ (okay, maybe not quite that bad.) It currently implements three flavors of search:
- MTD(f) - memory enhanced test-driver algorithm.
- Principal Variation Search
- MinimalChess 0.6 Emulation (a search inspired by MinimalChess)
Please don't confuse my rough emulation of MinimalChess search with the actual app. Pedantic is slower and really only uses the heuristic parts of MinimalChess's search design. It is still integrated with the Pedantic evaluation, quiesence search, and it is currently being called with aspiration windows (MinimalChess doesn't use them). I needed a baseline (that I wouldn't be tempted to change) to compare my development on other searches. At some point it will probably be removed from the Pedantic application.
This engine supports enough of the UCI protocol to run in Arena and has its own opening book and supports pondering. I have not tested it recently with pondering turned off so you may run into problems there. It has a few command-line switches that can be used to control its function. Here is the output of help that shows each option:
Code: Select all
>Pedantic /?
Description:
The pedantic chess engine.
Usage:
Pedantic [command] [options]
Options:
--version Show version information
-?, -h, --help Show help and usage information
Commands:
uci Start the pedantic application in UCI mode.
perft Run a standard Perft test.
>Pedantic perft /?
Description:
Run a standard Perft test.
Usage:
Pedantic perft [options]
Options:
--type <Average|Details|Normal> Specifies the perft variant to execute. [default: Normal]
--depth <depth> Specifies the maximum depth for the perft test. [default: 6]
--fen <fen> Specifies the starting position if other than the default. []
-?, -h, --help Show help and usage information
>Pedantic uci /?
Description:
Start the pedantic application in UCI mode.
Usage:
Pedantic uci [options]
Options:
--search <Minimal|Mtd|Pv> Specifies the search type to use. [default: Pv]
--input <input> Specify a file read UCI commands from. []
--error <error> Output errors to specified file. []
-?, -h, --help Show help and usage information
Note: The performance of the perft tests is currently much lower than I have posted here on this forum because my perft tests reuse the same move generation and execution logic that normal game play uses. This includes all of the incremental updates required for evaluation.
Using the MTD(f) search it currently has a rating around 1700 (a bit lower than I was shooting for) and I believe that is currently its strongest search method. Its end game play is unfortunately pretty bad. Hopefully, I can pick up a 100-200 or so ELO after I have finished the next phase of my project that will optimize all of the weights used by the evaluation function. Once I have finished the optimization stage, I will officially release Pedantic and start on a C++ port that removes the bloat. My goal is to get to a competition worthy engine, but I still have
a lot to learn so that is a long way off. So many
tricks of the trade still evade my understanding.
The evaluation currently evaluates the following positional features:
- Game Phase
- Material
- Piece position
- Mobility
- Development
- King Safety
- Pawn Structure (blocked pawns, isolated pawns, backward pawns, doubled pawns, passed pawns, pawn majorities, and others...)
- Knight/Bishop outposts
- Other miscellaneous positional qualities
If anyone dares to run this "pre-release" or look at its code (see my signature for github url) and would like to offer friendly criticisms, please feel free. Just keep in mind that it is still far from what I would called polished or for that matter fully tested. (Can any software ever be called "fully" tested?) There are still a lot of quirks I have to live with (like knowing when to exit an iterative search when forced mate or draw is detected) but it doesn't currently inhibit me from testing the engine in Arena.