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元組,選用

傳遞給目標函數及其導數(funjachess 函數)的額外參數。

method字串或可呼叫物件,選用

目前的文檔專門針對 method='powell',但還有其他選項可用。請參閱 scipy.optimize.minimize 的文檔。

bounds序列或 Bounds,選用

決策變數的界限。有兩種指定界限的方式

  1. Bounds 類別的實例。

  2. 每個 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

允許的最大迭代次數和函數評估次數。如果未設定 maxitermaxfev,則預設為 N*1000,其中 N 是變數的數量。如果同時設定了 maxitermaxfev,則最小化將在首先達到的條件下停止。

direcndarray

Powell 方法的初始方向向量集。

return_allbool,選用

設定為 True 以回傳每次迭代中最佳解的列表。