lucasart wrote:
Yes, definitely. A good example is your program Jazz 501. DoubleCheck scores +100 elo on my rating list, with a wide range of opponents, but against Jazz it scores badly, probably +20 elo no more. And when I look at the games, Jazz wins a lot of very long games, by endgame manouevers, whilst DoubleCheck wins very short games that are brutally tactical. So some search code may not be right in Jazz, and DoubleCheck is certainly missing a lot of chess knowledge that Jazz has...
Quite possibly. I made a number of search improvements/fixes in Sjaak, that I should possibly pull into Jazz as well (the two programs are very similar).
I do suspect that "something" is wrong with Jazz' search, but I've gone over it several times already and can't find anything obvious (Jazz search code is also a bit more complicated than it needs to be; perhaps that is the real thing I should fix).
Interesting that you mention Jazz' performance against DoubleCheck seems better than expected; I may give it a try. My main opponents for testing have been Beowulf and OliThink, but I have some issues starting Beowulf correctly from a setup position (it seems to not recognise castling properly, for some odd reason) and I haven't been able to figure out what to do to improve against OliThink. A new opponent may well give me a better idea.
But I really don't know where to start. My eval has the following features:
* material (including bishop pair) + piece on square tables
* mobility: linear and simple, but works well, and probably the best general purpose eval term IMO
* pawn structures, including passed pawns, and pawn shelters (some basic king safety)
* king attacks (very basic code explained in my previous post)
* rook and queens on 7th rank. this is not in the piece on square table, as I have a precondition (a la Fruit) to do it: only when opponent has pawns on 7hth rank or opponent king is on 8th rank)
Jazz does not really have mobility, what passes for mobility there is just a half-hearted attempt at it. However, it does have a lot of mobility-like conditions in its (dynamic) piece square tables, so that may compensate it somewhat.
Of the things you mention, Jazz has an extra evaluation term for candidate passed pawns, which was worth a fair amount when I tested it (a while back, the details are a bit hazy now). It does not have a "rook on the 7th" bonus as such, but it does have two generalised terms for that: cutting off the enemy king across a rank, and having a rook on the same rank as the base of the enemy pawn structure. No idea how much that is worth in practice though. Whenever I add a similar bonus for the queen, it tests as worse...
One thing I did invest time in is to have special-purpose code for common endgames. It's good to know that this really does seem to pay off (and not just in my own testing).