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.
- DolphinDB
fminprovides the same functionality as scipy.optimize.fmin. The main difference is the return format: DolphinDBfminreturns a dictionary containing xopt, fopt, iterations, fcalls and warnFlag , whilescipy.optimize.fminreturns 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
*/
