fmin

Syntax

fmin(f, X0, [fargs], [xtol=0.0001], [ftol=0.0001], [maxIter], [maxFun])

Details

Use a Nelder-Mead simplex algorithm to find the minimum of function of one or more variables. This algorithm only uses function values, not derivatives or second derivatives.

Note:
  • DolphinDB fmin provides the same functionality as scipy.optimize.fmin. The main difference is the return format: DolphinDB fmin returns a dictionary containing xopt, fopt, iterations, fcalls and warnFlag , while scipy.optimize.fmin returns only xopt by default and returns full optimization information when full_output=True.
  • numpy.fmin is completely different from the other two. It is not an optimization function; instead, it returns the smaller value from two arrays element by element.

Parameters

func is the objective function to be minimized. The function must return a numeric scalar.

X0 is a numeric scalar or vector indicating the initial guess.

xtol (optional) is a positive number specifying the absolute error in xopt between iterations that is acceptable for convergence. The default value is

ftol (optional) is a positive number specifying the absolute error in func(xopt) between iterations that is acceptable for convergence. The default value is 0.0001.

maxIter (optional) is a non-negative integer indicating the maximum number of iterations to perform.

maxFun (optional) is a non-negative integer indicating the maximum number of function evaluations to make.

Returns

It returns a dictionary with the following keys:

  • xopt: a vector of floating-point numbers, indicating parameter that minimizes function.

  • fopt: a floating-point number, indicating value of function at minimum: fopt = f(xopt).

  • iterations: an integer, indicating number of iterations performed.

  • fcalls: an integer, indicating number of function calls made.

  • warnFlag: an integer that takes the following values

    • 0: Optimization algorithm completed.

    • 1: Maximum number of function evaluations made.

    • 2: Maximum number of iterations reached.

Examples

In the following example, we define a function f(x) and use the Nelder-Mead simplex algorithm to find its minimum value.

def f(x) {return x*x}
fmin(f, 1)
/* Ouput:
xopt->[-8.881784197001252E-16]
fopt->7.888609052210119E-31
iterations->17
fcalls->34
warnFlag->0
*/