views:

318

answers:

2

The GNU Scientific library has a multi-dimensional function minimization framework. However, its caveats explicitly says that when used on a function with several different local minima it just returns one arbitrary solution. Does anybody know how you might go about adapting it so that it would return a list of all local minima (subject to some threshold criteria)?

+1  A: 

It's not based on GNU Scientific, but I found this algorithm for finding all local minima: http://www.cs.uoi.gr/~lagaris/papers/MINF.pdf

andygeers
+1  A: 

Any standard optimization algorithm looks for a local minumum somewhere "close" to the starting point, either chosen by itself or provided by you. Finding all local minima can be a non-computable problem because you can have an infiniten number of them, even in a finite range (e.g. f(x) = [ cos(1/x) ]^2 has an infinite number of local minima in a (0, 1] range). Assuming you have a finite number of local minima, finding all of them is a more complex task than finding a global minimum, which in turn is a much more difficult problem than finding a local minimum somewhere near to you. There is no simple way of adapting local optimization algorithms to find global minima. Even popular algorithms to find a global minimum, such a genetic algorithsm/evolution strategies, do not guarantee that they visit all local minima. In fact, they are trying to avoid it.

The best way to use GSL in this situation would be to look at the minimized function and try to guess where the minima should be and then look for them using the GSL code.

quant_dev