最小化一个或多个变量的标量函数。
参数:
fun:callable目标函数要最小化。
fun(x, *args) -> float
其中x是具有(n,)形状的一维数组,而args是完全指定函数所需的固定参数的元组。
x0:ndarray, shape (n,)初步猜测。大小为(n,)的实数元素的数组,其中‘n’是自变量的数量。
args:tuple, 可选参数额外的参数传递给目标函数及其派生函数(fun,jac和hess函数)。
method:str 或 callable, 可选参数求解器类型。应该是其中之一
‘Nelder-Mead’ (see here)
‘Newton-CG’ (see here)
‘L-BFGS-B’ (see here)
‘trust-constr’(see here)
‘trust-ncg’ (see here)
‘trust-exact’ (see here)
‘trust-krylov’ (see here)
custom - a callable object (added in version 0.14.0),
see below for description.
如果未给出,则选择为以下之一BFGS,L-BFGS-B,SLSQP,取决于问题是否具有约束或界限。
jac:{callable, ‘2-point’, ‘3-point’, ‘cs’, bool}, 可选参数梯度矢量的计算方法。仅适用于CG,BFGS,Newton-CG,L-BFGS-B,TNC,SLSQP,dogleg,trust-ncg,trust-krylov,trust-exact和trust-constr。如果它是可调用的,则应该是一个返回梯度向量的函数:
jac(x, *args) -> array_like, shape (n,)
其中x是具有形状(n,)的数组,而args是具有固定参数的元组。或者,关键字{“ 2点”,“ 3点”,‘cs’}选择用于梯度的数字估计的有限差分方案。选项“ 3点”和‘cs’仅对“ trust-constr”可用。如果jac是布尔值且为True,则假定fun与目标函数一起返回梯度。如果为False,则将使用“两点”有限差分估算来估算梯度。
hess:{callable, ‘2-point’, ‘3-point’, ‘cs’, HessianUpdateStrategy}, 可选参数计算黑森州矩阵的方法。仅适用于Newton-CG,狗腿,trust-ncg,trust-krylov,trust-exact和trust-constr。如果可调用,则应返回黑森州矩阵:
hess(x, *args) -> {LinearOperator, spmatrix, array}, (n, n)
其中x是(n,)ndarray,而args是具有固定参数的元组。只有“ trust-constr”方法才允许使用LinearOperator和稀疏矩阵返回。另外,关键字{“ 2点”,“ 3点”,‘cs’}选择用于数字估计的有限差分方案。或者,对象实现HessianUpdateStrategy界面可用于近似Hessian。实现此接口的可用quasi-Newton方法是:
每当通过finite-differences估算坡度时,就无法使用选项{'2-point','3-point',‘cs’}估算Hessian,而需要使用quasi-Newton策略之一估算。 Finite-difference选项{“ 2点”,“ 3点”,‘cs’}和HessianUpdateStrategy仅适用于“ trust-constr”方法。
hessp:callable, 可选参数目标函数的Hessian乘以任意向量p。仅适用于Newton-CG,trust-ncg,trust-krylov,trust-c