by H.G.Muller » 03 Nov 2016, 20:49
Sorry for the tardy response; I normally do not read this forum section.
And yes, for normal Chess Fairy-Max is essentially micro-Max 4.8. The main difference is that the move-generator tables that describe how the pieces move are not in the code as initialized data, but are read from a file (fmax.ini). There is a whole lot of code added to do that, without any attempt to minimalize it, but that is all in the interface part, not in the AI (which basically consists only of the Search routine D()).
The code of that search routine has been extended by some 40%, but only to be able to handle more complex pieces than plain sliders and leapers, and for orthodox Chess this is just overhead that perhaps slows down the node rate by a few percent. (But 1% of speed is approximately 1 Elo only.) A compensation is that the Pawn double-moves are handled in a different way from micro-Max, also to be able to generalize to other pieces that have extra initial moves: the initial double push is now treated as a separate move 'direction' from the single push, and in the game description is defined first. This conveys a slight advantage: in micro-Max Pawn double pushes could not be hash moves, because then they would fail to set the e.p. flag. So if a Pawn double-push was best, there was no hash move, indicated by invalidating the to-square of that move. But move generation would still start with the piece on the from-square, i.e. the Pawn. So in micro-Max the double push would then be generated second, after the single push. But in Fairy-Max it would be generated first, so the fact that it could not be hash move does not hurt at all. This should more than make up for a potential slowdown by the generalization.
I should say that the Fairy-Max I bundle with WinBoard is a simple gcc compile that I make myself under Cygwin, while the micro-Max tested by CCRL was a special PGO optiomized executable made by Denis Mendoza, which is 1.75 times faster. That would make it some 60 Elo stronger. But Fairy-Max is open source, and anyone interested in squeezing every Elo out of it could make his own fast compile. (But why would they? There are other engines, which are 1000 Elo stronger...) The goal of Fairy-Max is to make an entertaining but beatable opponent to play against in all kind of Chess variants.