如何使用 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”函式。
此輸出顯示在控制檯上。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP