设置优化选项
如何设置选项
可以使用由 optimset
函数创建的 options
结构体来指定优化参数。然后,可以将 options
作为输入传递给优化函数,例如,通过使用以下语法调用 fminbnd
x = fminbnd(fun,x1,x2,options)
或使用以下语法调用 fminsearch
x = fminsearch(fun,x0,options)
例如,要显示算法在每次迭代中的输出,请将 Display
选项设置为 'iter'
:
options = optimset('Display','iter');
选项表
选项 | 描述 | 求解器 |
---|---|---|
| 指示是否在屏幕上显示中间步骤的标签。
| fminbnd , fminsearch , fzero , lsqnonneg |
| 检查目标函数值是否有效。
| fminbnd , fminsearch , fzero |
| 允许的最大函数计算次数。对于 | fminbnd , fminsearch |
| 允许的最大迭代次数。对于 | fminbnd , fminsearch |
| 显示有关求解器的迭代的信息。默认值为 | fminbnd , fminsearch , fzero |
| 绘制有关求解器的迭代的信息。默认值为 | fminbnd , fminsearch , fzero |
| 函数值的终止容差。默认值为 | fminsearch |
| x 的终止容差。默认值为 | fminbnd , fminsearch , fzero , lsqnonneg |
容差和终止条件
优化中的迭代次数取决于求解器的终止条件。这些条件包括几个可以设置的容差。一般来说,容差是一个阈值,超过阈值时将终止求解器的迭代。
提示
一般情况下,将 TolFun
和 TolX
容差设置为远高于 eps
并通常高于 1e-14
。设置小容差并不能保证得到精确的结果。相反,求解器在收敛时无法识别,并可能继续进行无用的迭代。容差值小于 eps
实际上是禁用了这种终止条件。此技巧不适用于 fzero
,它为 TolX
使用默认值 eps
。
TolX
是步长的下界,表示 (xi – xi+1) 的范数。如果求解器尝试小于TolX
的步长,则终止迭代。求解器通常将TolX
用作相对边界,表示在达到 |(xi – xi+1)| <TolX
*(1 + |xi|) 或类似的相对测度时终止迭代。TolFun
是步长中目标函数值变化的下边界。如果 |f(xi) – f(xi+1)| <TolFun
,则终止迭代。求解器通常将TolFun
用作相对边界,表示在达到 |f(xi) – f(xi+1)| <TolFun
(1 + |f(xi)|) 或类似的相对测度时终止迭代。MaxIter
是求解器迭代数量的边界。MaxFunEvals
是函数求值数量的边界。
注意
与其他求解器不同,fminsearch
在同时满足 TolFun
和 TolX
时停止运行。
输出结构体
output
结构体包括函数计算次数、迭代次数和算法。当为 fminbnd
、fminsearch
或 fzero
提供第四个输出参量时,将显示此结构体,如下所示
[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);
函数参考页面上提供了每个求解器的 output
结构体的详细信息。
output
结构体选项不能选择用于 optimset
。它是 fminbnd
、fminsearch
和 fzero
的可选输出。