minimize(method=’SLSQP’)#
- scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
使用序列最小二乘规划 (SLSQP) 最小化一个或多个变量的标量函数。
- 参数:
- ftolfloat
停止准则中 f 值的精度目标。此值控制检查各种最优性条件的最终精度;拉格朗日梯度和约束违反的绝对和应低于
ftol
。同样,计算的步长和目标函数的变化也会根据此值进行检查。默认值为 1e-6。- epsfloat
用于 Jacobian 数值近似的步长。
- dispbool
设置为 True 以打印收敛消息。如果为 False,则忽略 verbosity 并将其设置为 0。
- maxiterint
最大迭代次数。
- finite_diff_rel_stepNone 或 array_like,可选
如果
jac in ['2-point', '3-point', 'cs']
,则用于 jac 数值近似的相对步长。绝对步长计算为h = rel_step * sign(x) * max(1, abs(x))
,可能会调整以适应边界。对于method='3-point'
,h 的符号将被忽略。如果为 None(默认值),则自动选择步长。- workersint, 类似 map 的可调用对象,可选
一个类似 map 的可调用对象,例如 multiprocessing.Pool.map,用于并行评估任何数值微分。此评估以
workers(fun, iterable)
的形式执行。在 1.16.0 版本中新增。
- 返回:
- resOptimizeResult
优化结果表示为
OptimizeResult
对象。在此类似字典的对象中,以下字段尤为重要:x
解决方案数组,success
一个布尔标志,指示优化器是否成功退出,message
描述终止原因,以及multipliers
包含用于求解原始非线性问题的 QP 近似中的 Karush-Kuhn-Tucker (KKT) 乘子。参见下面的Notes
。另请参见OptimizeResult
以获取其他属性的描述。
备注
KKT 乘子作为 NumPy 数组在
OptimizeResult.multipliers
属性中返回。用meq
表示等式约束的维度,用mineq
表示不等式约束的维度,则返回的数组切片m[:meq]
包含等式约束的乘子,其余的m[meq:meq + mineq]
包含不等式约束的乘子。不返回对应于边界不等式的乘子。有关如何解释这些乘子的说明,请参见 [1] 第 321 页或 [2]。内部 QP 问题是使用 [3] 第 25 章中给出的方法求解的。请注意,如果使用了新式
NonlinearConstraint
或LinearConstraint
,则minimize
会首先将它们转换为旧式约束字典。单个新式约束可能同时包含不等式约束和等式约束。这意味着如果单个约束中存在混合,则返回的乘子列表的长度将与原始新式约束的长度不同。参考文献