desc.optimize.fmintr
- class desc.optimize.fmintr(fun, x0, grad, hess='bfgs', bounds=(-inf, inf), args=(), method='exact', x_scale='hess', ftol=1e-06, xtol=1e-06, gtol=1e-06, verbose=1, maxiter=None, callback=None, options=None)Source
Minimize a scalar function using a (quasi)-Newton trust region method.
- Parameters:
fun (callable) – objective to be minimized. Should have a signature like fun(x,*args)-> float
x0 (array-like) – initial guess
grad (callable) – function to compute gradient, df/dx. Should take the same arguments as fun
hess (callable or
'bfgs', optional:) – function to compute Hessian matrix of fun, or'bfgs'in which case the BFGS method will be used to approximate the Hessian.bounds (tuple of array-like) – Lower and upper bounds on independent variables. Defaults to no bounds. Each array must match the size of x0 or be a scalar, in the latter case a bound will be the same for all variables. Use np.inf with an appropriate sign to disable bounds on all or some variables.
args (tuple) – additional arguments passed to fun, grad, and hess
method (
'exact','dogleg'or'subspace') – method to use for trust region subproblem. ‘exact’ uses a series of cholesky factorizations (usually 2-3) to find the optimal step. dogleg approximates the optimal step using Powell’s dogleg method. ‘subspace’ solves a reduced subproblem over the space spanned by the gradient and newton direction.x_scale (array_like or
'hess', optional) – Characteristic scale of each variable. Settingx_scaleis equivalent to reformulating the problem in scaled variablesxs = x / x_scale. An alternative view is that the size of a trust region along jth dimension is proportional tox_scale[j]. Improved convergence may be achieved by settingx_scalesuch that a step of a given size along any of the scaled variables has a similar effect on the cost function. If set to'hess', the scale is iteratively updated using the inverse norms of the columns of the Hessian matrix.ftol (float or None, optional) – Tolerance for termination by the change of the cost function. The optimization process is stopped when
dF < ftol * F, and there was an adequate agreement between a local quadratic model and the true model in the last step. If None, the termination by this condition is disabled.xtol (float or None, optional) – Tolerance for termination by the change of the independent variables. Optimization is stopped when
norm(dx) < xtol * (xtol + norm(x)). If None, the termination by this condition is disabled.gtol (float or None, optional) – Absolute tolerance for termination by the norm of the gradient. Optimizer terminates when
max(abs(g)) < gtol. If None, the termination by this condition is disabled.verbose ({0, 1, 2}, optional) –
0 (default) : work silently.
1 : display a termination report.
2 : display progress during iterations
maxiter (int, optional) – maximum number of iterations. Defaults to size(x)*100
callback (callable, optional) –
Called after each iteration. Should be a callable with the signature:
callback(xk, *args) -> boolwhere
xkis the current parameter vector, andargsare the same arguments passed to fun and grad. If callback returns True the algorithm execution is terminated.options (dict, optional) – dictionary of optional keyword arguments to override default solver settings. See the code for more details.
- Returns:
res (OptimizeResult) – The optimization result represented as a
OptimizeResultobject. Important attributes are:xthe solution array,successa Boolean flag indicating if the optimizer exited successfully.