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)[source]#
使用循序最小平方規劃法最小化函數
最初由 Dieter Kraft 實作的 SLSQP 最佳化子常式的 Python 介面函數。
- 參數:
- func可呼叫物件 f(x,*args)
目標函數。必須回傳一個純量值。
- x0float 的 1-D ndarray
自變數的初始猜測值。
- eqconslist,選用
長度為 n 的函數列表,在成功最佳化的問題中,eqcons[j](x,*args) == 0.0。
- f_eqcons可呼叫物件 f(x,*args),選用
回傳一個 1-D 陣列,在成功最佳化的問題中,每個元素必須等於 0.0。如果指定了 f_eqcons,則會忽略 eqcons。
- ieqconslist,選用
長度為 n 的函數列表,在成功最佳化的問題中,ieqcons[j](x,*args) >= 0.0。
- f_ieqcons可呼叫物件 f(x,*args),選用
回傳一個 1-D 陣列,在成功最佳化的問題中,每個元素必須大於或等於 0.0。如果指定了 f_ieqcons,則會忽略 ieqcons。
- boundslist,選用
指定每個自變數下限和上限的元組列表 [(xl0, xu0),(xl1, xu1),...]。無限值將被解釋為大的浮點數值。
- fprime可呼叫物件
f(x,*args)
,選用 一個評估 func 偏導數的函數。
- fprime_eqcons可呼叫物件
f(x,*args)
,選用 形式為
f(x, *args)
的函數,其回傳 m 乘 n 的等式約束法向量陣列。如果未提供,法向量將被近似。fprime_eqcons 回傳的陣列大小應為 ( len(eqcons), len(x0) )。- fprime_ieqcons可呼叫物件
f(x,*args)
,選用 形式為
f(x, *args)
的函數,其回傳 m 乘 n 的不等式約束法向量陣列。如果未提供,法向量將被近似。fprime_ieqcons 回傳的陣列大小應為 ( len(ieqcons), len(x0) )。- argssequence,選用
傳遞給 func 和 fprime 的額外參數。
- iterint,選用
最大迭代次數。
- accfloat,選用
要求的準確度。
- iprintint,選用
fmin_slsqp 的詳細程度
iprint <= 0 : 靜默操作
iprint == 1 : 完成時印出摘要 (預設)
iprint >= 2 : 印出每次迭代的狀態和摘要
- dispint,選用
覆寫 iprint 介面 (建議使用)。
- full_outputbool,選用
如果為 False,則僅回傳 func 的最小化器 (預設)。否則,輸出最終目標函數和摘要資訊。
- epsilonfloat,選用
有限差分導數估計的步長。
- callback可呼叫物件,選用
在每次迭代後呼叫,形式為
callback(x)
,其中x
是目前的參數向量。
- 回傳值:
- outfloat 的 ndarray
func 的最終最小化器。
- fxfloat 的 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
: 達到迭代限制
範例
範例在教學文件中提供。