本文簡要介紹 python 語言中 scipy.optimize.fmin_powell
的用法。
用法:
scipy.optimize.fmin_powell(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, direc=None)#
使用改進的 Powell 方法最小化函數。
此方法僅使用函數值,而不使用導數。
- func: 可調用 f(x,*args)
要最小化的目標函數。
- x0: ndarray
初步猜測。
- args: 元組,可選
傳遞給 func 的額外參數。
- xtol: 浮點數,可選
Line-search 容錯。
- ftol: 浮點數,可選
func(xopt)
中的相對誤差可用於收斂。- maxiter: 整數,可選
要執行的最大迭代次數。
- maxfun: 整數,可選
要進行的函數評估的最大數量。
- full_output: 布爾型,可選
如果為真,則返回
fopt
、xi
、direc
、iter
、funcalls
和warnflag
。- disp: 布爾型,可選
如果為 True,則打印收斂消息。
- retall: 布爾型,可選
如果為 True,則在每次迭代時返回解決方案列表。
- callback: 可調用的,可選的
一個可選的用戶提供的函數,在每次迭代後調用。稱為
callback(xk)
,其中xk
是當前參數向量。- direc: ndarray,可選
初始擬合步驟和參數順序設置為 (N, N) 數組,其中 N 是擬合參數的數量x0。默認步長為 1.0 同時擬合所有參數 (
np.eye((N, N))
)。為了防止在一個步驟中初始考慮值或更改初始步長,在第 M 塊中的第 J 個位置設置為 0 或所需的步長,其中 J 是x0M 是所需的評估步驟,按索引順序評估步驟。隨著最小化的進行,步長和順序將自由變化。
- xopt: ndarray
最小化的參數函數.
- fopt: 數字
函數的最小值:
fopt = func(xopt)
。- direc: ndarray
當前方向設置。
- iter: int
迭代次數。
- funcalls: int
進行的函數調用次數。
- warnflag: int
- 整數警告標誌:
1:函數評估的最大數量。 2:最大迭代次數。 3:遇到NaN結果。 4:結果超出規定範圍。
- allvecs: 列表
每次迭代的解決方案列表。
參數 ::
返回 ::
注意:
使用 Powell 方法的修改來找到 N 個變量的函數的最小值。 Powell 方法是一種共軛方向方法。
該算法有兩個循環。外循環僅迭代內循環。內部循環在方向集中的每個當前方向上最小化。在內部循環結束時,如果滿足某些條件,則放棄給出最大下降的方向,並替換為當前估計的 x 與從 inner-loop 開始時估計的 x 之間的差值。
更換最大增量方向的技術條件為:
從該迭代中沿著最大增加的方向無法獲得進一步的增益。
最大增加的方向占了內部循環迭代中函數值減少的足夠大的一部分。
參考:
鮑威爾 M.J.D. (1964) 一種在不計算導數的情況下找到多個變量的函數最小值的有效方法,Computer Journal,7 (2):155-162。
Press W.、Teukolsky S.A.、Vetterling W.T. 和 Flannery B.P.:數字食譜(任何版本),劍橋大學出版社
例子:
>>> def f(x): ... return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin_powell(f, -1) Optimization terminated successfully. Current function value: 0.000000 Iterations: 2 Function evaluations: 16 >>> minimum array(0.0)
相關用法
- Python SciPy optimize.fmin_cobyla用法及代碼示例
- Python SciPy optimize.fmin_bfgs用法及代碼示例
- Python SciPy optimize.fmin_slsqp用法及代碼示例
- Python SciPy optimize.fmin_tnc用法及代碼示例
- Python SciPy optimize.fmin_cg用法及代碼示例
- Python SciPy optimize.fmin用法及代碼示例
- Python SciPy optimize.fminbound用法及代碼示例
- Python SciPy optimize.fsolve用法及代碼示例
- Python SciPy optimize.fixed_point用法及代碼示例
- Python SciPy optimize.rosen_der用法及代碼示例
- Python SciPy optimize.line_search用法及代碼示例
- Python SciPy optimize.rosen用法及代碼示例
- Python SciPy optimize.shgo用法及代碼示例
- Python SciPy optimize.minimize_scalar用法及代碼示例
- Python SciPy optimize.root用法及代碼示例
- Python SciPy optimize.NonlinearConstraint用法及代碼示例
- Python SciPy optimize.KrylovJacobian用法及代碼示例
- Python SciPy optimize.toms748用法及代碼示例
- Python SciPy optimize.linprog_verbose_callback用法及代碼示例
- Python SciPy optimize.bracket用法及代碼示例
- Python SciPy optimize.milp用法及代碼示例
- Python SciPy optimize.diagbroyden用法及代碼示例
- Python SciPy optimize.bisect用法及代碼示例
- Python SciPy optimize.isotonic_regression用法及代碼示例
- Python SciPy optimize.golden用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.fmin_powell。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。