It's been a good while since I've made any substantial changes. Took some time off to develop a testing framework of my own creation, and also lost out on some free time now that I'm back in University.
Ethereal7.78 is about 60ELO stronger than Ethereal7.70
Ethereal7.78 is about 40ELO stronger than Ethereal7.76
This update is all about the evaluation function, something which has been a long running issue within Ethereal. Good search, bad evaluations, long games, all combine to cause bad results.
Official Release : https://github.com/AndyGrant/Ethereal/r ... /tag/V7.78
Ethereal7.78.zip includes Win32, Win64, and Android compiles (Android untested!), as well as the source of course.
Patch notes are as follows:
Code: Select all
Implemented a simple BitTable based popcount function
Removed Outpost tables; replaced with array for bishop/knight of [phase][defendedByPawn]. Added OutpostRanks mask for determining outpost squares.
Almost completely rewrote the evaluation function.
Added Mobility for Knights
Removed old arrays for Bishop/Rook mobility (that used to cause arrayOutOfBounds issues..) and replaced with tables for each piece. MobilityRook[phase][mobCount]...
Additionally, mobilityCount is obtained from the popcount of valid attacks, in a defined mobility area.
Mobility area is all squares but enemy pawn attacks, friendly blocked pawns, and friendly king location. (Taken from Stockfish)
Added a simple form of king safety, using a safetyTable lookup system, with weights for attacking pieces. (Table taken from Stockfish)
Added Benchmarks for 1s, 5s, and 10s to the Benchmark files
+22.2 ELO on 1s+.01s
+24.0 ELO on 5s+.05s
+42.5 ELO on 10s+.1s
Ethereal has historically played much worse on longer time controls, as a result of a strong search and weak evaluation. I expect Ethereal to play even stronger than +42.5 ELO when used on longer time controls, (CCRL 4/40, CCRL 40/40, and Graham's Tournaments)