退出标志和退出消息
退出标志
当优化求解器完成任务时,它会设置退出标志。退出标志是一个整数,是表示求解器停止迭代的原因的代码。一般来说:
下表链接到每个求解器的退出标志说明。
按求解器列出的退出标志
注意
退出标志并不能完全准确衡量解的质量。还有容差设置等许多其他因素会对解是否令人满意产生影响。求解器返回的结果是否令人满意需要由用户自己来确定。有时,退出标志为负数并不表示解“糟糕”。同样,有时退出标志为正数也不表示解“良好”。
通过带 exitflag
语法调用求解器,您可以获得退出标志。此语法取决于求解器。有关详细信息,请参阅求解器函数参考页。例如,对于 fsolve
,用于获取退出标志的调用语法是
[x,fval,exitflag] = fsolve(...)
以下示例就使用了此语法。假设您要求解非线性方程组
将这些方程写成匿名函数,该匿名函数在解处给出零向量:
myfcn = @(x)[2*x(1) - x(2) - exp(-x(1)); -x(1) + 2*x(2) - exp(-x(2))];
在初始点 [-5 -5] 处使用 exitflag
语法调用 fsolve
:
[xfinal fval exitflag] = fsolve(myfcn,[-5 -5])
Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient. xfinal = 0.5671 0.5671 fval = 1.0e-06 * -0.4059 -0.4059 exitflag = 1
在 fsolve
exitflag
的表中,您会发现退出标志值 1
表示“函数收敛于解 x
”。也就是说,fsolve
报告 myfcn
在 x
= [0.5671 0.5671]
处接近于零。
退出消息
每个求解器在其迭代结束时都会向 MATLAB® 命令行窗口发出一条消息。此消息简要解释求解器停止的原因。该消息可能会提供比退出标志更多的详细信息。
本文档中的许多示例都显示了退出消息,例如在命令行中定义和求解问题。上一节退出标志中的示例显示以下退出消息:
Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
此消息提供的信息比退出标志提供的信息更详细。该消息表明了梯度的作用。该消息还说明了函数容差可控制函数值向量接近 0 的程度达到多少时,fsolve
才认为求解已完成。
增强版退出消息
有些求解器的退出消息中包含指向详细信息的链接。有两种类型的链接:
单词或短语链接。如果您点击此类链接,将打开一个窗口,其中显示对应项的定义或给出其他信息。新窗口可能会包含指向帮助浏览器文档的链接,以提供更详细的信息。
最后一行显示的链接提供
<stopping criteria details>
。如果点击此链接,MATLAB 将显示求解器停止的详细原因。
fminunc
求解器提供了增强版的退出消息:
opts = optimoptions(@fminunc,'Algorithm','quasi-newton'); % 'trust-region' needs gradient [xfinal fval exitflag] = fminunc(@sin,0,opts)
这将生成以下结果:
每个带下划线的单词或短语都包含可提供详细信息的链接。
<stopping criteria details>
链接会在 MATLAB 命令行中显示以下内容:Optimization completed: The first-order optimality measure, 0.000000e+00, is less than options.OptimalityTolerance = 1.000000e-06.
其他链接会弹出一个包含相关项定义的帮助窗口。例如,点击
Local minimum found
链接将打开以下窗口:点击该窗口中的
first-order optimality measure
展开链接将显示fminunc
的一阶最优性测度的定义:展开链接是在同一窗口中获取详细信息的一种方式。再次点击
first-order optimality measure
展开链接将折叠定义。其他链接可打开帮助查看器。
退出消息选项
您可以通过设置 Display
选项来控制退出消息和迭代输出的外观。有关详细信息,请参阅迭代输出。下表显示 Display
选项的各种设置的效果。
显示选项的值 | 输出到命令行窗口 | |
---|---|---|
退出消息 | 迭代输出 | |
'none' 或同义词 'off' | 无 | 无 |
'final' (大多数求解器的默认值) | 默认值 | 无 |
'final-detailed' | 详细消息 | 无 |
'iter' | 默认值 | 是 |
'iter-detailed' | 详细消息 | 是 |
'notify' | 仅当 exitflag ≤ 0 时为默认值 | 无 |
'notify-detailed' | 仅当 exitflag ≤ 0 时为详细信息 | 无 |
例如,
opts = optimoptions(@fminunc,'Display','iter-detailed','Algorithm','quasi-newton'); [xfinal fval] = fminunc(@cos,1,opts);
生成以下显示: