optimset
创建或修改优化 options 结构体
语法
说明
返回 options
= optimset(Name,Value
)options
,其中包含使用一个或多个名称-值对组参量设置的指定参数。
optimset
(不带输入或输出参量)显示完整的参数列表及其有效值。
(不带输入参量)创建 options 结构体 options
= optimsetoptions
,其中所有参数都设置为 []
。
创建 options
= optimset(oldopts
,Name,Value
)oldopts
的副本,并使用一个或多个名称-值对组参量修改指定参数。
示例
创建非默认选项
为 fminsearch
设置选项,以使用绘图函数并应用比默认值更严格的停止条件。
options = optimset('PlotFcns','optimplotfval','TolX',1e-7);
从点 (–1,2) 开始最小化罗森布罗克函数,并使用选项监控最小化过程。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)
x = 1×2
1.0000 1.0000
fval = 4.7305e-16
为求解器创建默认选项
创建一个包含 fzero
求解器默认选项的结构体。
options = optimset('fzero');
查看 fzero
的 TolX
选项的默认值。
tol = options.TolX
tol = 2.2204e-16
修改选项
设置选项以使用函数容差 1e-6
。
oldopts = optimset('TolFun',1e-6);
修改 oldopts
中的选项,以使用绘图函数 'optimplotfval'
和 TolX
值 1e-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
使用新 options 结构体更新原 options 结构体
通过使用 optimset
,用另一个 options 结构体覆盖原 options 结构体的对应部分。
oldopts = optimset('Display','iter','TolX',1e-6); newopts = optimset('PlotFcns','optimplotfval','Display','off'); options = optimset(oldopts,newopts);
oldopts
和 newopts
都设置了 Display
选项的值。对于此选项,检查 newopts
是否覆盖了 oldopts
。
options.Display
ans = 'off'
检查其他两个选项的值。
options.TolX
ans = 1.0000e-06
options.PlotFcns
ans = 'optimplotfval'
输入参数
optimfun
— 优化求解器
名称 | 函数句柄
优化求解器,指定为名称或函数句柄。返回的 options 结构体只包含指定求解器的非空项。
示例: options = optimset('fzero')
示例: options = optimset(@fminsearch)
数据类型: char
| string
| function_handle
oldopts
— 以前的优化选项
结构体
以前的优化选项,指定为结构体。输出 options
除指定参数外均与 oldopts
相同。
示例: options = optimset(oldopts,'TolX',1e-6)
数据类型: struct
newopts
— 新优化选项
结构体
新优化选项,指定为结构体。输出 options
与 newopts
相同,并且包括那些在 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'
显示级别,指定为由 'Display' 和下列值之一组成的以逗号分隔的对组:
'notify'
- 仅在函数未收敛时显示输出。'final'
- 仅显示最终输出。'off'
或'none'
- 不显示输出。'iter'
- 在每次迭代时显示输出(不适用于lsqnonneg
)。
Display
适用于所有优化求解器。
示例: options = optimset('Display','iter')
数据类型: char
| string
FunValCheck
— 检查函数值是否有效的标志
'off'
(默认) | 'on'
检查函数值是否有效的标志,指定为以逗号分隔的对组,由 'FunValCheck'
和值 'off'
或 'on'
组成。当值为 'on'
时,如果目标函数返回复数值或 NaN
,求解器会显示错误。
FunValCheck
适用于 fminbnd
、fminsearch
和 fzero
。
示例: options = optimset('FunValCheck','on')
数据类型: char
| string
MaxFunEvals
— 函数计算的最大次数
500
(对于 fminbnd
)或 200*(number of variables)
(对于 fminsearch
) (默认) | 正整数
函数计算的最大次数,以逗号分隔的对组形式指定,该对组由 'MaxFunEvals'
和一个正整数组成。
MaxFunEvals
适用于 fminbnd
和 fminsearch
。
示例: options = optimset('MaxFunEvals',2e3)
数据类型: single
| double
MaxIter
— 最大迭代次数
500
(对于 fminbnd
)或 200*(number of variables)
(对于 fminsearch
) (默认) | 正整数
最大迭代次数,以逗号分隔的对组形式指定,该对组由 'MaxIter'
和一个正整数组成。
MaxIter
适用于 fminbnd
和 fminsearch
。
示例: options = optimset('MaxIter',2e3)
数据类型: single
| double
OutputFcn
— 输出函数
[]
(默认) | 函数名称 | 函数句柄 | 函数句柄的元胞数组
输出函数,以逗号分隔的对组形式指定,其中包含 'OutputFcn'
和一个函数名称或函数句柄。以函数句柄元胞数组的形式指定多个输出函数。每次迭代后都会运行一个输出函数,使您能够监控求解过程或停止迭代。有关详细信息,请参阅优化求解器输出函数。
OutputFcn
适用于 fminbnd
、fminsearch
和 fzero
。
示例: options = optimset('OutputFcn',{@outfun1,@outfun2})
数据类型: char
| string
| cell
| function_handle
PlotFcns
— 绘图函数
[]
(默认) | 函数名称 | 函数句柄 | 函数句柄的元胞数组
绘图函数,以逗号分隔的对组形式指定,其中包含 'PlotFcns'
和一个函数名称或函数句柄。以函数句柄元胞数组的形式指定多个绘图函数。每次迭代后都会运行一个绘图函数,使您能够监控求解过程或停止迭代。有关详细信息,请参阅优化求解器绘制函数。
内置绘图函数如下:
@optimplotx
绘制当前点。@optimplotfval
绘制函数值。@optimplotfunccount
绘制函数计数(不适用于fzero
)。
PlotFcns
适用于 fminbnd
、fminsearch
和 fzero
。
示例: options = optimset('PlotFcns','optimplotfval')
数据类型: char
| string
| cell
| function_handle
TolFun
— 函数值的终止容差
1e-4
(默认) | 非负标量
函数值的终止容差,指定为由 'TolFun'
和非负标量组成的以逗号分隔的对组。在当前函数值与先前值相差小于 TolFun
时(相对于初始函数值),迭代结束。请参阅容差和终止条件。
TolFun
仅适用于 fminsearch
。
示例: options = optimset('TolFun',2e-6)
数据类型: single
| double
TolX
— 关于当前点 x
的终止容差
1e-4
(对于 fminbnd
和 fminsearch
)或 eps
(对于 fzero
)或 10*eps*norm(c,1)*length(c)
(对于 lsqnonneg
) (默认) | 非负标量
关于当前点 x
的终止容差,指定为由 'TolX'
和非负标量组成的以逗号分隔的对组。在当前点与先前点相差小于 TolX
时(相对于 x
的大小),迭代结束。请参阅容差和终止条件。
TolX
适用于所有求解器。
示例: options = optimset('TolX',2e-6)
数据类型: single
| double
输出参量
options
— 优化选项
结构体
优化选项,以结构体形式返回。您未设置的参数具有值 []
,在此情况下,求解器会使用这些参数的默认值。
局限性
optimset
为四个 MATLAB® 优化求解器设置选项:fminbnd
、fminsearch
、fzero
和lsqnonneg
。要为 Optimization Toolbox™ 或 Global Optimization Toolbox 求解器设置选项,推荐使用optimoptions
(Optimization Toolbox) 函数。optimset
不能为某些 Optimization Toolbox 求解器设置选项,如intlinprog
。请改用optimoptions
(Optimization Toolbox)。optimset
不能设置 Global Optimization Toolbox 求解器的大多数选项。请改用optimoptions
(Optimization Toolbox)。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
代码生成不支持没有输入或输出参量的语法:
optimset
options
中指定的函数必须支持代码生成。输入参量
optimfun
必须是支持代码生成的函数。Options 结构体
oldopts
的字段必须具有固定大小。代码生成将忽略
Display
选项。代码生成不支持由 Optimization Toolbox
optimset
函数创建的 options 结构体中的其他选项。如果输入 options 结构体中包含其他 Optimization Toolbox 选项,输出结构体中将不包含它们。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2006a 之前推出
另请参阅
optimget
| fminbnd
| fminsearch
| fzero
| lsqnonneg
| optimoptions
(Optimization Toolbox)
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)