A) The Auto-Elo mode in V4 does not work correctly.
It can be selected and configured through the menu, but afterwards the engine still calculates with its maximum strength.
The following error message appears in the log file:
ERROR engine - _engine_rating: invalid option set for UCI_Elo=((1566 / 50 + 1) * 50), exception=unsupported operator: Div
Maybe someone can help identify the cause of this problem.
B) Suggestion for improvement
In both versions, the rating value in Auto-Elo mode is reduced down to 0. As a result, at some point the Elo value no longer changes, even if all games are won or lost. This is probably not what the developer or the user intended.
In my opinion it would be better to set a lower limit for the rating value, for example 25 or 30. This would ensure that the engine’s Elo rating could still change by about ±2 points per game.
For my own setup I solved this issue as follows:
def _save_rating(self, new_rating: Rating):
write_picochess_ini("pgn-elo", max(500, int(new_rating.rating)))
write_picochess_ini("rating-deviation", max(26, int(new_rating.rating_deviation)))
There are certainly better and more elegant solutions.