退出标志和退出消息
出口标志
当优化求解器完成它的任务时,它会设置一个出口标志。退出标志是一个整数,它是求解器停止迭代的原因代码。一般来说:
该表链接到每个求解器的退出标志描述。
退出标志由求解器
请注意
退出标志并不是解决方案质量的可靠指南。许多其他因素,如公差设置,都可能影响解决方案是否令您满意。您负责决定一个求解器是否返回一个令人满意的答案。有时,一个消极的退出标志并不代表一个“糟糕的”解决方案。类似地,有时一个积极的退出标志并不对应一个“好的”解决方案。
方法调用求解器来获得退出标志exitflag
语法。这个语法依赖于求解器。详细信息请参见求解函数参考页面。例如,对于fsolve
,获取退出标志的调用语法为
[x,fval,exitflag] = fsolve(…)
下面的例子使用了这种语法。假设你想解一个非线性方程组
将这些方程写成匿名函数,在解处给出零向量:
Myfcn = @(x)[2*x(1) -x(2) - exp(-x(1));-x(1) + 2*x(2) - exp(-x(2))];
调用fsolve
与exitflag
初始点的语法[-5 -5]:
[xfinal fval exitflag] = fsolve(myfcn,[-5 -5])
方程解决。Fsolve是完成的,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。Xfinal = 0.5671 fval = 1.0e-06 * -0.4059 -0.4059 exitflag = 1
在表中fsolve
exitflag
,您会发现一个退出标志值1
意思是“函数收敛到解”x
换句话说,fsolve
报告myfcn
接近于零x
=(0.5671 - 0.5671)
。
退出消息
每个解算器向MATLAB发出一条消息®命令窗口在其迭代结束时。这条消息简要地解释了为什么求解器停止。该消息可能提供比退出标志更多的细节。
本文档中的许多示例显示了退出消息,例如在命令行中定义和解决问题。上一节中的例子,出口标志,显示如下退出信息:
方程解决。Fsolve是完成的,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。
这个消息比退出标志信息更丰富。该消息表明梯度是相关的。该消息还指出,函数公差控制函数值的向量必须接近0的程度fsolve
认为解决方案已经完成。
增强的退出消息
一些解算器有包含更多信息链接的退出消息。链接有两种类型:
单词或短语的链接。如果单击这样的链接,将打开一个窗口,其中显示术语的定义或其他信息。新窗口可以包含到帮助浏览器文档的链接,以获取更详细的信息。
作为显示的最后一行的链接
<停止条件详细信息>
。如果单击此链接,MATLAB将显示有关求解器停止原因的更多详细信息。
的fminunc
Solver增强了退出消息:
Opts = optimoptions(@fminunc,“算法”,“拟牛顿”);%“trust-region”需要梯度[xfinal fval exitflag] = fminunc(@sin,0,opts)
这将产生以下结果:
每个带下划线的单词或短语都包含一个提供更多信息的链接。
的
<停止条件详细信息>
link将以下内容打印到MATLAB命令行:优化完成:一阶最优性度量,0.000000e+00,小于选项。OptimalityTolerance = 1.000000e-06。
其他链接显示一个带有术语定义的帮助窗口。例如,单击
找到局部极小值
链接打开以下窗口:单击
一阶最优测度
展开器连杆给出了一阶最优测度的定义fminunc
:扩展器链接是在同一个窗口中获取更多信息的一种方式。单击
一阶最优测度
扩展器链接再次关闭定义。其他链接打开帮助查看器。
退出消息选项
设置显示
选项来控制退出消息和迭代显示的外观。有关更多信息,请参见迭代显示。的各种设置的效果如下表所示显示
选择。
显示选项的值 | 输出到命令窗口 | |
---|---|---|
退出消息 | 迭代显示 | |
“没有” ,或同义“关闭” |
没有一个 | 没有一个 |
“最后一次” (大多数解算器默认) |
默认的 | 没有一个 |
最后详细的 |
详细的 | 没有一个 |
“通路” |
默认的 | 是的 |
“iter-detailed” |
详细的 | 是的 |
“通知” |
仅在以下情况下默认exitflag ≤0 |
没有一个 |
“notify-detailed” |
仅当exitflag ≤0 |
没有一个 |
例如,
Opts = optimoptions(@fminunc,“显示”,“iter-detailed”,“算法”,“拟牛顿”);[xfinal fval] = fminunc(@cos,1,opts);
产生以下显示: