Skip to content
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

Add some notes in the docs about global minimization #639

Open
santosmv opened this issue Apr 9, 2021 · 4 comments
Open

Add some notes in the docs about global minimization #639

santosmv opened this issue Apr 9, 2021 · 4 comments

Comments

@santosmv
Copy link

santosmv commented Apr 9, 2021

Hello,
I have looked at the documentation, but it was not so clear for me (as a beginner) whether iminuit MIGRAD is able to find a global minimum or a local one. If it finds the global minimum, could it be local any time?
Any clue will be very helpful.

Best regards

@HDembinski
Copy link
Member

HDembinski commented Apr 12, 2021

MIGRAD and any other hill-climbing algorithm only finds a local minimum. Where did you look for this information in the docs? I am happy to add a sentence there explaining this.

@santosmv
Copy link
Author

Hi Hans,
Mainly in the Reference guide: https://iminuit.readthedocs.io/en/stable/reference.html
The migrad section directs us to Minuit paper, in which discusses about global minimum search, but has the iminuit the functionality to find the global minimum (described in the paper)?

Thanks!

@HDembinski
Copy link
Member

HDembinski commented Apr 13, 2021

Ok, I see now what you mean. No the "IMPROVE" algorithm is not implemented in MINUIT2 at all (only in original MINUIT in Fortran). The enthusiasm of the paper is misguided about this method. To me, it sounds like a terrible idea to find a global minimum. If you need global optimization, I would recommend to use one of the algorithms in libnlopt or scipy. Note that global optimization still has no unique solution. There is not one best algorithm for doing it. There are many heuristic algorithms out there. Generally there are no proofs that they find the global minimum in finite time or that one particular algorithm is faster than all the others. There are the no free lunch theorems which say that an algorithm with performs well in some class of problems must pay with worse performance in other classes of problems.

In practice, the algorithms in scipy and nlopt probably work ok. You can use one of those algorithms and then start Minuit with that solution.

@HDembinski HDembinski changed the title Is the minimization a global one? Add some notes in the docs about global minimization Apr 13, 2021
@santosmv
Copy link
Author

Got it. Thank you for the explanation, it was enlightening to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants