Main Content

设置优化选项

如何设置选项

可以使用由 optimset 函数创建的 options 结构体来指定优化参数。然后,可以将 options 作为输入传递给优化函数,例如,通过使用以下语法调用 fminbnd

x = fminbnd(fun,x1,x2,options)

或使用以下语法调用 fminsearch

x = fminsearch(fun,x0,options)

例如,要显示算法在每次迭代中的输出,请将 Display 选项设置为 'iter'

options = optimset('Display','iter');

选项表

选项描述求解器

Display

指示是否在屏幕上显示中间步骤的标签。

  • 'notify'(默认值)仅在函数未收敛时显示输出。

  • 'iter' 显示中间步骤(不适用于 lsqnonneg)。请参阅 优化求解器迭代输出

  • 'off''none' 不显示中间步骤。

  • 'final' 仅显示最终输出。

fminbnd, fminsearch, fzero, lsqnonneg

FunValCheck

检查目标函数值是否有效。

  • 当目标函数或约束返回的值是复数或 NaN 时,'on' 显示错误。

  • 'off'(默认值)不显示错误。

fminbnd, fminsearch, fzero

MaxFunEvals

允许的最大函数计算次数。对于 fminbnd,默认值为 500;对于 fminsearch,默认值为 200*length(x0)

fminbnd, fminsearch

MaxIter

允许的最大迭代次数。对于 fminbnd,默认值为 500;对于 fminsearch,默认值为 200*length(x0)

fminbnd, fminsearch

OutputFcn

显示有关求解器的迭代的信息。默认值为 [](无)。请参阅 优化求解器输出函数

fminbnd, fminsearch, fzero

PlotFcns

绘制有关求解器的迭代的信息。默认值为 [](无)。有关可用的预定义函数,请参阅优化求解器绘制函数

fminbnd, fminsearch, fzero

TolFun

函数值的终止容差。默认值为 1.e-4。请参阅 容差和终止条件

fminsearch

TolX

x 的终止容差。默认值为 1.e-4,但以下两个函数除外:fzero,其默认值为 eps (=2.2204e-16),以及 lsqnonneg,其默认值为 10*eps*norm(c,1)*length(c)。请参阅 容差和终止条件

fminbnd, fminsearch, fzero, lsqnonneg

容差和终止条件

优化中的迭代次数取决于求解器的终止条件。这些条件包括几个可以设置的容差。一般来说,容差是一个阈值,超过阈值时将终止求解器的迭代。

提示

一般情况下,将 TolFunTolX 容差设置为远高于 eps 并通常高于 1e-14。设置小容差并不能保证得到精确的结果。相反,求解器在收敛时无法识别,并可能继续进行无用的迭代。容差值小于 eps 实际上是禁用了这种终止条件。此技巧不适用于 fzero,它为 TolX 使用默认值 eps

  • TolX 是步长的下界,表示 (xi – xi+1) 的范数。如果求解器尝试小于 TolX 的步长,则终止迭代。求解器通常将 TolX 用作相对边界,表示在达到 |(xi – xi+1)| < TolX*(1 + |xi|) 或类似的相对测度时终止迭代。

    Plot showing how iterations end when the last step is smaller than TolFun or TolX.

  • TolFun 是步长中目标函数值变化的下边界。如果 |f(xi) – f(xi+1)| < TolFun,则终止迭代。求解器通常将 TolFun 用作相对边界,表示在达到 |f(xi) – f(xi+1)| < TolFun(1 + |f(xi)|) 或类似的相对测度时终止迭代。

  • MaxIter 是求解器迭代数量的边界。MaxFunEvals 是函数求值数量的边界。

注意

与其他求解器不同,fminsearch同时满足 TolFunTolX 时停止运行。

输出结构体

output 结构体包括函数计算次数、迭代次数和算法。当为 fminbndfminsearchfzero 提供第四个输出参量时,将显示此结构体,如下所示

[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);

函数参考页面上提供了每个求解器的 output 结构体的详细信息。

output 结构体选项不能选择用于 optimset。它是 fminbndfminsearchfzero 的可选输出。

相关主题