容差和停止条件
优化中的迭代次数取决于求解器的停止条件。这些条件包括几个可以设置的容差。一般来说,容差是一个阈值,超过阈值时将终止求解器的迭代。
使用 optimoptions
设置容差和其他条件,如设置和更改优化选项中所述。
提示
一般情况下,将 OptimalityTolerance
和 StepTolerance
等容差设置为远高于 eps
并通常高于 1e-14
。设置小容差并不能始终得到准确的结果。相反,求解器在收敛时无法识别,并可能继续进行无用的迭代。容差值小于 eps
实际上是禁用了这种终止条件。此技巧不适用于 fzero
,它对 TolX
容差使用默认值 eps
。
optimoptions
显示容差。例如,
options = optimoptions('fmincon');
[options.OptimalityTolerance,options.FunctionTolerance,options.StepTolerance]
ans = 1.0e-06 * 1.0000 1.0000 0.0001
您也可以在求解器函数参考页的选项部分找到默认容差。
StepTolerance
是步长的下界,表示 (xi – xi+1) 的范数。如果求解器尝试采用小于StepTolerance
的步长,迭代将停止。StepTolerance
通常用作相对边界,这意味着在遇到 |(xi – xi+1)| <StepTolerance
*(1 + |xi|) 或类似相对测度时迭代会停止。请参阅容差详细信息。对于一些算法,
FunctionTolerance
是迭代步中目标函数值变化的下界。对于这些算法,如果 |f(xi) – f(xi+1)| <FunctionTolerance
,迭代将停止。FunctionTolerance
通常用作相对边界,这意味着在遇到 |f(xi) – f(xi+1)| <FunctionTolerance
*(1 + |f(xi)|) 或类似相对测度时,迭代会停止。请参阅容差详细信息。注意
与其他求解器不同,
fminsearch
在同时满足TolFun
(函数容差)和TolX
(步容差)时停止。OptimalityTolerance
是一阶最优性测度的容差。如果最优性测度小于OptimalityTolerance
,迭代将停止。OptimalityTolerance
也可以是一阶最优性测度的相对边界。请参阅容差详细信息。一阶最优性测度在一阶最优性测度中定义。ConstraintTolerance
是任何约束函数的模的上界。如果求解器返回的点的 x c(x) >ConstraintTolerance
或 |ceq(x)| >ConstraintTolerance
,求解器会报告在 x 处违反了约束。ConstraintTolerance
也可以是相对边界。请参阅容差详细信息。注意
ConstraintTolerance
的运算原理不同于其他容差。如果不满足ConstraintTolerance
(即,如果约束函数的模超过ConstraintTolerance
),求解器将尝试继续求解,除非因其他原因而停止。求解器不会仅仅因为满足ConstraintTolerance
就停止。MaxIterations
是求解器迭代数量的边界。MaxFunctionEvaluations
是函数求值数量的边界。迭代和函数计算在迭代和函数计算次数中有讨论。
另外还有两个容差适用于 TolPCG
和 MaxPCGIter
这两个特定求解器。这些涉及预条件共轭梯度步。有关详细信息,请参阅预条件共轭梯度法。
有几个容差仅适用于 fmincon
内点算法。有关详细信息,请参阅 fmincon
options
中的内点算法。
有几个容差仅适用于 intlinprog
。请参阅有些“整数”解不是整数和分支定界。