Skip to content

Commit 1a32c58

Browse files
authored
Update README.md
1 parent 4499ec6 commit 1a32c58

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ The didactic nature of the project is reinforced by it's open source license (MI
1010

1111
* A simple 8x8 Board representation: Just an array to represent the 64 squares and keep track of the pieces.
1212
* A triangular PV-Table to keep track of the Principal Variation of best moves.
13-
* Staged move generation: PV move first, then MVV-LVA sorted captures, followed by known killer moves and finally the remaining quiet moves.
14-
* Iterative Deepening Search with Alpha-Beta pruning and Quiescence Search.
15-
* Tapered Piece-Square Tables with values tuned on a set of 725000 quiet, labeled positions.
16-
* No bitboards, hash tables, not even an undo-move method, just the essentials.
13+
* A Transposition Table to store the score and best move of previously visited positions.
14+
* Staged move generation: TT first, followed by the PV move, then MVV-LVA sorted captures, followed by known killer moves and finally the remaining quiet moves.
15+
* Iterative Deepening Search with PVS, null-move pruning and Quiescence Search.
16+
* Tapered PSTs with values tuned on a set of 725000 quiet, labeled positions.
17+
* A 13th auto-tuned table for a dynamic, mobility-based evaluation component.
1718

1819
## How to play
1920

@@ -31,22 +32,32 @@ As a final step you have to register the engine with the GUI. The details depend
3132
After this you should be ready to select MinimalChess as a player!
3233

3334
## Version History
35+
```
36+
Version: 0.5
37+
Size: 707 LOC
38+
Strength: 2200 ELO
39+
```
40+
[__Version 0.5__](https://github.com/lithander/MinimalChessEngine/releases/tag/v0.5) adds a 13th tuned table for a mobility-based evaluation term, null-move pruning and a simple transposition table. I also changed the target framework to .NET 5.
41+
With these changes MinimalChess gains about 350 ELO in playing strength over the previous version.
42+
3443
```
3544
Version: 0.4
3645
Size: 610 LOC
37-
Strength: 1900 ELO
46+
Strength: 1883 ELO
3847
```
3948
[__Version 0.4__](https://github.com/lithander/MinimalChessEngine/releases/tag/v0.4) now uses tapered Piece-Square tables to evaluate positions. It took two weeks of tuning and testing until I found values that could rival [PeSTOs](https://rofchade.nl/?p=307) famous PSTs in strength.
4049
I also added a [killer heuristic](https://www.chessprogramming.org/Killer_Heuristic) and staged move generation so that MinimalChess does not generate moves which will likely never be played. The resulting speed improvements more than compensate for the slightly more expensive evaluation.
4150
A new time control logic now allocates the given time budget smarter, especially in modes where there's an increment each move, and the 'nodes' and 'depth' constraints are now supported in all modes.
51+
MinimalChess 0.4.1 is listed at [1883 ELO](http://ccrl.chessdom.com/ccrl/404/cgi/engine_details.cgi?print=Details&each_game=1&eng=MinimalChess%200.4.1%2064-bit#MinimalChess_0_4_1_64-bit) on the CCRL.
52+
4253

4354
```
4455
Version: 0.3
4556
Size: 641 LOC
4657
Strength: 1575 ELO
4758
```
4859
[__Version 0.3__](https://github.com/lithander/MinimalChessEngine/releases/tag/v0.3) adds MVV-LVA move ordering, Quiescence Search and replaces material-only evaluation with Piece-Square Tables.
49-
With these changes MinimalChess gains about 500 ELO in playing strength over the previous version and achieved at [1571 ELO](http://ccrl.chessdom.com/ccrl/404/cgi/engine_details.cgi?match_length=30&each_game=1&print=Details&each_game=1&eng=MinimalChess%200.3%2064-bit#MinimalChess_0_3_64-bit) on the CCRL.
60+
With these changes MinimalChess gains about 500 ELO in playing strength over the previous version and achieved [1571 ELO](http://ccrl.chessdom.com/ccrl/404/cgi/engine_details.cgi?match_length=30&each_game=1&print=Details&each_game=1&eng=MinimalChess%200.3%2064-bit#MinimalChess_0_3_64-bit) on the CCRL.
5061
This version also introduces a rather unique feature: Sets of PSTs are defined in separate files and can be selected via an UCI option. This allows the user to tweak the values or write their own tables from scratch and by this alter the playstyle of the engine considerably. No programming experience required!
5162

5263
```

0 commit comments

Comments
 (0)