主要内容

退出标志和退出消息

出口标志

当优化求解器完成它的任务时,它会设置一个出口标志。退出标志是一个整数,它是求解器停止迭代的原因代码。一般来说:

  • 积极的退出标志对应成功的结果。

  • 负退出标志对应不成功的结果。

  • 零退出标志对应于求解器因超过迭代限制或函数求值的数量限制而停止(参见迭代和功能计数,也可以看到公差和停止标准).

该表链接到每个求解器的退出标志描述。

退出标志由求解器

coneprogexitflag

fgoalattainexitflag

fminbndexitflag

fminconexitflag

fminimaxexitflag

fminsearchexitflag

fminuncexitflag

fseminfexitflag

fsolveexitflag

fzeroexitflag

intlinprogexitflag

linprogexitflag

lsqcurvefitexitflag

lsqlinexitflag

lsqnonlinexitflag

lsqnonnegexitflag

quadprogexitflag

请注意

退出标志并不是解决方案质量的可靠指南。许多其他因素,如公差设置,都可能影响解决方案是否令您满意。您负责决定一个求解器是否返回一个令人满意的答案。有时,一个消极的退出标志并不代表一个“糟糕的”解决方案。类似地,有时一个积极的退出标志并不对应一个“好的”解决方案。

方法调用求解器来获得退出标志exitflag语法。这个语法依赖于求解器。详细信息请参见求解函数参考页面。例如,对于fsolve,获取退出标志的调用语法为

[x,fval,exitflag] = fsolve(…)

下面的例子使用了这种语法。假设你想解一个非线性方程组

2 x 1 x 2 e x 1 x 1 + 2 x 2 e x 2

将这些方程写成匿名函数,在解处给出零向量:

Myfcn = @(x)[2*x(1) -x(2) - exp(-x(1));-x(1) + 2*x(2) - exp(-x(2))];

调用fsolveexitflag初始点的语法[-5 -5]:

[xfinal fval exitflag] = fsolve(myfcn,[-5 -5])
方程解决。Fsolve是完成的,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。Xfinal = 0.5671 fval = 1.0e-06 * -0.4059 -0.4059 exitflag = 1

在表中fsolveexitflag,您会发现一个退出标志值1意思是“函数收敛到解”x换句话说,fsolve报告myfcn接近于零x(0.5671 - 0.5671)

退出消息

每个解算器向MATLAB发出一条消息®命令窗口在其迭代结束时。这条消息简要地解释了为什么求解器停止。该消息可能提供比退出标志更多的细节。

本文档中的许多示例显示了退出消息,例如在命令行中定义和解决问题。上一节中的例子,出口标志,显示如下退出信息:

方程解决。Fsolve是完成的,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。

这个消息比退出标志信息更丰富。该消息表明梯度是相关的。该消息还指出,函数公差控制函数值的向量必须接近0的程度fsolve认为解决方案已经完成。

增强的退出消息

一些解算器有包含更多信息链接的退出消息。链接有两种类型:

  • 单词或短语的链接。如果单击这样的链接,将打开一个窗口,其中显示术语的定义或其他信息。新窗口可以包含到帮助浏览器文档的链接,以获取更详细的信息。

  • 作为显示的最后一行的链接<停止条件详细信息>。如果单击此链接,MATLAB将显示有关求解器停止原因的更多详细信息。

fminuncSolver增强了退出消息:

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);

产生以下显示:

相关的话题