sho@tybalt.caltech.edu.UUCP (01/29/87)
I've been trying to write an extremum finder in C for a while now, with no success. The routine accepts initial values for an array of coefficients and a pointer to a function, and searches for the nearest local minimum using a gradient search on the coefficients. Seems simple, right? Well, no. I've been having all sorts of problems, and I don't know what to do. If any of you have written something similar, please let me know. (Esp. if you have an extremeum finder that finds the *absolute* minimum/maximum!) -Sho Hurm.
braner@batcomputer.UUCP (02/11/87)
[] GLOBAL minimization is a very hard problem. How do you avoid missing a very narrow trench? Check all points on a very fine grid? In 20 dimensions? Pessimism aside, I use the routine called 'Powell', in the book 'Numerical Recipes' (by Press et al, Cambridge U. Press, 1986). It does not use derivatives, and seems reasonably robust for the very nonlinear functions of many (from 3 to 20) variables I try to minimize. (I use it for maximum-likelihood estimation of parameters.) (I had to modify it a bit, though: changed the parametrization in 'Linmin' so that the best guess of the minimum is at 1, not 0. If it happens to be at 0, 'Brent' iterates for a long time since it measures _relative_ error. Also note that the order of the parameters in the initial direction set is VERY critical for successful use of the algorithm, and the best order depends on your specific function!) - Moshe Braner