主要内容

fminsearch.

使用衍生方法查找最小无规矩的多变量功能

描述

非线性规划求解器进行求解。查找指定问题的最小值

x f x

fx)是返回标量的函数,并且x是矢量或矩阵。

例子

x= fminsearch (有趣的x0从点开始x0并试图找到局部最小值x中所描述的函数有趣的

例子

x= fminsearch (有趣的x0选项结构中指定的优化选项最小化选项.使用optimset设置这些选项。

x= fminsearch (问题求最小值问题,在那里问题是一个结构。

例子

xfval) = fminsearch (___,对于任何先前的输入语法,返回fval目标函数的值有趣的在解决方案x

xfvalexitflag) = fminsearch (___另外返回一个值exitflag描述退出条件。

例子

xfvalexitflag输出) = fminsearch (___另外返回一个结构输出关于优化过程的信息。

例子

全部折叠

最小化Rosenbrock函数,对于许多算法来说,这是一个非常困难的优化问题:

f x 1 0 0 x 2 - x 1 2 2 + 1 - x 1 2

函数在这个点处是最小的x = [1,1]最小值0

设置起始点为x0 = (-1.2, 1)并尽量减少rosenbrock的功能fminsearch.

@(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;x0 = (-1.2, 1);x0, x = fminsearch(有趣)
X =1×21.0000 1.0000

将监视流程的选项设置为fminsearch.试图找到最小值。

设置选项以在每次迭代中绘制目标函数。

选项= OptimSet(“PlotFcns”, @optimplotfval);

将目标函数设为Rosenbrock函数,

f x 1 0 0 x 2 - x 1 2 2 + 1 - x 1 2

函数在这个点处是最小的x = [1,1]最小值0

设置起始点为x0 = (-1.2, 1)并尽量减少rosenbrock的功能fminsearch.

@(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;x0 = (-1.2, 1);x = fminsearch(有趣,x0,选项)

图优化绘图功能包含轴。具有标题电流函数值的轴:8.17766E-10包含类型线的对象。

X =1×21.0000 1.0000

最小化通过执行文件给出值的目标函数。函数文件必须接受实向量x并返回一个实标量,即目标函数的值。

复制以下代码并将其包含为命名的文件objectivefcn1.m在您的Matlab®路径上。

功能F = objecvefcn1 (x) F = 0;k = -10:10 f = f + exp( - (x(1)-x(2))^ 2  -  2 * x(1)^ 2)* cos(x(2))* sin(2 * x(2));结束

开始x0 = [0.25, -0.25]并寻找最小值ObjectFCN.

x0 = [0.25, -0.25];x = fminsearch (x0 @objectivefcn1)
X = -0.1696 -0.5086

有时您的客观函数具有额外的参数。这些参数不是优化的变量,它们是优化期间的固定值。例如,假设您有一个参数一个在rosenbrock类型函数中

f x 一个 1 0 0 x 2 - x 1 2 2 + 一个 - x 1 2

这个函数在点处的最小值为0 x 1 一个 x 2 一个 2 .例如,如果 一个 3. ,可以通过创建匿名函数将参数包含在目标函数中。

以额外的参数创建目标函数作为额外的参数。

F = @(x,a)100*(x(2) -x(1)²)^2 + (a-x(1))^2;

将参数放入MATLAB®工作空间中。

= 3;

创建匿名函数x单独包含参数的工作空间值。

有趣= @ (x) f (x);

解决问题x0 = [-1,1.9]

x0 = [-1,1.9];x0, x = fminsearch(有趣)
X =1×23.0000 - 9.0000

有关在目标函数中使用额外参数的更多信息,请参见参数化功能

使用下列方法找到目标函数的最小值和最小值的位置fminsearch.

为一个三变量问题写一个匿名目标函数。

x0 =(1、2、3);有趣= @ (x)规范(x + x0) ^ 2 * exp(规范(x-x0) ^ 2 + sum (x));

求最小值有趣的开始于x0.找到最小值的值。

[x, fval] = fminsearch(有趣,x0)
X =1×3.1.5359 2.5645 3.5932
fval = -5.9565e + 04

检查优化的结果,无论是在运行时还是完成后。

设置选项以提供迭代显示,它提供有关求解器运行的优化信息。此外,设置一个绘图函数,以显示求解器运行的目标函数值。

选项= OptimSet(“显示”“通路”“PlotFcns”, @optimplotfval);

设定目标函数和起点。

功能F = objecvefcn1 (x) F = 0;k = -10:10 f = f + exp( - (x(1)-x(2))^ 2  -  2 * x(1)^ 2)* cos(x(2))* sin(2 * x(2));结束

包括以下代码objectivefcn1作为MATLAB®路径中的一个文件。

x0 = [0.25, -0.25];有趣= @objectivefcn1;

获取所有求解器输出。使用这些输出在求解器完成后检查结果。

[x, fval exitflag、输出]= fminsearch(有趣,x0,选项)
迭代Func-count min f(x)步骤0 1 -6.70447 1 3 -6.89837初始单纯x 2 5 -7.34101展开3 7 -7.91894展开4 9 -9.07939展开5 11 -10.5047展开6 13 -12.4957展开7 15 -12.6957反映8 17 -12.8052在10 21 -13.0189内部的合同外面的契约11 21 -13.0189 12 25 -13.0374反映13 27 -13.122反射14 28 -13.122反映15 29 -13.122反映1611 -13.122在17外33 -13.1279内部的合约内部19 00-13.1279合同20 39 -13.13.1301内部21 41 -13.1305合同内部反映22 43 -13.1306合同23 45 -13.1309合同24 47 -13.1309合同25 49 -13.131在32 59 -13.131合同之外的29 57 -13.131合同内部29 55 -13.131合同内部的21 53 -13.131合同内部的合同反映2153 -13.131合同。31 65 -13.131合同内部33号签约34号合同67 -13.131合同内部35 69 -13.131合同INSIDE优化终止:当前x满足使用选项的终止标准.Tolx为1.000000E-04和F(x)使用选项的收敛标准满足1.000000E-04 x = -0.1696 -0.5086 FVAL = -13.1310 ExitFlag =1输出=带字段的结构:迭代:35 Funccount:69算法:'Nelder-Mead Simplex Direct Search'消息:'优化终止:...'

的价值exitflag1, 意义fminsearch.可能收敛到局部最小值。

输出结构显示迭代的数量。迭代显示器和绘图也显示了此信息。的输出结构还示出了迭代显示所显示的功能评估的数量,但是所选择的绘图函数没有。

输入参数

全部折叠

要最小化的函数,指定为函数句柄或函数名。有趣的是接受向量还是数组的函数x并返回一个真正的标量f(目标函数值为x).

指定有趣的作为文件的函数句柄:

x = fminsearch(@ myfun,x0)

在哪里myfun.MATLAB是一种®等功能

函数f = myfun(x)f = ...%compute函数值x

你也可以指定有趣的作为匿名功能的函数句柄:

x = fminsearch (@ (x)规范(x) ^ 2, x0);

例子:有趣= @ (x) - x * exp (3 * x)

数据类型:字符|function_handle|字符串

初始点,指定为实向量或实数组。的元素个数和大小,x0来确定变量的数量和大小有趣的接受。

例子:x0 = [1,2,3,4]

数据类型:

优化选项,指定为结构,如optimset返回。您可以使用optimset设置或更改选项结构中这些字段的值。看设置优化选项的详细信息。

展示

显示水平(见优化求解器迭代显示):

  • '通知'(默认)仅在函数不收敛时显示输出。

  • “最后一次”显示最终输出。

  • “关闭”要么“没有”显示没有输出。

  • “通路”显示每次迭代的输出。

funvalcheck.

检查目标函数值是否有效。“上”当目标函数返回值为时显示错误复杂的要么.默认的“关闭”没有错误。

MaxFunEvals

允许的函数求值的最大数目,一个正整数。默认值是200 * numberOfVariables.看公差和停止标准

麦克斯特

允许的最大迭代次数,一个正整数。默认值为200 * numberOfVariables.看公差和停止标准

OutputFcn

指定优化函数在每次迭代时调用的一个或多个用户定义函数,作为函数句柄或函数句柄的单元格数组。默认值为none([]).看优化求解器输出功能

PlotFcns

在算法执行的同时绘制各种进展措施。从预定义的地块中选择或写自己的。通过功能句柄或功能句柄的单元格数组。默认值为none([]):

  • @optimplotx绘制当前点。

  • @optimplotfunccount绘制函数计数。

  • @optimplotfval绘制函数值。

有关编写自定义绘图函数的信息,请参见优化求解器Plot函数

TolFun

函数值终止差值,正标量。默认值是1的军医.看公差和停止标准.不像其他的解决者,fminsearch.在满足时停止这两个TolFunTolX

TolX

终止宽容x,一个正标量。默认值为1的军医.看公差和停止标准.不像其他的解决者,fminsearch.在满足时停止这两个TolFunTolX

例子:选项= OptimSet('显示','iter')

数据类型:结构体

问题结构,指定为具有以下字段的结构。

字段名 条目

客观的

目标函数

x0

初始点x

解算器

'fminsearch'

选项

选项结构,如返回optimset

数据类型:结构体

输出参数

全部折叠

解,返回实向量或实数组。的大小x与大小相同x0.通常情况下,x是当地解决问题的地方exitflag是正的。

目标函数在解处的值,以实数返回。一般来说,fval有趣(x)

原因fminsearch.已停止,返回为整数。

1

这个函数收敛到一个解x

0

超过迭代次数选项。麦克斯特或超过函数求值次数选项。MaxFunEvals

-1

算法由输出函数终止。

关于优化过程的信息,作为带有字段的结构返回:

迭代

迭代次数

funcCount

函数计算次数

算法

Nelder-Mead单形直接搜索

消息

退出消息

提示

  • fminsearch.只最小化实数,即向量或数组x必须只有实数和fx)必须仅返回实数。当x有复数,分裂x分为实部和虚部。

  • 使用fminsearch.解决不可微问题或有不连续的问题,特别是在解附近没有不连续的情况下。

算法

fminsearch.采用Lagarias等人的单纯形搜索方法。[1].这是一种直接搜索方法,不使用数字或分析梯度Fminunc.(优化工具箱).文中详细描述了该算法fminsearch算法.该算法不能保证收敛到局部最小值。

选择功能

应用程序

优化活动编辑器任务为fminsearch.

参考文献

J. C. Lagarias, J. C. reed, M. H. Wright和P. E. Wright。低维中Nelder-Mead单纯形法的收敛性SIAM优化学报.卷。9,第1,199号,第112页,第112-147页。

扩展功能

在R2006A之前介绍