On 7/23/09 Jaroslav Hajek wrote: >> BTW, I find it confusing that optimization functions are split >> between >>> Octave and the octave-forge package. At one point, I thought >>> there was a plan to keep associated functions together, either >>> all in Octave or in the appropriate octave-forge package. I >>> guess the split remains more development oriented: polished >>> functions make it to Octave where as rough contributions remain >>> in octave-forge. >>> >>> > > Er, not really. Yes, the dev status is a factor; for instance, source > must conform to Octave guidelines. However, it's also about what is > more and what is less common. For instance, you have linear algebra > in the core, but you also have other advanced linear algebra in > packages. It's the same with optimization; I don't see what's > confusing on that. > > My intent was to bring to core Octave the 1D equation solver / > optimizer (fzero / fminbnd) and the local unconstrained > solver/optimizer (fsolve / fminunc). These both use established > techniques - bracketing + inverse interpolation in 1D, and local > Newton/BFGS iterations with trust-region step limiting and factorized > updating (Broyden/BFGS). There's a lot of similarity between the > fsolve and fminunc code. Both are designed for small-to-medium-size > problems (they use full matrices), and are local iterative methods. > Starting from a sufficiently good initial guess, with a smooth, > reasonably behaved problem, these methods will probably work well. > > The optim package, on the contrary, should provide a variety of other > methods, for expert usage and more difficult problems, with > bound/linear/equality/inequality constrants, noisy functions, etc. It > is believed amongst numerical analysts that there is no single best > method, so there's no problem if optim contains competing methods. > > I encourage you to use the fminunc from core if local unconstrained > search is enough for your purposes. So far it didn't get much > testing, so don't be too surprised if problems arise, but I hope it > will improve over time, when real usage is seen.
OK, seems reasonable. Are you planning to move fminbnd over to Octave sometime soon? I am rather pragmatic and can work with this approach. However, let me make a couple points you might consider. Matlab provides all of its optimization functions in the optimization toolbox; none are provided in core Matlab. I am sure they do this for monetary reasons (to sell more overpriced toolboxes), but folks migrating to Octave might get a little confused. Also, some of the Matlab optimization functions, e.g. fminunc, are not algorithm specific. The algorithm used depends on a passed option and/or the nature of the problem (detected internally by the function). This was sort of the philosophy used for the old fminunc in octave-forge. If we wanted to emulate this behavior, and I personally like the idea, then all the supported algorithms would need to be co-located with the fminunc function. Anyway, that's my 2 cents. Jonathan ------------------------------------------------------------------------------ _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev