Minimize a function using modified Powell’s method. This method only uses function values, not derivatives.
Parameters : | func : callable f(x,*args)
x0 : ndarray
args : tuple, optional
callback : callable, optional
direc : ndarray, optional
xtol : float, optional
ftol : float, optional
maxiter : int, optional
maxfun : int, optional
full_output : bool, optional
disp : bool, optional
retall : bool, optional
|
---|---|
Returns : | xopt : ndarray
fopt : number
direc : ndarray
iter : int
funcalls : int
warnflag : int
allvecs : list
|
See also
Notes
Uses a modification of Powell’s method to find the minimum of a function of N variables. Powell’s method is a conjugate direction method.
The algorithm has two loops. The outer loop merely iterates over the inner loop. The inner loop minimizes over each current direction in the direction set. At the end of the inner loop, if certain conditions are met, the direction that gave the largest decrease is dropped and replaced with the difference between the current estiamted x and the estimated x from the beginning of the inner-loop.
The technical conditions for replacing the direction of greatest increase amount to checking that
References
Powell M.J.D. (1964) An efficient method for finding the minimum of a function of several variables without calculating derivatives, Computer Journal, 7 (2):155-162.
Press W., Teukolsky S.A., Vetterling W.T., and Flannery B.P.: Numerical Recipes (any edition), Cambridge University Press