[SciPy-dev] Brent's Principal Axis Algorithm

Eric Firing efiring at hawaii.edu
Tue Sep 8 20:28:42 EDT 2009


Robert Kern wrote:
> On Tue, Sep 8, 2009 at 12:44, Christoph
> Schmidt-Hieber<c.schmidt-hieber at ucl.ac.uk> wrote:
>> Dear all,
>> I've started a Google code project (http://code.google.com/p/pypraxis/) to provide a Python interface to Brent's principal axis algorithm. It's basically a wrapper around some Fortran code from http://www.netlib.org/opt/. Brent's algorithm minimizes a function of several variables without calculating derivatives - not to be mistaken for scipy.optimize.brent, that only performs single-variable minimization. The algorithm typically outperforms other derivative- and gradient-free algorithms (Brent, 2002; http://wwwmaths.anu.edu.au/~brent/pub/pub011.html). In my experience, it converges substantially faster than fmin and fmin_powell from scipy.optimize when fitting models with 5 to 15 free parameters to experimental data. Notably, Mathematica uses this algorithm for minimization without derivatives
>> (http://reference.wolfram.com/mathematica/tutorial/UnconstrainedOptimizationPrincipalAxisMethod.html).
>> I've provided some test cases and a wrapper that allow to compare it directly to the existing algorithms from scipy.optimize. Let me know if you think that the code could be a candidate for integration into scipy.optimize. It would obviously require some work to make it conform with the other functions that are already present.
> 
> That would be great! Unfortunately, there is no license attached to
> praxis.f, so it cannot be integrated into scipy until we find a
> suitably licensed implementation of the algorithm.
> 

http://wwwmaths.anu.edu.au/~brent/software.html

This seems to imply that the code may be used freely; but it wouldn't 
hurt to ask the author.

Eric



More information about the SciPy-Dev mailing list