设置优化选项
如何设置选项
可以使用由 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 的可选输出。