Closed thurinj closed 8 months ago
Julien, It appears the request includes CMA-ES (very useful) as well as many other changes that I'm just starting to go through. Thanks for your patience as myself and others I work with get into the details. Looking forward to discussing at the next AFRL project meeting. -Ryan
Will cancel this PR and restructure.
Here is a brief list of the main contributions of this pull request:
I have made a lot of tests and integrated feedback from @SeismoFelix and @ammcpherson who helped test an earlier version of the CMA-ES implementation.
The CMA-ES solver has been tested with several data groups and polarity misfits. It includes the option to balance the contribution of each waveform group that is given as input (and will otherwise default to normalize each misfit contribution by the data norm).
It is initialized with the following:
which uses most of the default MTUQ objects. The solve method will perform 60 CMA-ES iterations, with a population of 48 samples/mutants to evolve, and plot waveform misfit and misfit map every 10 steps along the way. The misfit map is updated by the new one rather than being kept on disk.
If you want to be more specific with your result processing, it is possible to return the whole CMA-ES history of samples with the following:
which returns a similar object to the random grid search solutions (
mtuq.grid_search.MTUQDataFrame
) and is thus compatible with other base functions in the code.(The fork was open for PR earlier today but an mpi4py error prevented the tests to pass and it was discarded for this updated version. I added a check in code that should help with the tests.)