當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy optimize.fmin_powell用法及代碼示例


本文簡要介紹 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 布爾型,可選

如果為真,則返回 foptxidireciterfuncallswarnflag

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 之間的差值。

更換最大增量方向的技術條件為:

  1. 從該迭代中沿著最大增加的方向無法獲得進一步的增益。

  2. 最大增加的方向占了內部循環迭代中函數值減少的足夠大的一部分。

參考

鮑威爾 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)

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.fmin_powell。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。