主要内容

patternsearch

利用模式搜索找到函数的最小值

描述

例子

x= patternsearch (有趣的x0找到一个局部极小值,x,到函数句柄有趣的计算目标函数的值。x0为模式搜索算法指定初始点的实向量。

请注意

传递额外的参数解释如何在必要时将额外的参数传递给目标函数和非线性约束函数。

例子

x= patternsearch (有趣的x0一个b最小化有趣的根据线性不等式* xb.看到线性不等式约束

x= patternsearch (有趣的x0一个bAeq说真的最小化有趣的服从于线性等式Aeq * x说真的而且* xb.如果不存在线性不等式,则设置一个= []而且b = []

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托中设计变量的下界和上界x,所以解总是在值域内x乌兰巴托.如果不存在线性等式,则设置Aeq = []而且说真的= [].如果x(我)有没有下限,设磅(i) =负无穷.如果x(我)没有上界,集合吗乌兰巴托(i) =正无穷

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托nonlcon使最小化服从于非线性不等式c (x)或平等量表(x)中定义的nonlconpatternsearch优化有趣的这样c (x)≤0而且量表(x) = 0.如果不存在边界,则设置磅= []乌兰巴托= [],或两者兼而有之。

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托nonlcon选项最小化有趣的中指定的优化选项选项.使用optimoptions设置这些选项。如果没有非线性不等式或不等式约束,则设置nonlcon = []

x= patternsearch (问题找到最小值问题中描述的结构问题

例子

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

例子

xfvalexitflag输出) = patternsearch (___此外回报exitflag的退出条件patternsearch,以及一个结构输出包含关于优化过程的信息。

例子

全部折叠

方法将无约束问题最小化patternsearch解算器。

创建以下双变量目标函数。在您的MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

求最小值,从这个点开始(0,0)

x0 = (0,0);x0, x = patternsearch(有趣)
优化终止:网格尺寸小于options.MeshTolerance。X = -0.7037 -0.1860

最小化受线性不等式约束的函数。

创建以下双变量目标函数。在您的MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

设置两个线性不等式约束。

一个= [3 2;4、7];b = (1; 8);

求最小值,从这个点开始[0.5, -0.5]

x0 = [0.5, -0.5];x = patternsearch(乐趣,x0, A, b)
优化终止:网格尺寸小于options.MeshTolerance。X = 5.2827 -1.8758

求一个只有约束条件的函数的最小值。

创建以下双变量目标函数。在您的MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

找出最小值$0 \le x(1) \le\infty$而且$-\infty \le x(2) \le -3$

磅=(0,负);乌兰巴托=[正无穷,3];一个= [];b = [];Aeq = [];说真的= [];

求最小值,从这个点开始(1、5)

x0 =(1、5);x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
优化终止:网格尺寸小于options.MeshTolerance。X = 0.1880 -3.0000

求受非线性不等式约束的函数的最小值。

创建以下双变量目标函数。在您的MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

创建非线性约束

$ $ \压裂{{xy}}{2} +{\离开({x + 2} \右)^ 2}+ \压裂{{{{\离开({y - 2} & # xA; \右)}^ 2}}}{2}\ le 2。$ $

为此,在您的MATLAB路径上,将以下代码保存到一个名为ellipsetilt.m

函数[c,ceq] = ellipsetilt(x) ceq = [];C = x(1)*x(2)/2 + (x(1)+2)²+ (x(2)-2;

开始patternsearch从起点开始(2, 2)

x0 = (2, 2);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = @ellipsetilt;x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
优化终止:网格尺寸小于选项。MeshTolerance而且constraint violation is less than options.ConstraintTolerance. x = -1.5144 0.0875

有时是不同的patternsearch算法有明显不同的行为。虽然很难预测哪种算法对某个问题最有效,但您可以轻松地尝试不同的算法。对于本例,使用sawtoothxy目标函数,在运行此示例时可用,并在其中进行了描述和绘制查找全局或多个局部极小值

类型sawtoothxy
函数f = sawtoothxy(x,y) [t r] = cart2pol(x,y);%变换到极坐标h = cos(2*t - 1/2)/2 + cos(t) + 2;g = (sin (r) -罪(2 * r) / 2 +罪(3 * r) / 3 -罪(4 * r) / 4 + 4)…。* r。^ 2. / (r + 1);f = g。* h;结束

为了观察不同算法在最小化这个目标函数时的行为,设置一些非对称边界。也设置一个初始点x0这远非真正的解决方案Sol = [0 0],在那里sawtoothxy (0, 0) = 0

rng默认的x0 = 12 * randn(1、2);磅=(-15、-26);乌兰巴托=(26日15);有趣= @ (x) sawtoothxy (x (1), (2));

最小化sawtoothxy函数使用“经典”patternsearch算法。

optsc = optimoptions (“patternsearch”算法=“经典”);[溶胶,fval eflag、输出]= patternsearch(有趣,...x0 ,[],[],[],[], 磅,乌兰巴托,[],optsc)
优化终止:网格尺寸小于options.MeshTolerance。
索尔=1×2105×0.9825 0
fval = 1.3278 e-09
eflag = 1
输出=结构体字段:function: @(x)sawtoothxy(x(1),x(2)) problemtype: 'boundconstraints' pollmethod: 'gpspositivebasis2n' maxconstraint: 0 searchmethod: [] iterations: 52 funccount: 168 meshsize: 9.5367e-07 rngstate: [1×1 struct] message: '优化终止:meshsize小于options.MeshTolerance.'

“经典”算法经过52次迭代和168次函数求值,得到全局解。

“国家联盟”算法。

rng默认的%的再现性optsn = optimoptions (“patternsearch”算法=“国家联盟”);[溶胶,fval eflag、输出]= patternsearch(有趣,...x0 ,[],[],[],[], 磅,乌兰巴托,[],optsn)
优化终止:网格尺寸小于options.MeshTolerance。
索尔=1×26.3204 - 15.0000
fval = 85.9256
eflag = 1
输出=结构体字段:function: @(x)sawtoothxy(x(1),x(2)) problemtype: 'boundconstraints' pollmethod: 'nups' maxconstraint: 0 searchmethod: [] iterations: 29 funccount: 88 meshsize: 7.1526e-07 rngstate: [1×1 struct] message: '优化终止:meshsize小于options.MeshTolerance.'

这一次,求解器只经过29次迭代和88次函数计算就得到了一个局部解,但该解不是全局解。

试着使用“nups-mads”算法,它在坐标方向上没有步骤。

rng默认的%的再现性optsm = optimoptions (“patternsearch”算法=“nups-mads”);[溶胶,fval eflag、输出]= patternsearch(有趣,...x0 ,[],[],[],[], 磅,乌兰巴托,[],optsm)
优化终止:网格尺寸小于options.MeshTolerance。
索尔=1×2104×-0.5275 - 0.0806
fval = 1.5477 e-08
eflag = 1
输出=结构体字段:function: @(x)sawtoothxy(x(1),x(2)) problemtype: 'boundconstraints' pollmethod: 'nups-mads' maxconstraint: 0 searchmethod: [] iterations: 55 funccount: 189 meshsize: 9.5367e-07 rngstate: [1×1 struct] message: '优化终止:meshsize小于options.MeshTolerance.'

这一次,求解器在55次迭代和189次函数计算中达到全局解,这与“经典”算法。

设置选项以观察进度patternsearch解决方案的过程。

创建以下双变量目标函数。在你的MATLAB®路径,将以下代码保存到名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

选项进行迭代显示,并在每次迭代时绘制目标函数。

选择= optimoptions (“patternsearch”“显示”“通路”“PlotFcn”, @psplotbestf);

从这个点开始寻找目标的无约束最小值(0,0)

x0 = (0,0);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)

Iter f-count f(x) MeshSize Method 0 1 1 1 4 -5.88607 2 Successful Poll 2 8 -5.88607 Refine Mesh 3 12 -5.88607 0.5 Refine Mesh 4 16 -5.88607 0.25 Refine Mesh (output trim) 63 218 -7.02545 1.907e-06 Refine Mesh 64 221 -7.02545 3.815e-06 Successful Poll 65 225 -7.02545 1.907e-06 Refine Mesh 66 229 -7.02545 9.537e-07 Refine Mesh Optimization terminated: Mesh size小于option . meshtolerance。X = -0.7037 -0.1860

找到一个函数的最小值,并报告最小值的位置和值。

创建以下双变量目标函数。在您的MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

从这个点开始,找到目标的无约束最小值(0,0).返回最小值的位置,x的值有趣的(x)

x0 = (0,0);[x, fval] = patternsearch(有趣,x0)
优化终止:网格尺寸小于options.MeshTolerance。X = -0.7037 -0.1860 fval = -7.0254

检查patternsearch求解过程中,得到所有输出。

创建以下双变量目标函数。在您的MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

从这个点开始,找到目标的无约束最小值(0,0).返回的解决方案,x为目标函数在解处的值,有趣的(x)、退出标志和输出结构。

x0 = (0,0);[x, fval exitflag、输出]= patternsearch(有趣,x0)
优化终止:网格尺寸小于options.MeshTolerance。x = -0.7037 -0.1860 fval = -7.0254 exitflag = 1 output = struct with fields: function: @psobj problemtype: 'unconstrained' pollmethod: 'gpspositivebasis2n' maxconstraint: [] searchmethod: [] iterations: 66 funccount: 229 meshsize: 9.5367e-07 rngstate: [1x1 struct] message: '优化结束:meshsize less than options.MeshTolerance.'

exitflag1,表示收敛到局部最小值。

输出结构包含诸如迭代次数等信息patternsearch取了多少函数的值。的结果与此输出结构进行比较使用非默认选项的模式搜索.在那个例子中,您获得了一些信息,但是没有获得,例如,函数求值的数量。

输入参数

全部折叠

要最小化的函数,指定为函数句柄或函数名。的有趣的函数接受一个向量x并返回一个实标量f,即目标函数在x

您可以指定有趣的作为文件的函数句柄

x = patternsearch (x0 @myfun)

在这里,myfun是MATLAB函数,如

函数F = myfun(x) F =...计算函数在x处的值

有趣的也可以是匿名函数的函数句柄

x = patternsearch (@ (x)规范(x) ^ 2, x0, A, b);

例子:有趣= @ (x) sin (x (1)) * cos (x (2))

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

初始点,指定为实向量。patternsearch中元素的数量x0来确定变量的数量有趣的接受。

例子:x0 =(1、2、3、4)

数据类型:

线性不等式约束,指定为实矩阵。一个是一个——- - - - - -据nvar矩阵,是不等式的个数。

一个编码线性不等式

A * x < =

在哪里x列向量是据nvar变量x (:),b列向量是元素。

例如,指定

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30日

给这些约束:

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:若要指定控制变量的和为1或更少,请给出约束条件一个= 1 (1,N)而且b = 1

数据类型:

线性不等式约束,指定为实向量。b是一个元素向量相关的一个矩阵。如果你通过b作为行向量,求解器内部转换b到列向量b (:)

b编码线性不等式

A * x < =

在哪里x列向量是N变量x (:),一个矩阵的大小——- - - - - -N

例如,指定

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30日

给这些约束:

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:若要指定控制变量的和为1或更少,请给出约束条件一个= 1 (1,N)而且b = 1

数据类型:

线性等式约束,指定为实矩阵。Aeq是一个——- - - - - -据nvar矩阵,是等式的个数。

Aeq编码线性等式

Aeq * x =说真的

在哪里x列向量是N变量x (:),说真的列向量是元素。

例如,指定

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,

给这些约束:

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:要指定控制变量的和为1,请给出约束条件Aeq = 1 (1, N)而且说真的= 1

数据类型:

线性等式约束,指定为实向量。说真的是一个元素向量相关的Aeq矩阵。如果你通过说真的作为行向量,求解器内部转换说真的到列向量说真的(:)

说真的编码线性等式

Aeq * x =说真的

在哪里x列向量是N变量x (:),Aeq矩阵的大小微地震——- - - - - -N

例如,指定

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,

给这些约束:

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:要指定控制变量的和为1,请给出约束条件Aeq = 1 (1, N)而且说真的= 1

数据类型:

下界,指定为实向量或实数组。如果元素的个数x0等于的,然后指定

x(我)> =磅(我)

对所有

如果元素个数(磅)<元素个数(x0),然后指定

x(我)> =磅(我)

1 <= I <= numel(lb)

在这种情况下,求解器发出警告。

例子:要指定所有控制变量为正,磅= 0(大小(x0))

数据类型:

上界,指定为实向量或实数组。如果元素的个数x0等于的乌兰巴托,然后乌兰巴托指定

x (i) < =乌兰巴托(我)

对所有

如果元素个数(乌兰巴托)<元素个数(x0),然后乌兰巴托指定

x (i) < =乌兰巴托(我)

1 <= I <= numel(ub)

在这种情况下,求解器发出警告。

例子:要指定所有控制变量都小于1,乌兰巴托= 1(大小(x0))

数据类型:

非线性约束,指定为函数句柄或函数名。nonlcon函数是否接受向量或数组x并返回两个数组,c (x)而且量表(x)

  • c (x)是非线性不等式的数组约束在xpatternsearch试图满足

    c (x) < = 0

    对于所有的项c

  • 量表(x)是非线性等式约束的数组xpatternsearch试图满足

    量表(x) = 0

    对于所有的项量表信

例如,

x = patternsearch (Aeq @myfun x0, A, b,说真的,磅,乌兰巴托,@mycon)

在哪里mycon是MATLAB函数,如

函数[c,ceq] = mycon(x) c =...计算x处的非线性不等式。量表信=...计算在x处的非线性等式。
有关更多信息,请参见非线性约束

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

方法返回的对象指定的优化选项optimoptions(推荐),或结构。

优化选项如下表所示。optimoptions中显示的选项斜体;看到optimoptions隐藏的选项{}表示默认值。详情请参阅模式搜索选项

选项patternsearch

选项 描述
算法 所使用的算法patternsearch.的算法设置会影响可用选项。具体算法请参见模式搜索轮询如何工作而且非均匀模式搜索(NUPS)算法 {“经典”}|“国家联盟”|“nups-gps”|“nups-mads”
缓存

缓存设置为“上”patternsearch保存它轮询的网格点的历史。在后继的迭代中,patternsearch民调得分不接近已民调得分。如果需要使用此选项patternsearch计算目标函数时运行较慢。如果目标函数是随机的,不要使用这个选项。

请注意

缓存当并行运行求解器时不能工作。

“上”|{“关闭”}

CacheSize

历史的大小。

积极的标量|{1 e4}

CacheTol

从当前网格点到历史上任何点的最大距离为patternsearch避免轮询当前点。如果使用缓存选项设置为“上”

积极的标量|{eps}

ConstraintTolerance

公差约束。

对于选项结构,使用TolCon

积极的标量|{1 e-6}

显示

显示级别,意味着有多少信息patternsearch在解决方案过程中返回到命令行。

“关闭”|“通路”|“诊断”|{“最终”}
FunctionTolerance

函数上的公差。如果函数值的变化小于则迭代停止FunctionTolerance并且网目尺寸小于StepTolerance.此选项不适用于MADS(网格自适应直接搜索)轮询。

对于选项结构,使用TolFun

积极的标量|{1 e-6}

InitialMeshSize

算法的初始网格大小。看到模式搜索轮询如何工作

积极的标量|{1.0}

InitialPenalty

惩罚参数的初始值。看到非线性约束求解算法

积极的标量|{10}

MaxFunctionEvaluations

目标函数评价的最大次数。

对于选项结构,使用MaxFunEvals

正整数|{" 2000 * numberOfVariables "},在那里numberOfVariables问题变量的数量是多少

MaxIterations

最大迭代次数。

对于选项结构,使用麦克斯特

正整数|{" 100 * numberOfVariables "},在那里numberOfVariables问题变量的数量是多少

MaxMeshSize

在轮询或搜索步骤中使用的最大网格大小。看到模式搜索轮询如何工作

积极的标量|{Inf}

MaxTime

允许优化的总时间(以秒为单位)。

对于选项结构,使用期限

积极的标量|{Inf}

MeshContractionFactor

迭代失败的网格收缩因子。

此选项仅适用于以下情况算法“经典”

对于选项结构,使用MeshContraction

积极的标量|{0.5}

MeshExpansionFactor

成功迭代的网格扩展因子。

此选项仅适用于以下情况算法“经典”

对于选项结构,使用MeshExpansion

积极的标量|{2.0}

MeshRotate

标记以在声明一个点为最佳点之前旋转模式。看到网格选项

此选项仅适用于以下情况算法“经典”

“关闭”|{" "}

MeshTolerance

网目尺寸公差。

对于选项结构,使用TolMesh

积极的标量|{1 e-6}

OutputFcn

由优化函数在每次迭代时调用的函数。指定为函数句柄或函数句柄的单元格数组。

对于选项结构,使用OutputFcns

函数句柄或函数句柄的单元格数组|{[]}

PenaltyFactor

点球更新参数。看到非线性约束求解算法

积极的标量|{100}

PlotFcn

模式搜索的输出图。指定为内置绘图函数的名称、函数句柄或内置绘图函数或函数句柄名称的单元格数组。

对于选项结构,使用PlotFcns

{[]}|“psplotbestf”|“psplotfuncount”|“psplotmeshsize”|“psplotbestx”|“psplotmaxconstr”|自定义绘制函数

PlotInterval

图的迭代次数。1意味着绘制每一次迭代,2意味着每隔一次迭代绘制一次图,以此类推。

正整数|{1}

PollMethod

模式搜索中使用的轮询策略。

此选项仅适用于以下情况算法“经典”

请注意

当问题具有线性等式约束时,不能使用MADS轮询。

{" GPSPositiveBasis2N "}|“GPSPositiveBasisNp1”|“GSSPositiveBasis2N”|“GSSPositiveBasisNp1”|“MADSPositiveBasis2N”|“MADSPositiveBasisNp1”

PollOrderAlgorithm

模式搜索中投票方向的顺序。

此选项仅适用于以下情况算法“经典”

对于选项结构,使用PollingOrder

“随机”|“成功”|{“连续”}

ScaleMesh

自动缩放变量。

对于选项结构,使用ScaleMesh“上”“关闭”

{真的}|

SearchFcn

模式搜索中使用的搜索类型。指定为名称或函数句柄。

对于选项结构,使用SearchMethod

"GPSPositiveBasis2N" | "GPSPositiveBasisNp1" | "GSSPositiveBasis2N" | "GSSPositiveBasisNp1" | "MADSPositiveBasis2N" | "MADSPositiveBasisNp1" | "searchga" | "searchlhs" | "searchneldermead" | " rbf代孕" | {[]}|自定义搜索功能

StepTolerance

变量上的公差。如果位置的变化和网格尺寸都小于,迭代就会停止StepTolerance.此选项不适用于MADS轮询。

对于选项结构,使用TolX

积极的标量|{1 e-6}

TolBind

绑定的宽容。看到约束参数

积极的标量|{1 e - 3}

UseCompletePoll

标志以完成围绕当前点的轮询。看到模式搜索轮询如何工作

此选项仅适用于以下情况算法“经典”

请注意

“经典”算法,你必须设置UseCompletePoll真正的用于向量化或并行轮询。类似地,组UseCompleteSearch真正的用于向量化或并行搜索。

从R2019a开始,当您设置UseParallel选项真正的patternsearch内部覆盖UseCompletePoll设置为真正的所以函数是并行轮询的。

对于选项结构,使用CompletePoll“上”“关闭”

真正的|{假}

UseCompleteSearch

标志,以在搜索方法为轮询方法时完成围绕当前点的搜索。看到搜索和轮询

此选项仅适用于以下情况算法“经典”

请注意

“经典”算法,你必须设置UseCompleteSearch真正的用于向量化或并行搜索。

对于选项结构,使用CompleteSearch“上”“关闭”

真正的|{假}

UseParallel

标志并行计算目标函数和非线性约束函数。看到矢量化和并行选项而且如何在全局优化工具箱中使用并行处理

请注意

“经典”算法,你必须设置UseCompletePoll真正的用于向量化或并行轮询。类似地,组UseCompleteSearch真正的用于向量化或并行搜索。

从R2019a开始,当您设置UseParallel选项真正的patternsearch内部覆盖UseCompletePoll设置为真正的所以函数是并行轮询的。

请注意

缓存当并行运行求解器时不能工作。

真正的|{假}

UseVectorized

指定函数是否向量化。看到矢量化和并行选项而且向量化目标函数和约束函数

请注意

“经典”算法,你必须设置UseCompletePoll真正的用于向量化或并行轮询。类似地,组UseCompleteSearch真正的用于向量化或并行搜索。

对于选项结构,使用矢量化“上”“关闭”

真正的|{假}

例子:选择= optimoptions(“patternsearch MaxIterations = 150, MeshTolerance = 1)的军医

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

  • 客观的——目标函数

  • x0——起点

  • Aineq-矩阵用于线性不等式约束

  • bineq-线性不等式约束的向量

  • Aeq-矩阵线性等式约束

  • 说真的-线性等式约束的向量

  • -下界x

  • 乌兰巴托-的上限x

  • nonlcon-非线性约束函数

  • 解算器- - - - - -“patternsearch”

  • 选项-使用创建的选项optimoptions或一个结构

  • rngstate—可选字段,用于重置随机数生成器的状态

请注意

各个领域中问题是必需的,但rngstate

数据类型:结构体

输出参数

全部折叠

解,作为实向量返回。的大小x的尺寸是一样的吗x0.当exitflag是正的,x通常是问题的局部解决方案。

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

原因patternsearch停止,作为整数返回。

出口标志 意义

1

没有非线性约束—网格尺寸的大小小于规定公差,约束违例小于ConstraintTolerance

具有非线性约束-规模的互补措施(在该表后面定义)小于√ConstraintTolerance,子问题用比的网格解决MeshTolerance,约束违反小于ConstraintTolerance

2

的变化x且网格尺寸均小于规定公差,且约束违例小于ConstraintTolerance

3.

的变化fval且网格尺寸均小于规定公差,且约束违例小于ConstraintTolerance

4

步长量级小于机器精度,约束违反小于ConstraintTolerance

0

达到函数计算或迭代的最大数量。

-1

由输出函数或图函数终止的优化。

-2

找不到可行点。

在非线性约束求解器中互补措施元素所在的向量的范数是多少cλ,在那里c是非线性不等式约束违反,和λ为相应的拉格朗日乘子。

关于优化过程的信息,作为包含以下字段的结构返回:

  • 函数——目标函数。

  • problemtype-问题类型,其中之一:

    • 无约束的

    • “boundconstraints”

    • “linearconstraints”

    • “nonlinearconstr”

  • pollmethod——轮询技术。

  • searchmethod-使用的搜索技术(如有)。

  • 迭代-总迭代次数。

  • funccount-函数评估总数。

  • meshsize-网目尺寸为x

  • maxconstraint-最大限制违反,如果有。

  • rngstate- MATLAB随机数生成器的状态,在算法开始之前。中的值rngstate在使用随机搜索方法或随机轮询方法时再现输出。看到复制的结果,其中讨论了相同的技术遗传算法

  • 消息-算法终止的原因。

算法

默认情况下,在没有线性约束的情况下,patternsearch根据与坐标方向对齐的自适应网格查找最小值。看到什么是直接搜索?而且模式搜索轮询如何工作

当你设置算法选项“国家联盟”或者它的变体之一,patternsearch中描述的算法非均匀模式搜索(NUPS)算法.该算法与默认算法有几个不同之处;例如,它有更少的选项设置。

选择功能

应用程序

优化Live Editor任务提供了一个可视化的界面patternsearch

参考文献

[1] Audet, Charles和J. E. Dennis Jr. <广义模式搜索的分析>。SIAM优化期刊.2003年第13卷第3期,第889-903页。

康恩,a.r., n.i.m. Gould, L. Toint博士。具有一般不等式约束和简单边界的全局收敛增广拉格朗日势垒优化算法数学的计算.第66卷,1997年第217期,第261-288页。

[3]艾布拉姆松,Mark A。混合变量一般约束优化问题的模式搜索滤波算法.2002年8月赖斯大学计算与应用数学系博士论文。

[4]艾布拉姆松,马克·A.,查尔斯·奥德特,J. E.丹尼斯,小,塞巴斯蒂安·勒·迪格贝尔。ORTHOMADS:具有正交方向的确定性MADS实例。SIAM优化期刊.2009年第2期,第20卷,948-966页。

科尔达,塔玛拉·G.,罗伯特·迈克尔·刘易斯,弗吉尼亚·托森。直接搜索优化:一些经典和现代方法的新视角。暹罗审查.2003年第3期,第45卷,第385-482页。

科尔达,塔玛拉·G.,罗伯特·迈克尔·刘易斯,弗吉尼亚·托森。一种集合了一般约束和线性约束的发电机组直接搜索增强拉格朗日优化算法技术报告SAND2006-5315,桑迪亚国家实验室,2006年8月。

路易斯,罗伯特·迈克尔,安妮·谢博德和弗吉尼亚·托森。实现线性约束最小化的发电集搜索方法。SIAM科学计算杂志.第29卷,2007年第6期,第2507-2530页。

扩展功能

版本历史

之前介绍过的R2006a

Baidu
map