Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

optimset

创建或修改优化 options 结构体

说明

为 MATLAB® 求解器创建或修改 options 结构体。

注意

fzerofminbndfminsearchlsqnonneg 之外,建议对所有求解器都使用 optimoptions 而不是 optimset

示例

options = optimset(Name,Value) 返回 options,其中包含使用一个或多个名称-值对组参数设置的指定参数。

optimset(不带输入或输出参数)显示完整的参数列表及其有效值。

options = optimset(不带输入参数)创建 options 结构体 options,其中所有参数设置为 []

示例

options = optimset(optimfun) 创建 options,其中包含与优化函数 optimfun 相关的所有参数名称及其默认值。

示例

options = optimset(oldopts,Name,Value) 创建 oldopts 的副本,并使用一个或多个名称-值对组参数修改指定的参数。

示例

options = optimset(oldopts,newopts) 合并现有 options 结构体 oldopts 和新 options 结构体 newoptsnewopts 中任何具有非空值的参数将覆盖 oldopts 中其对应的参数。

示例

全部折叠

fminsearch 设置选项,以使用绘图函数并应用比默认值更严格的停止条件。

options = optimset('PlotFcns','optimplotfval','TolX',1e-7);

从点 (–1,2) 开始最小化 Rosenbrock 函数,并使用选项监控最小化过程。Rosenbrock 函数在点 (1,1) 处有最小值 0。

fun = @(x)100*((x(2) - x(1)^2)^2) + (1 - x(1))^2; % Rosenbrock's function
x0 = [-1,2];
[x,fval] = fminsearch(fun,x0,options)

Figure Optimization Plot Function contains an axes. The axes with title Current Function Value: 4.73054e-16 contains an object of type line.

x = 1×2

    1.0000    1.0000

fval = 4.7305e-16

创建一个包含 fzero 求解器默认选项的结构体。

options = optimset('fzero');

查看 fzeroTolX 选项的默认值。

tol = options.TolX
tol = 2.2204e-16

设置选项以使用函数容差 1e-6

oldopts = optimset('TolFun',1e-6);

修改 oldopts 中的选项,以使用绘图函数 'optimplotfval'TolX1e-6

options = optimset(oldopts,'PlotFcns','optimplotfval','TolX',1e-6);

查看您设置的三个选项。

disp(options.TolFun);
   1.0000e-06
disp(options.PlotFcns);
optimplotfval
disp(options.TolX);
   1.0000e-06

通过使用 optimset,用另一个 options 结构体覆盖原 options 结构体的对应部分。

oldopts = optimset('Display','iter','TolX',1e-6);
newopts = optimset('PlotFcns','optimplotfval','Display','off');
options = optimset(oldopts,newopts);

oldoptsnewopts 都设置 Display 选项的值。对于此选项,检查 newopts 是否覆盖了 oldopts

options.Display
ans = 
'off'

检查其他两个选项的值。

options.TolX
ans = 1.0000e-06
options.PlotFcns
ans = 
'optimplotfval'

输入参数

全部折叠

优化求解器,指定为名称或函数句柄。返回的 options 结构体只包含指定求解器的非空项。

示例: options = optimset('fzero')

示例: options = optimset(@fminsearch)

数据类型: char | string | function_handle

以前的优化选项,指定为结构体。输出 options 除指定参数外均与 oldopts 相同。

示例: options = optimset(oldopts,'TolX',1e-6)

数据类型: struct

新优化选项,指定为结构体。输出 optionsnewopts 相同,并且包括那些在 newopts 中为空、但在 oldopts 中非空的参数。

示例: options = optimset(oldopts,newopts)

数据类型: struct

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: options = optimset('TolX',1e-6,'PlotFcns',@optimplotfval)

您只需输入足够的前导字符来唯一定义选项名称。optimset 忽略选项名称的大小写。

显示级别,指定为由 'Display' 和下列值之一组成的以逗号分隔的对组:

  • 'notify' - 仅在函数未收敛时显示输出。

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

  • 'off''none' - 不显示输出。

  • 'iter' - 在每次迭代时显示输出(不适用于 lsqnonneg)。

Display 适用于所有优化求解器。

示例: options = optimset('Display','iter')

数据类型: char | string

检查函数值是否有效的标志,指定为以逗号分隔的对组,由 'FunValCheck' 和值 'off''on' 组成。当值为 'on' 时,如果目标函数返回复数值或 NaN,求解器会显示错误。

FunValCheck 适用于 fminbndfminsearchfzero

示例: options = optimset('FunValCheck','on')

数据类型: char | string

函数计算的最大次数,指定为以逗号分隔的对组,该对组由 'MaxFunEvals' 和一个正整数组成。

MaxFunEvals 适用于 fminbndfminsearch

示例: options = optimset('MaxFunEvals',2e3)

数据类型: single | double

最大迭代次数,指定为以逗号分隔的对组,其中包含 'MaxIter' 和一个正整数。

MaxIter 适用于 fminbndfminsearch

示例: options = optimset('MaxIter',2e3)

数据类型: single | double

输出函数,指定为以逗号分隔的对组,其中包含 'OutputFcn' 和一个函数名称或函数句柄。以函数句柄元胞数组形式指定多个输出函数。每次迭代后都会运行一个输出函数,使您能够监控求解过程或停止迭代。有关详细信息,请参阅优化求解器输出函数

OutputFcn 适用于 fminbndfminsearchfzero

示例: options = optimset('OutputFcn',{@outfun1,@outfun2})

数据类型: char | string | cell | function_handle

绘图函数,指定为以逗号分隔的对组,其中包含 'PlotFcns' 和一个函数名称或函数句柄。以函数句柄元胞数组形式指定多个绘图函数。每次迭代后都会运行一个绘图函数,使您能够监控求解过程或停止迭代。有关详细信息,请参阅绘图函数Output Function and Plot Function Syntax

内置绘图函数如下:

  • @optimplotx 绘制当前点。

  • @optimplotfval 绘制函数值。

  • @optimplotfunccount 绘制函数计数(不适用于 fzero)。

PlotFcns 适用于 fminbndfminsearchfzero

示例: options = optimset('PlotFcns','optimplotfval')

数据类型: char | string | cell | function_handle

函数值的终止容差,指定为由 'TolFun' 和非负标量组成的以逗号分隔的对组。在当前函数值与先前值相差小于 TolFun 时(相对于初始函数值),迭代结束。请参阅容差和停止条件

TolFun 仅适用于 fminsearch

示例: options = optimset('TolFun',2e-6)

数据类型: single | double

当前点 x 处的终止容差,指定为由 'TolX' 和非负标量组成的以逗号分隔的对组。在当前点与先前点相差小于 TolX 时(相对于 x 的大小),迭代结束。请参阅容差和停止条件

TolX 适用于所有求解器。

示例: options = optimset('TolFun',2e-6)

数据类型: single | double

输出参数

全部折叠

优化选项,以结构体形式返回。您未设置的参数的返回值为 [],在此情况下,求解器会使用这些参数的默认值。

局限性

  • optimset 为以下四个 MATLAB 优化求解器设置选项:fminbndfminsearchfzerolsqnonneg。要为 Optimization Toolbox™ 或 Global Optimization Toolbox 求解器设置选项,推荐使用 optimoptions 函数。

  • optimset 不能为某些 Optimization Toolbox 求解器设置选项,如 intlinprog。请改用 optimoptions

  • optimset 不能为 Global Optimization Toolbox 求解器设置大多数选项。请改用 optimoptions

扩展功能

在 R2006a 之前推出