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


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


本文簡要介紹 python 語言中 scipy.optimize.fmin 的用法。

用法:

scipy.optimize.fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, initial_simplex=None)#

使用下坡單純形算法最小化函數。

該算法僅使用函數值,不使用導數或二階導數。

參數

func 可調用函數(x,*args)

要最小化的目標函數。

x0 ndarray

初步猜測。

args 元組,可選

傳遞給 func 的額外參數,即 f(x,*args)

xtol 浮點數,可選

迭代之間 xopt 中的絕對誤差對於收斂是可以接受的。

ftol 編號,可選

迭代之間的 func(xopt) 中的絕對誤差對於收斂是可以接受的。

maxiter 整數,可選

要執行的最大迭代次數。

maxfun 編號,可選

要進行的函數評估的最大數量。

full_output 布爾型,可選

如果需要 fopt 和 warnflag 輸出,則設置為 True。

disp 布爾型,可選

設置為 True 以打印收斂消息。

retall 布爾型,可選

設置為 True 以在每次迭代時返回解決方案列表。

callback 可調用的,可選的

在每次迭代後調用,作為 callback(xk),其中 xk 是當前參數向量。

initial_simplex 數組 形狀 (N + 1, N),可選

初始單純形。如果給定,則覆蓋x0.initial_simplex[j,:]應包含第 j 個頂點的坐標N+1單純形中的頂點,其中N是維度。

返回

xopt ndarray

最小化函數的參數。

fopt 浮點數

函數的最小值:fopt = func(xopt)

iter int

執行的迭代次數。

funcalls int

進行的函數調用次數。

warnflag int

1:進行函數評估的最大次數。 2:達到最大迭代次數。

allvecs 列表

每次迭代的解決方案。

注意

使用Nelder-Mead 單純形算法找到一個或多個變量的函數最小值。

該算法在應用程序中的成功使用曆史悠久。但它通常比使用一階或二階導數信息的算法慢。在實踐中,它在高維問題上的表現可能很差,並且對於最小化複雜函數的魯棒性不強。此外,目前還沒有完整的理論來說明算法何時會成功收斂到最小值,或者如果收斂會多快。必須滿足 ftol 和 xtol 標準才能收斂。

參考

[1]

內爾德,J.A.和 Mead, R. (1965),“函數最小化的單純形法”,計算機雜誌,7,第 308-313 頁

[2]

賴特,M.H. (1996),“直接搜索方法:曾經被蔑視,現在受人尊敬”,《數值分析 1995》,1995 年鄧迪數值分析雙年會論文集,D.F.格裏菲斯和 G.A. Watson(編輯),Addison Wesley Longman,哈洛,英國,第 191-208 頁。

例子

>>> def f(x):
...     return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin(f, 1)
Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 17
         Function evaluations: 34
>>> minimum[0]
-8.8817841970012523e-16

相關用法


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