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*n4
:不等式约束不兼容5
:LSQ 子问题中奇异矩阵 E6
:LSQ 子问题中奇异矩阵 C7
:秩亏等的式约束子问题 HFTI8
:线搜索的正向导数9
:达到迭代限制
示例
示例在教程中给出。