CLOP never worked properly because it was hard to integrate the clop C++ code with fishtest. So, it's been removed.
On the bright side, Joona published spsa.pl
, which was a very elegant, and small framework for doing SPSA based tuning. It was exceptionally easy to integrate his SPSA logic into the framework, and so I've just enabled SPSA tests.
The SPSA parameters are well described by Joona's documentation (note, I swapped the order of the min and max columns from spsa.pl
, if you are familiar with that).
Column 0: Variable name (alphanumeric string)
Column 1: Variable initial value (float)
Column 2: Variable minimum value (float)
Column 3: Variable maximum value (float)
Column 4: Perturbation "ck" for the last iteration (float)
Column 5: Relative apply factor "Rk" for the last iteration (float)
To make it easy for the worker code, and avoid threading messes like we had with CLOP, I've had each worker play concurrency * 2 games as one SPSA iteration. I then collapse the final WLD score into the range -2..2. I think this is theoretically sound, but Id love to have someone with more math confirm :).
The code for processing SPSA is a bit spread around, but here are the main locations: