-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement basic wrapper to ROOT Minimizer function #13
Comments
Work is well under way. A wrapper to libcmaes is being integrated straight into ROOT in order to provide the exact same capabilities today provided by package minuit2. See pictures below for basic usage output on fitting Gaussians adapted from an existing test file for Minuit2 from ROOT. |
In order to watch development on integration into ROOT, please watch the following repository: |
Is it correct that standard deviations are 0 for CMA-ES results? |
The time difference (factor 4) is (more) due to different number of calls to fitness function or internal time complexity per function evaluation? |
I don't know yet but it appears that CMA-ES does not fit the function very well most of the time, so more investigation is needed. On the other side, Minuit2 and Fumili do fit it properly on all trials I've run. I am not controlling the initial parameters yet, so it may be a first direction for investigations. I've ruled out some others. |
If it is 1-D, then it might be useful to plot objective function in the whole range, say with 10000 points uniformly distributed from xmin to xmax, if possible then to have CMA-ES points from one run depicted with a different color. |
It's actually a 6-D fit over a 1-D histogram. I was able to reproduce outside of ROOT. I've added it as an example on a branch (for now, we may want to merge examples like this one in master later on). See commit 7a191f9 The example fits a 3-D lorentz peak function + 3-D 'background' function over a set of 201 points (in file lorentzpeakbench.dat). These points were randomly generated with ROOT, and the fit uses a modified least-squared Chi2 function. This is a simplified example from the one plotted yesterday, and I simplified it within ROOT as well so that results exactly match with each others. To compile this branch and run the example:
The correct minimum, as always found by Minuit, is a Chi2 of 235.355. Re-run multiple times in order to see CMA-ES getting stuck elsewhere or finding the minimum. I haven't played with CMA-ES parameters yet. This is using the out-of-the-box values, which is fair as this is what Minuit does as well (though the initial values may very certainly differ...). EDIT: here is a successful run typical output:
EDIT2: visual of typical failed output (from ROOT): |
I've added parameter control from the command line. Obviously, increasing lambda yields much better success rate, e.g.
appears to succeed most of the time. |
I consider the basic wrapper is now complete. and new developments, bug fixes and updates are now here: |
Wrapper to http://root.cern.ch/drupal/
The text was updated successfully, but these errors were encountered: