minimize(method=’Powell’)#
- scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
使用修改後的 Powell 演算法,最小化一個或多個變數的純量函數。
- 參數:
- fun可呼叫物件 (callable)
要最小化的目標函數
fun(x, *args) -> float
其中
x
是一個形狀為 (n,) 的一維陣列,而args
是一個元組,包含完全指定函數所需的固定參數。- x0ndarray,形狀 (n,)
初始猜測值。大小為 (n,) 的實數元素陣列,其中
n
是獨立變數的數量。- args元組,選用
傳遞給目標函數及其導數(fun、jac 和 hess 函數)的額外參數。
- method字串或可呼叫物件,選用
目前的文檔專門針對
method='powell'
,但還有其他選項可用。請參閱scipy.optimize.minimize
的文檔。- bounds序列或
Bounds
,選用 決策變數的界限。有兩種指定界限的方式
Bounds
類別的實例。每個 x 元素的
(min, max)
配對序列。None 用於指定無界限。
如果未提供界限,則將使用無界限的線搜索。如果提供了界限且初始猜測值在界限內,則在整個最小化過程中,每次函數評估都會在界限內。如果提供了界限,且初始猜測值在界限之外,並且 direc 是滿秩的(或保留為預設值),則第一次迭代期間的某些函數評估可能在界限之外,但第一次迭代之後的每次函數評估都將在界限內。如果 direc 不是滿秩的,則某些參數可能無法最佳化,並且不保證解會在界限內。
- options字典,選用
求解器選項的字典。所有方法都接受以下通用選項
- maxiterint
要執行的最大迭代次數。根據方法,每次迭代可能會使用多次函數評估。
- dispbool
設定為 True 以印出收斂訊息。
請參閱下方
method='powell'
的特定方法選項。- callback可呼叫物件,選用
在每次迭代後呼叫。簽名為
callback(xk)
其中
xk
是目前的參數向量。
- 回傳值:
- resOptimizeResult
最佳化結果表示為
OptimizeResult
物件。重要的屬性包括:x
解的陣列、success
指示最佳化器是否成功退出的布林旗標,以及message
描述終止原因的訊息。有關其他屬性的描述,請參閱OptimizeResult
。
另請參閱
有關其餘參數的文檔,請參閱
scipy.optimize.minimize
- 選項:
- ——-
- dispbool
設定為 True 以印出收斂訊息。
- xtolfloat
收斂可接受的解 xopt 的相對誤差。
- ftolfloat
收斂可接受的
fun(xopt)
相對誤差。- maxiter, maxfevint
允許的最大迭代次數和函數評估次數。如果未設定 maxiter 或 maxfev,則預設為
N*1000
,其中N
是變數的數量。如果同時設定了 maxiter 和 maxfev,則最小化將在首先達到的條件下停止。- direcndarray
Powell 方法的初始方向向量集。
- return_allbool,選用
設定為 True 以回傳每次迭代中最佳解的列表。