minimize(method='trust-constr')#

scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)

最小化受限於約束的純量函數。

參數:
gtolfloat, optional

以拉格朗日梯度範數作為終止條件的容忍度。當拉格朗日梯度的無窮範數(即最大絕對值)和約束違反都小於 gtol 時,演算法將終止。預設值為 1e-8。

xtolfloat, optional

以自變數的變化作為終止條件的容忍度。當 tr_radius < xtol 時,演算法將終止,其中 tr_radius 是演算法中使用的信任區域的半徑。預設值為 1e-8。

barrier_tolfloat, optional

演算法終止的障礙參數閾值。當存在不等式約束時,演算法僅在障礙參數小於 barrier_tol 時終止。預設值為 1e-8。

sparse_jacobian{bool, None}, optional

決定如何表示約束的 Jacobian 矩陣。如果為布林值,則所有約束的 Jacobian 矩陣都將轉換為相應的格式。如果為 None(預設值),則 Jacobian 矩陣將不會轉換,但只有當它們都具有相同的格式時,演算法才能繼續。

initial_tr_radius: float, optional

初始信任半徑。信任半徑給出了連續迭代中解點之間的最大距離。它反映了演算法對最佳化問題的局部近似的信任程度。對於精確的局部近似,信任區域應該很大;對於僅在當前點附近有效的近似,信任區域應該很小。信任半徑在整個最佳化過程中自動更新,initial_tr_radius 是其初始值。預設值為 1([1],第 19 頁建議)。

initial_constr_penaltyfloat, optional

初始約束懲罰參數。懲罰參數用於平衡減少目標函數和滿足約束的要求。它用於定義評價函數:merit_function(x) = fun(x) + constr_penalty * constr_norm_l2(x),其中 constr_norm_l2(x) 是包含所有約束的向量的 l2 範數。評價函數用於接受或拒絕試驗點,而 constr_penalty 權衡減少目標函數和約束這兩個衝突的目標。懲罰在整個最佳化過程中自動更新,initial_constr_penalty 是其初始值。預設值為 1([1],第 19 頁建議)。

initial_barrier_parameter, initial_barrier_tolerance: float, optional

障礙子問題的初始障礙參數和初始容忍度。兩者僅在存在不等式約束時使用。對於處理受不等式約束 c(x) <= 0 約束的最佳化問題 min_x f(x),演算法引入鬆弛變數,求解問題 min_(x,s) f(x) + barrier_parameter*sum(ln(s)),受限於等式約束 c(x) + s = 0,而不是原始問題。此子問題針對 barrier_parameter 的遞減值以及終止容忍度的遞減值求解,從障礙參數的 initial_barrier_parameter 和障礙容忍度的 initial_barrier_tolerance 開始。兩個值的預設值均為 0.1([1],第 19 頁建議)。另請注意,barrier_parameterbarrier_tolerance 以相同的預因子更新。

factorization_methodstring or None, optional

分解約束 Jacobian 矩陣的方法。使用 None(預設值)進行自動選擇,或使用以下方法之一

  • ‘NormalEquation’ (需要 scikit-sparse)

  • ‘AugmentedSystem’

  • ‘QRFactorization’

  • ‘SVDFactorization’

方法 ‘NormalEquation’ 和 ‘AugmentedSystem’ 只能與稀疏約束一起使用。演算法所需的投影將分別使用法線方程式和增廣系統方法計算,如 [1] 中所述。‘NormalEquation’ 計算 A A.T 的 Cholesky 分解,而 ‘AugmentedSystem’ 執行增廣系統的 LU 分解。它們通常提供相似的結果。‘AugmentedSystem’ 預設用於稀疏矩陣。

方法 ‘QRFactorization’ 和 ‘SVDFactorization’ 只能與稠密約束一起使用。它們分別使用 QR 和 SVD 分解計算所需的投影。‘SVDFactorization’ 方法可以處理行秩不足的 Jacobian 矩陣,並且將在其他分解方法失敗時使用(這可能意味著在需要時將稀疏矩陣轉換為稠密格式)。預設情況下,‘QRFactorization’ 用於稠密矩陣。

finite_diff_rel_stepNone or array_like, optional

有限差分近似的相對步長。

maxiterint, optional

演算法迭代的最大次數。預設值為 1000。

verbose{0, 1, 2, 3}, optional

演算法詳細程度的級別

  • 0(預設值):靜默工作。

  • 1:顯示終止報告。

  • 2:在迭代期間顯示進度。

  • 3:在迭代期間顯示進度(更完整的報告)。

dispbool, optional

如果為 True(預設值),則當 verbose 為 0 時,將其設定為 1。

回傳值:
OptimizeResult 具有以下文件中記錄的欄位。請注意以下事項
  1. 所有對應於約束的值都按照它們傳遞給求解器的順序排列。並且對應於 bounds 約束的值放在其他約束之後

  2. 所有函數、Jacobian 矩陣或 Hessian 矩陣的評估次數都對應於實際 Python 函數呼叫的次數。例如,這表示如果 Jacobian 矩陣是通過有限差分估算的,則 Jacobian 矩陣的評估次數將為零,而函數評估次數將通過有限差分估算期間的所有呼叫次數遞增。

xndarray, shape (n,)

找到的解。

optimalityfloat

解處拉格朗日梯度的無窮範數。

constr_violationfloat

解處的最大約束違反。

funfloat

解處的目標函數值。

gradndarray, shape (n,)

解處目標函數的梯度。

lagrangian_gradndarray, shape (n,)

解處拉格朗日函數的梯度。

nitint

總迭代次數。

nfevinteger

目標函數評估次數。

njevinteger

目標函數梯度評估次數。

nhevinteger

目標函數 Hessian 矩陣評估次數。

cg_niterint

共軛梯度法迭代總次數。

method{‘equality_constrained_sqp’, ‘tr_interior_point’}

使用的最佳化方法。

constrlist of ndarray

解處的約束值列表。

jaclist of {ndarray, sparse matrix}

解處約束的 Jacobian 矩陣列表。

vlist of ndarray

解處約束的拉格朗日乘數列表。對於不等式約束,正乘數表示上限有效,負乘數表示下限有效,如果乘數為零,則表示約束無效。

constr_nfevlist of int

每個約束的約束評估次數列表。

constr_njevlist of int

每個約束的 Jacobian 矩陣評估次數列表。

constr_nhevlist of int

每個約束的 Hessian 矩陣評估次數列表。

tr_radiusfloat

最後一次迭代時信任區域的半徑。

constr_penaltyfloat

最後一次迭代時的懲罰參數,請參閱 initial_constr_penalty

barrier_tolerancefloat

最後一次迭代時障礙子問題的容忍度。僅適用於具有不等式約束的問題。

barrier_parameterfloat

最後一次迭代時的障礙參數。僅適用於具有不等式約束的問題。

execution_timefloat

總執行時間。

messagestr

終止訊息。

status{0, 1, 2, 3, 4}

終止狀態

  • 0:超出函數評估的最大次數。

  • 1:滿足 gtol 終止條件。

  • 2:滿足 xtol 終止條件。

  • 3:callback 函數請求終止。

  • 4:約束違反超出 'gtol'。

在版本 1.15.0 中變更:如果約束違反超出 gtol,則 result.success 現在將為 False。

cg_stop_condint

最後一次迭代時 CG 子問題終止的原因

  • 0:未評估 CG 子問題。

  • 1:達到迭代限制。

  • 2:達到信任區域邊界。

  • 3:偵測到負曲率。

  • 4:滿足容忍度。

參考文獻

[1] (1,2,3,4)

Conn, A. R.、Gould, N. I. 和 Toint, P. L. Trust region methods. 2000. Siam. pp. 19.