scipy.optimize.

fmin_slsqp#

scipy.optimize.fmin_slsqp(func, x0, eqcons=(), f_eqcons=None, ieqcons=(), f_ieqcons=None, bounds=(), fprime=None, fprime_eqcons=None, fprime_ieqcons=None, args=(), iter=100, acc=1e-06, iprint=1, disp=None, full_output=0, epsilon=1.4901161193847656e-08, callback=None)[源代码]#

使用序列最小二乘编程最小化函数

最初由 Dieter Kraft 实现的 SLSQP 优化子程序的 Python 接口函数。

参数:
func可调用对象 f(x,*args)

目标函数。必须返回标量。

x0浮点数的一维 ndarray

自变量的初始猜测。

eqcons列表,可选

长度为 n 的函数列表,使得在成功优化的问题中 eqcons[j](x,*args) == 0.0。

f_eqcons可调用对象 f(x,*args),可选

返回一个一维数组,其中每个元素在成功优化的问题中必须等于 0.0。如果指定了 f_eqcons,则忽略 eqcons。

ieqcons列表,可选

长度为 n 的函数列表,使得在成功优化的问题中 ieqcons[j](x,*args) >= 0.0。

f_ieqcons可调用对象 f(x,*args),可选

返回一个一维 ndarray,其中每个元素在成功优化的问题中必须大于或等于 0.0。如果指定了 f_ieqcons,则忽略 ieqcons。

bounds列表,可选

一个元组列表,指定每个自变量的下限和上限 [(xl0, xu0),(xl1, xu1),…]。无限值将被解释为大的浮点值。

fprime可调用对象 f(x,*args),可选

一个评估 func 的偏导数的函数。

fprime_eqcons可调用对象 f(x,*args),可选

一个 f(x, *args) 形式的函数,返回 m x n 的等式约束法线数组。如果未提供,将近似计算法线。fprime_eqcons 返回的数组大小应为 (len(eqcons), len(x0))。

fprime_ieqcons可调用对象 f(x,*args),可选

一个 f(x, *args) 形式的函数,返回 m x n 的不等式约束法线数组。如果未提供,将近似计算法线。fprime_ieqcons 返回的数组大小应为 (len(ieqcons), len(x0))。

args序列,可选

传递给 func 和 fprime 的其他参数。

iterint,可选

最大迭代次数。

accfloat,可选

请求的精度。

iprintint,可选

fmin_slsqp 的详细程度

  • iprint <= 0:静默操作

  • iprint == 1:完成后打印摘要(默认)

  • iprint >= 2:打印每次迭代的状态和摘要

dispint,可选

覆盖 iprint 接口(首选)。

full_outputbool,可选

如果为 False,则仅返回 func 的最小值(默认)。否则,输出最终目标函数和摘要信息。

epsilonfloat,可选

有限差分导数估计的步长。

callback可调用对象,可选

在每次迭代后调用,如 callback(x),其中 x 是当前参数向量。

返回:
out浮点数的 ndarray

func 的最终最小值。

fx浮点数的 ndarray,如果 full_output 为 true

目标函数的最终值。

itsint,如果 full_output 为 true

迭代次数。

imodeint,如果 full_output 为 true

优化器的退出模式(见下文)。

smodestring,如果 full_output 为 true

描述优化器退出模式的消息。

另请参阅

minimize

多元函数最小化算法的接口。特别是参见 'SLSQP' 方法

注释

退出模式定义如下

  • -1:需要梯度评估 (g & a)

  • 0:优化成功终止

  • 1:需要函数评估 (f & c)

  • 2:等式约束比自变量多

  • 3:LSQ 子问题中的迭代次数超过 3*n

  • 4:不等式约束不兼容

  • 5:LSQ 子问题中奇异矩阵 E

  • 6:LSQ 子问题中奇异矩阵 C

  • 7:秩亏等的式约束子问题 HFTI

  • 8:线搜索的正向导数

  • 9:达到迭代限制

示例

示例在教程中给出。