In short, there is a small fixed penalty for pieces that are undefended but not attacked. There is penalty proportional to the piece value for pieces that are attacked but not defended and a smaller penalty (still proportional to the value of the piece) for pieces that are defended but attacked by a piece of lower value.
Although my motivation for adding the term is problems in Capablanca, my first test was a self-play match in regular chess. The results:
Code: Select all
Rank Name Elo + - games score oppo. draws
1 Sjaak 312M-hanging 2116 10 10 3196 54% 2084 23%
2 Sjaak 312 2084 10 10 3196 46% 2116 23%
However, the next stage of testing was to do the same thing for Spartan chess:
Code: Select all
Rank Name Elo + - games score oppo. draws
1 Sjaak 312 2131 16 16 1538 58% 2069 10%
2 Sjaak 312M-hanging 2069 16 16 1538 42% 2131 10%
To me, this is entirely unexpected. I'm not sure what causes this difference (last time I saw something like this I had a problem where one version of the program was crashing, resulting in a massive amount of time-losses, this is not the case now) and I'm not sure what to do with it. An ugly option is to tune the evaluation for each variation separately, but I'd rather not do that.
Two things are different between the testing for normal chess and Spartan chess. First of all, for normal chess, I start from different opening positions. For Spartan I don't have a set of opening positions, so the engine has to figure it out on its own. Second of all, the evaluation of passed pawns is broken for the Spartan hoplite pawns, but it is exactly the same in the two versions, so I wouldn't expect this to make a difference.
Thoughts?
