Now psqt.cpp can accommodate different material values per variant. For each variant, how many centipawns is each piece actually worth?
http://github.com/ddugovic/Stockfish/blob/master/src/psqt.cpp#L25
Also, revisit the nonPawnMaterial concept in order to properly calculate game phase, passed pawns, king danger, etc. Obviously nonPawnMaterial cannot be negative, but what's considered an endgame in chess might not be considered an endgame in variants.
I appreciate others' contributions for this issue!
A few more SPSA tuning sessions for variants with yet untuned piece values are currently running or queued. Due to the large number of games necessary for tuning this can however take days.
Regarding nonPawnMaterial, I now think it would be reasonable to use the absolute values of the variants' piece values and use arrays for Mid-/EndgameLimits. I would prefer to use absolute values instead of negating antichess piece values, because this would also change the meaning of SEE or the like.
Using positive values sounds like an excellent idea. (My latest tuning for crazyhouse razoring & futility did not pass LTC testing.)
Sorry for my delayed response.
The antichess piece values have changed a lot since my comment and I am not sure whether the idea would work well with the current values (e.g. considering the queen midgame value). For all other variants, switching to variant piece values would be less problematic, but it would probably require re-tuning of many values. At this stage I think it is difficult to make such a big change without temporarily losing elo in some variants.
I should probably simply test the proposed change to get an idea of the sign and magnitude of the change in playing strength for each variant.
If I knew what the code changes were, I could make them and then use the SPSA tuner until I find something which does not regress...
Sorry, what I meant is to use absolute values of the variant piece values instead of standard chess piece values to calculate nonPawnMaterial and to adjust MidgameLimit and EndgameLimit for each variant. MidgameLimit should be close to the sum of all piece values in the starting position, but I do not know how to determine a first estimate for EndgameLimit. Maybe something like a rook and a minor piece for both sides?
I have not done the code changes myself yet, so I can not share any code for this.
I've written some code and will keep experimenting with the tuner...
So far the tuner fails to suggest that MidgameLimit and EndgameLimit are inaccurate. Perhaps forthcoming evaluation changes (Horde material combinations) will change that.
Perhaps the evaluation parameters are tuned to fit the current limits. I think that atomic and crazyhouse are the most interesting variants for changes of the midgame and endgame limits, but you probably have better indications based on your tuning experiments. In atomic chess, minor pieces usually do not really change much in pawn endgames, and in crazyhouse the (late) endgame phase is very unlikely to be reached.
@ianfab LTC testing supports your theory:
LLR: -2.96 (-2.94,2.94) [0.00,10.00]
Total: 6308 W: 1927 L: 1924 D: 2457
http://35.161.250.236:6543/tests/view/591ac24b6e23db7f3bc38d37
I'll create a branch to simplify (remove variant-specific limits), then we may test the non-functional change...