本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。
一阶最优性用于度量点 x 与最优点的接近程度。大多数 Optimization Toolbox™ 求解器都使用此度量,尽管它对不同算法有不同定义。一阶最优性是必要条件,但不是充分条件。换言之:
一阶最优性度量必须至少为零。
一阶最优性等于零的点不一定是最小值。
有关一阶最优性的一般信息,请参阅 Nocedal 和 Wright 的合著 [31]。有关 Optimization Toolbox 求解器的一阶最优性度量的详细信息,请参阅无约束最优性、受约束的最优性理论和求解器形式的约束最优性。
OptimalityTolerance
容差与一阶最优性度量相关。通常,如果一阶最优性度量小于 OptimalityTolerance
,则求解器迭代结束。
一些求解器或算法使用相对一阶最优性作为停止条件。如果一阶最优性度量小于 μ 乘以 OptimalityTolerance
,则求解器迭代结束;其中 μ 为:
目标函数在 x0
处的梯度的无穷范数(最大值)
求解器的输入的无穷范数(最大值),例如 linprog
中的 f
或 b
或者 quadprog
中的 H
相对度量尝试解释问题的规模。如果采用相对停止标准,将目标函数乘以很大或很小的数不会改变停止条件,如果采用未经缩放的标准,则会改变停止条件。
具有增强版退出消息的求解器会在停止标准详细信息中指出它们何时使用相对一阶最优性。
对于平滑无约束问题
一阶最优性度量是 ∇f(x) 的无穷范数(意味着最大绝对值),即:
此最优性度量基于平滑函数达到最小值的熟悉条件:其梯度必须为零。对于无约束问题,当一阶最优性度量接近于零时,目标函数的梯度接近于零,因此目标函数可能接近最小值。如果一阶最优性度量并不小,则目标函数不是最小值。
本节简述约束问题的一阶最优性度量定义的理论基础。有关 Optimization Toolbox 函数中使用的定义,请参阅求解器形式的约束最优性。
对于平滑约束问题,使 g 和 h 分别是表示所有不等式和等式约束(指边界、线性和非线性约束)的向量函数:
在这种情况下,一阶最优性的含义比无约束问题更复杂。该定义基于 Karush-Kuhn-Tucker (KKT) 条件。KKT 条件类似于梯度的最小值必须为零的条件,修正为考虑约束条件。不同之处在于 KKT 条件适用于约束问题。
(1) |
KKT 条件是:
(2) |
(3) |
(4) |
与公式 2 相关联的最优性度量为
(5) |
(6) |
合并的最优性度量是在公式 5 和公式 6 中计算的最大值。接受非线性约束函数的求解器将约束违反度 g(x) > 0 或 |h(x)| > 0 报告为 ConstraintTolerance
违反。请参阅容差和停止条件。
大多数约束工具箱求解器将其一阶最优性度量的计算分为边界、线性函数和非线性函数。该度量是以下两个范数中的最大值,这两个范数对应于公式 5 和公式 6:
(7) |
(8) |
其中,公式 7 和公式 8 中向量的范数是无穷范数(最大值)。拉格朗日乘数上的下标对应于求解器拉格朗日乘数结构体。请参阅Lagrange Multiplier Structures。公式 7 中的求和范围涵盖所有约束。如果边界是 ±Inf
,则该项不受约束,因此它不是求和的一部分。
对于一些只具有线性等式的大规模问题,一阶最优性度量是投影梯度的无穷范数。换句话说,一阶最优性度量是投影到 Aeq
的零空间上的梯度的大小。
对于最小二乘求解器和信赖域反射算法,在仅具有边界的问题中,一阶最优性度量是 |vi*gi| 在 i 上的最大值。此处,gi 是梯度的第 i 个分量,x 是当前点,并且
如果 xi 位于边界上,则 vi 为零。如果 xi 不在边界上,则在最小化点上,梯度 gi 应为零。因此,一阶最优性度量在最小化点上应为零。