scipy.optimize.fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None)[source]

Minimize a function using the downhill simplex algorithm.

This algorithm only uses function values, not derivatives or second derivatives.

Parameters :

func : callable func(x,*args)

The objective function to be minimized.

x0 : ndarray

Initial guess.

args : tuple

Extra arguments passed to func, i.e. f(x,*args).

callback : callable

Called after each iteration, as callback(xk), where xk is the current parameter vector.

Returns :

xopt : ndarray

Parameter that minimizes function.

fopt : float

Value of function at minimum: fopt = func(xopt).

iter : int

Number of iterations performed.

funcalls : int

Number of function calls made.

warnflag : int

1 : Maximum number of function evaluations made. 2 : Maximum number of iterations reached.

allvecs : list

Solution at each iteration.

Other Parameters:

xtol : float

Relative error in xopt acceptable for convergence.

ftol : number

Relative error in func(xopt) acceptable for convergence.

maxiter : int

Maximum number of iterations to perform.

maxfun : number

Maximum number of function evaluations to make.

full_output : bool

Set to True if fopt and warnflag outputs are desired.

disp : bool

Set to True to print convergence messages.

retall : bool

Set to True to return list of solutions at each iteration.

See also

Interface to minimization algorithms for multivariate functions. See the ‘Nelder-Mead’ method in particular.


Uses a Nelder-Mead simplex algorithm to find the minimum of function of one or more variables.

This algorithm has a long history of successful use in applications. But it will usually be slower than an algorithm that uses first or second derivative information. In practice it can have poor performance in high-dimensional problems and is not robust to minimizing complicated functions. Additionally, there currently is no complete theory describing when the algorithm will successfully converge to the minimum, or how fast it will if it does.


Nelder, J.A. and Mead, R. (1965), “A simplex method for function minimization”, The Computer Journal, 7, pp. 308-313 Wright, M.H. (1996), “Direct Search Methods: Once Scorned, Now Respectable”, in Numerical Analysis 1995, Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis, D.F. Griffiths and G.A. Watson (Eds.), Addison Wesley Longman, Harlow, UK, pp. 191-208.

Previous topic


Next topic