JuliaOpt/Optim.jl — pull request #72 by Ken-B (2014-07-27 06:16:52+00:00)
Title: MinFinder: locating all local minima of a function

For problems where you need to find all local minima, I've implemented the MinFinder algorithm from Tsoulos and Lagaris, 2006. It works for differentiable functions inside a bounded domain by using `fminbox` on a series of sample points. It is like a multistart procedure, except that during each iteration you validate the sample points based on their location and gradient against each other and against already located minima. It comes with a stochastic stopping criteria called Double Box (see the paper).

It includes documentation in the readme and tests. This is my very first pull request and my first serious julia program, so any feedback is most welcome. I will of course be willing to provide future support for this in Optim.

If people here think this should not be in Optim, no problem, I can put it in a separate package.

Some remarks:
* It uses the `fminbox` function and thus the function defintion/API from `cgdescent`. It is unclear to me what the status or plans are for Optim.jl regarding the 2 distinct function API's and if I have chosen the right one.
* I use a parameter `distmin` to determine whether a newly found minimum is equal to an already found minimum as a threshold to their dot product. I've set this level ad hoc as the sqrt of the search tolerance level, but any suggestion for a better one is appreciated.
* I want to add the possibility to perform the local searches in parallel, but I have no experience in this and find the julia docs a bit confusing on this point. Any pointers or parallel examples in other packages are much appreciated.