release of Ethereal9.00, but I think I have made enough gains since
to warrant a new release. I've made a fair number of improvements with
the evaluation, as well as the tuning process behind it. Some search
changes have been made, but mostly speedups and a few parameter tweaks.
As for SMP, nothing has been changed, although not for a lack of trying.
Time management has been as issue as well, or so was reported to me when
watching some of Graham's tournament games. I have made one fix which
should help that issue out, but nothing too ground breaking.
The release on Github can be found here, and has a Win64 and android binary.
Win64 binary is non-popcount and non-bmi2, so I expect it to work for everyone.
https://github.com/AndyGrant/Ethereal/r ... /tag/V9.30
Since Ethereal9.00 I've had some help from someone named Laldon, a
follower of TCEC. He provided a great deal of CPU power for some of
these tuning sessions, and identified a very large bug in the Tuner.
He has given me a handful of other patches to try, mostly dealing with
imbalances. We've not gotten them to work yet, but his input and his ideas
are very valuable. Patches that he submitted, or that he suggested /
played a role in are marked in the change log with a *
Some results to give an idea of how much stronger Ethereal is now.
I expect many of the lowest time control scores to be inflated. I
made many changes which provide reasonable speedups, which of course
scale away as the time control increases.
Code: Select all
Ethereal 9.30 vs Ethereal 9.00: 450 - 182 - 368 [0.634] 1000 +95 @5s.05s 1-CPU 2MB-HASH
Ethereal 9.30 vs Ethereal 9.00: 375 - 153 - 472 [0.611] 1000 +78 @20+.2s 1-CPU 8MB-HASH
Ethereal 9.30 vs Laser1.5: 384 - 308 - 308 [0.538] 1000 +26 @5s.05s 1-CPU 2MB-HASH
Ethereal 9.30 vs Laser1.5: 408 - 400 - 442 [0.503] 1250 + 2 @20+.2s 1-CPU 8MB-HASH
Code: Select all
9.01: * Tuning patch for all non King Safety evaluation parameters
9.02: Use a smarter form of pseudo legal move generation
9.03: * Another Tuning patch for all non King Safety parameters
9.04: Cleanup the tuner to allow it to be used more easily (non functional)
9.05: Fix a bug caused by 9.04 (Lied about it being non functional)
9.06: * Tuning using a massive depth 9 search for all non King Safety
9.07: Include the King in the Pawn hash (now PawnKing hash), speedup
9.08: Only update one bound on a fail high or fail low at root
9.09: Only apply RookOnSeventh when the enemy king is on the back 2 ranks
9.10: * Fix a problem where the tuner could miss-label positions as drawn
9.11: Reduce ProbCut margin from 200 cp to 140cp
9.12: * Another tuning patch using depth 10 (Due to 9.10 bug fix)
9.13: Reduce tempo from {20,10} -> {16, 8}
9.14: Before it took two attacking pieces to trigger the King safety
evaluation. Now it only takes 1, if the attacking piece is a Queen.
Also, reduce the threat by pawns in the king safety calculation
9.15: Scale up all internal values so that the pawn value is 100. Before
the pawn value was around 60, which was annoying since we all deal
in centipawns. Also, make the average of each PSQT zero.
9.16: Tune back some of the pruning values after 9.15
9.17: Fixed a slight move gen bug which caused slowdowns, not illegal moves
9.18: * Remove evaluation of BishopWings (Bishop with pawns on King and Queen side)
9.19: Cleanup my simple SEE version called WeakCapturePruning
9.20: Fix typo in reporting promotion moves caused by 9.19
9.21: Speedup by skipping all quiet moves once we identify that we will skip all
9.22: Probe the Trans Table before going into qsearch. I do not probe the
table while in qsearch.
9.23: Ethereal will not take Trans Table exits in PvNodes. However, since Ethereal
does not treat PvNodes differently in qsearch, we WILL take Trans Table exits
if we would otherwise descend into qsearch.
9.24: Allow Ethereal to respect the 'stop' and 'quit' command while searching. I
never did this before since no one uses Ethereal for analysis, but since I
have started doing that while following TCEC, perhaps others might as well
9.25: The tuner will take a position, generate an eval based on a depth N search,
and then use the evaluation weights from the end of the PV generated by the
depth N search. This causes problems since Evaluation is about the potential
in a position, not the outcome. So now we get the weights from a qsearch instead
9.26: Penalty for missing pawns in the King Area when doing the King Safety evaluation,
which is separate from the King Shelter evaluation.
9.27: Define the King Safety by a polynomial instead of an array. This passed as
a non-regression. I hope to change the grain of the king safety, and a poly allows that
9.28: Remove something I coined scoreStability from the time management system. Similar
to how SF defines PV stability, scoreStability reacts to changes in the score,
which then define time allocations and deallocations
9.29: Before we would penalize a queen for being attacked by a King. That clearly has
some issues with it, so it has been removed. Also, fixed a bug where we would
only evaluation a queen as being attacked by a pawn if the queen was in the
king area of the opposing side of the queen
9.30: Fixed an issue where if the first move tried resulted in being check mated,
we might prune all other moves, and return a false MATED score. I noticed
a somewhat similar issue in Laser, but overlooked my own issue. Jeffrey was
able to pass a test for Laser with the fix, which convinced me to look deeper.
As always, a big thank you to the testers.
As well as those who have provided feedback on Ethereal's playing style.