Page 1 of 1

Using Fairy-Max to determine value of a Guard

PostPosted: 04 Feb 2017, 04:48
by vickalan
(due to a change of topic, I'm continuing "need help with Fairy-Max" to this thread)

Testing a Guard (also called man) using asymmetry [(Bishop + Knight) vs. (2 Guards)] with starting setup:

R N N B Q K B B N R (extra knight and extra bishop)
R N G B K Q B G N R (2 added guards)

After 64 games, the pair of guards is scoring 43.8% vs. bishop and knight.

(the guards have a slight disadvantage in these games because their value is not perfectly known, whereas the other side has all pieces with well-established values).

Before I continue running a longer sequence of games, how do I know that Fairy max doesn't keep playing the same game over and over?

If it's strictly rule-based, and playing best possible, wouldn't the same set-up keep playing the same game?

If some randomness is introduced, how much does this detract from the best found play?

Any comments from HGMuller or others is appreciated. :)

Re: Using Fairy-Max to determine value of a Guard

PostPosted: 04 Feb 2017, 13:21
by H.G.Muller
Fairy-Max randomizes the first 8 half-moves, by adding a random value of upto half a Pawn to every move in the root. This will certainly lead to sub-optimal opening play (like 1. a4 in orthodox Chess), but both sides will suffer from that. After that the only randomization can come from timing, when the decision to start a next depth iteration is critically close to the time-out for this, and this deeper iteration would change move.

If you play a large number of games, there probably will be some duplicats, (which I never worry about). But the diversity from the opening randomization is usually good enough. Note that when it plays transpositions, or even exactly the same line with slightly differet random scores added (but not different enough to affect the move choice), it might still play different moves later, because the hash-table content is different. Chess with a hash table seems to be a 'chaotic' process, where even a tiny alteration of the hash table will grow exponentially, and eventually dominate the process.

If I really want to be precise I just take more different start positions (permuting the pieces on the back rank). In principle WinBoard is able to use a set of different start positions, in a *.fen position file (which you can specify in the Tournament Options dialog). But for engine-defined variants (like 'fun01') this unfortunately does not work (yet), because there apparently is a conflict between the position supplied by the engine and those from the file. So to do that you would still have to use the older method of configuring WinBoard for the variant by hand (instead of relying on Fairy-Max to do it). For this you would have to make a *.xop file with WinBoard options to define the variant, like

Code: Select all
-variant capablanca
-pieceToCharTable "PNBRQ..AC.GKpnbrq..ac.gk"
-loadPositionFile startpos.fen
-loadPositionIndex -1
-rewindIndex 8

where the file startpos.fen would contain 8 positions (one FEN per line), through which WinBoard would cycle. (Position index -1 means automatic stepping.) The FEN can use a piece called G because of the pieceToCharTable you specified. I then often alternate color-reversed positions in the file, so that the same engine will always have the same pieces, and the match result of the players directly reflects the performance of the pieces. (I guess you could have set the last 3 options from the Tournament Options dialog as well, but there is no way to set the pieceToCharTable interactively,so you would need a .xop file anyway, and then it is more convenient to define the posiiton file in it as well, because this is not a persistent option.)

You then would have to add a definition of the G piece to that of Capablanca Chess in the fmax.ini file.

When you drag the .xop file on top of the winboard.exe icon, it will start XBoard with the settings specified in it.

vickalan wrote:After 64 games, the pair of guards is scoring 43.8% vs. bishop and knight.

(the guards have a slight disadvantage in these games because their value is not perfectly known, whereas the other side has all pieces with well-established values).

Note that on 10x8 boards the piece values are not the same as on 8x8, and in particular the Bishop gains in strength (probably because on wider boards its forward moves more often hit the opponent rather than an edge). So you would have to use the Capablanca piece values for the orthodox pieces. You result already indicates 2G < B+N, and the magnitude of the effect suggests G ~ N. You can try with G values slightly above and below that of N. In my experience that hardly would affect the match results, as long as both players use the same value.