如何使用 SciPy Python 實現 Nelder-Mead 演算法?


SciPy 庫可用於快速、高效地執行復雜的科學計算。Nelder-Mead 演算法也稱為單純形搜尋演算法。

它被認為是解決引數估計問題和統計問題的最佳演算法之一。在函式值不確定或伴隨大量噪聲的情況下使用此演算法非常合適。

此演算法也可用於處理統計中經常出現的間斷函式。它是一個簡單的演算法,也易於理解。用於在多維無約束最佳化的情況下最小化非線性函式的引數。

不建議使用此演算法查詢最優梯度值,因為它可能需要很長時間。

讓我們看一個例子 -

示例

import numpy as np
from scipy.optimize import minimize
def f(x):
   return .6*(1 - x[0])**2
scipy.optimize.minimize(f, [2, -1], method="Nelder-Mead")

輸出

final_simplex: (array([[ 1. , -1.27109375],
   [ 1. , -1.27118835],
   [ 1. , -1.27113762]]), array([0., 0., 0.]))
   fun: 0.0
   message: 'Optimization terminated successfully.'
      nfev: 147
      nit: 69
   status: 0
   success: True
x: array([ 1. , -1.27109375])

解釋

  • 匯入所需的庫。

  • 定義一個函式“f”,它以一個值作為引數,並對其執行一些數學計算。

  • 在函式定義之外呼叫“f”函式以計算值。

  • 將此函式作為引數傳遞給 SciPy 庫“optimize”類中的“minimize”函式。

  • 此輸出顯示在控制檯上。

更新於: 2020-12-10

569 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.