Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

optimset

创建或修改优化 options 结构体

说明

示例

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 object. The axes object with title Current Function Value: 4.73054e-16, xlabel Iteration, ylabel Function value contains an object of type scatter.

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

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 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' 和一个函数名称或函数句柄。以函数句柄元胞数组的形式指定多个绘图函数。每次迭代后都会运行一个绘图函数,使您能够监控求解过程或停止迭代。有关详细信息,请参阅优化求解器绘制函数

内置绘图函数如下:

  • @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('TolX',2e-6)

数据类型: single | double

输出参数

全部折叠

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

局限性

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

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

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

扩展功能

版本历史记录

在 R2006a 之前推出