最小化(method=‘Trust-constr’)

scipy.optimize.minimize(fun, x0, args=(), method='trust-constr', hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options={'grad': None, 'xtol': 1e-08, 'gtol': 1e-08, 'barrier_tol': 1e-08, 'sparse_jacobian': None, 'maxiter': 1000, 'verbose': 0, 'finite_diff_rel_step': None, 'initial_constr_penalty': 1.0, 'initial_tr_radius': 1.0, 'initial_barrier_parameter': 0.1, 'initial_barrier_tolerance': 0.1, 'factorization_method': None, 'disp': False})

最小化受约束的标量函数。

参数
gtol浮动,可选

按拉格朗日梯度范数终止的容差。当拉格朗日梯度的无穷范数(即最大abs值)和约束违反均小于 gtol 。默认值为1e-8。

xtol浮动,可选

因自变量变化而终止的容差。算法将在以下情况下终止 tr_radius < xtol ,在哪里 tr_radius 是算法中使用的信任域的半径。默认值为1e-8。

barrier_tol浮动,可选

算法终止的屏障参数阈值。当存在不等式约束时,仅当屏障参数小于时,算法才会终止 barrier_tol 。默认值为1e-8。

sparse_jacobian{bool,None},可选

确定如何表示约束的雅可比。如果为bool,则所有约束的雅可比都将转换为相应的格式。如果为None(默认值),则不会转换雅可比,但仅当它们都具有相同的格式时,算法才能继续。

initial_tr_radius: float, optional

初始信任半径。信任半径给出了连续迭代中解点之间的最大距离。它反映了算法对优化问题的局部近似的信任。对于精确的局部近似,信赖域应该很大,而对于仅在当前点附近有效的近似,信赖域应该很小。信任半径在整个优化过程中会自动更新, initial_tr_radius 这是它的初始值。默认值为1(建议在 [1], 第19页)。

initial_constr_penalty浮动,可选

初始约束惩罚参数。惩罚参数用于权衡降低目标函数和满足约束的要求。用于定义功绩函数: 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

初始屏障参数和屏障子问题的初始容差。这两种方法仅在存在不平等约束时使用。用于处理优化问题 min_x f(x) 受不平等约束的约束 c(x) <= 0 该算法引入了松弛变量,解决了问题 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_method字符串或无,可选

方法来分解约束的雅可比矩阵。对自动选择使用无(默认值)或以下选项之一:

  • “NormalEquation”(需要SCRICKIT-稀疏)

  • “AugmentedSystem”

  • “QR因式分解”

  • “SVDfactorization”

方法“NormalEquation”和“AugmentedSystem”只能与稀疏约束一起使用。算法所需的投影将分别使用中解释的法方程和增广系统方法来计算。 [1]. “NormalEquation”计算的Cholesky因式分解 A A.T 并且‘AugmentedSystem’执行扩展系统的LU因式分解。它们通常提供类似的结果。“AugmentedSystem”默认用于稀疏矩阵。

方法“QRFactorization”和“SVDFactorization”只能与密集约束一起使用。它们分别使用QR和SVD因式分解来计算所需的投影。“SVDfactorization”方法可以处理行秩不足的雅可比矩阵,并将在其他因式分解方法失败时使用(这可能意味着在需要时将稀疏矩阵转换为稠密格式)。默认情况下,“QRFactorization”用于稠密矩阵。

finite_diff_rel_stepNONE或ARRAY_LIKE,可选

有限差分近似的相对步长。

maxiter整型,可选

算法迭代的最大次数。默认值为1000。

verbose{0,1,2},可选

算法的详细程度:

  • 0(默认值):静默工作。

  • 1:显示终止报告。

  • 2:显示迭代过程中的进度。

  • 3:显示迭代过程中的进度(更完整的报告)。

disp布尔值,可选

如果为True(默认值),则 verbose 如果为0,则将设置为1。

退货
OptimizeResult 字段记录如下。请注意以下事项:
  1. 与约束相对应的所有值在传递到求解器时都会进行排序。和对应于 bounds 约束被放置在 之后 其他约束条件。

  2. 函数、Jacobian或Hessian求值的所有数量都与实际Python函数调用的数量相对应。这意味着,例如,如果通过有限差分估计雅可比,则雅可比求值的次数将为零,并且函数求值的次数将在有限差分估计期间的所有调用中递增。

xndarray,形状(n,)

找到解决方案。

optimality浮动

解的拉格朗日梯度的无穷范数。

constr_violation浮动

解的最大约束冲突。

fun浮动

目标函数在解的位置。

gradndarray,形状(n,)

目标函数在解处的梯度。

lagrangian_gradndarray,形状(n,)

拉格朗日函数在解处的梯度。

nit集成

迭代总数。

nfev整数

目标函数求值的次数。

njev整数

目标函数梯度求值的次数。

nhev整数

目标函数Hessian求值的数量。

cg_niter集成

共轭梯度法迭代的总次数。

method{‘相等_约束_sqp’,‘TR_INTERNAL_POINT’}

采用最优化方法。

constrndarray列表

解决方案的约束值列表。

jac{ndarray,稀疏矩阵}列表

解的约束的雅可比矩阵的列表。

vndarray列表

解的约束的拉格朗日乘数列表。对于不等式约束,正乘数表示上界是活动的,负乘数表示下界是活动的,如果乘数是零,则表示约束不是活动的。

constr_nfev整型列表

每个约束的约束求值次数。

constr_njev整型列表

每个约束的雅可比矩阵求值次数。

constr_nhev整型列表

每个约束的黑森求值次数。

tr_radius浮动

上次迭代时信任区域的半径。

constr_penalty浮动

最后一次迭代的惩罚参数,请参见 initial_constr_penalty

barrier_tolerance浮动

对上一次迭代的屏障子问题的容忍度。仅适用于具有不等式约束的问题。

barrier_parameter浮动

上次迭代时的屏障参数。仅适用于具有不等式约束的问题。

execution_time浮动

总执行时间。

message应力

终止消息。

status{0,1,2,3}

终止状态:

  • 0:超过函数求值的最大次数。

  • 1: gtol 满足终止条件。

  • 2: xtol 满足终止条件。

  • 3: callback 功能请求终止。

cg_stop_cond集成

上次迭代终止CG子问题的原因:

  • 0:未评估CG子问题。

  • 1:已达到迭代限制。

  • 2:到达信任区边界。

  • 3:检测到负曲率。

  • 4:耐受性满意。

参考文献

1(1,2,3,4)

Conn,A.R.,Gould,N.I.,&Toint,P.L.信赖域方法。2000年。暹罗。第19页。