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 章中给出的方法求解的。

请注意,如果使用了新式 NonlinearConstraintLinearConstraint,则 minimize 会首先将它们转换为旧式约束字典。单个新式约束可能同时包含不等式约束和等式约束。这意味着如果单个约束中存在混合,则返回的乘子列表的长度将与原始新式约束的长度不同。

参考文献

[1]

Nocedal, J., and S J Wright, 2006, “数值优化”, Springer, New York。

[2]

Kraft, D., “序列二次规划软件包”, 1988, 技术报告 DFVLR-FB 88-28, 德国航空航天中心, 德国。

[3]

Lawson, C. L., and R. J. Hanson, 1995, “求解最小二乘问题”, SIAM, Philadelphia, PA。