主要内容

patternsearch

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

描述

例子

x= patternsearch (有趣的,x0)发现一个局部最小值,x函数处理有趣的计算目标函数的值。x0是一个真正的向量指定模式搜索算法的初始点。

请注意

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

例子

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

x= patternsearch (有趣的,x0,一个,b,Aeq,说真的)最小化有趣的线性等式Aeq * x=说真的* xb。如果不存在线性不等式,集一个= []b = []

例子

x= patternsearch (有趣的,x0,一个,b,Aeq,说真的,,乌兰巴托)定义了一组设计变量的上下界限x,这样的解决方案总是范围x乌兰巴托。如果不存在线性等式,集Aeq = []说真的= []。如果x(我)没有下界,准备好了吗磅(i) =负无穷。如果x(我)没有上限,准备好了吗乌兰巴托(i) =正无穷

例子

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

例子

x= patternsearch (有趣的,x0,一个,b,Aeq,说真的,,乌兰巴托,nonlcon,选项)最小化有趣的优化选项中指定选项。使用optimoptions设置这些选项。如果有任何非线性不等式和等式约束,集nonlcon = []

x= patternsearch (问题)发现的最低标准问题描述的结构问题

例子

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

例子

(x,fval,exitflag,输出)= 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美元美元- le x (2) \ \ infty \勒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] = ellipsetilt测查(x) = [];c = x (1) * (2) / 2 + (x (1) + 2) ^ 2 + (x (2) 2) ^ 2/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这是真正的解决方案索尔= [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
输出=结构体字段:功能:@ (x) sawtoothxy (x (1), (2) problemtype:“boundconstraints”pollmethod:“gpspositivebasis2n”maxconstraint: 0 searchmethod:[]迭代:52 funccount: 168 meshsize: 9.5367 e-07 rngstate: [1×1 struct]消息:“优化终止:网格大小小于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
输出=结构体字段:功能:@ (x) sawtoothxy (x (1), (2) problemtype:“boundconstraints”pollmethod:“国家联盟”maxconstraint: 0 searchmethod:[]迭代:29 funccount: 88 meshsize: 7.1526 e-07 rngstate: [1×1 struct]消息:“优化终止:网格大小小于options.MeshTolerance。”

这次的解算器到达当地的解决方案在88年迭代和29日功能评估,但解决的办法不是全球解决方案。

试着使用“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
输出=结构体字段:功能:@ (x) sawtoothxy (x (1), (2) problemtype:“boundconstraints”pollmethod:“nups-mads”maxconstraint: 0 searchmethod:[]迭代:55 funccount: 189 meshsize: 9.5367 e-07 rngstate: [1×1 struct]消息:“优化终止:网格大小小于options.MeshTolerance。”

这一次,全球解决方案解决者达到189年55迭代和功能评价,这是相似的“经典”算法。

选项设置为观察的进展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方法-5.88607 0 1 1 1 1 4 2成功的调查2 8 -5.88607 - 1完善网3 12 -5.88607 0.5细化网格4 16 -5.88607 - 0.25细化网格(输出修剪)63 218 -7.02545 1.907 e-06细化网格64 221 -7.02545 3.815 e-06成功调查65 225 -7.02545 1.907 e-06细化网格66 229 -7.02545 9.537 e-07细化网格优化终止:网格大小小于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;

找到目标的无约束最小,从这一点(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输出=结构体字段:功能:@psobj problemtype:“无约束”pollmethod:“gpspositivebasis2n”maxconstraint: [] searchmethod:[]迭代:66 funccount: 229 meshsize: 9.5367 e-07 rngstate: [1 x1 struct]信息:“优化终止:网格大小小于options.MeshTolerance。”

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

输出结构包括信息,比如有多少迭代patternsearch了,有多少功能评估。这个输出结构与结果相比较模式搜索非默认选项。在这个示例中,您获得一些这方面的信息,但没有获得,例如,功能评价的数量。

输入参数

全部折叠

函数最小化,指定为一个函数处理或函数名。的有趣的函数接受一个向量x并返回一个真正的标量f的目标函数值x

您可以指定有趣的作为一个文件处理函数

x = patternsearch (x0 @myfun)

在这里,myfun是一个MATLAB函数如

函数f = myfun f (x) =在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
3x1+ 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
3x1+ 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我< < = =元素个数(磅)

在这种情况下,解决者发出警告。

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

数据类型:

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

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

对所有

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

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

1我< < = =元素个数(乌兰巴托)

在这种情况下,解决者发出警告。

例子:指定所有控制变量都小于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] = mycon c (x) =%计算非线性不等式在x。量表信=在x %计算非线性等式。
有关更多信息,请参见非线性约束

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

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

下表描述了优化选项。optimoptions隐藏选项所示斜体;看到选项optimoptions隐藏{}表示默认值。看到选项的细节模式搜索选项

选项patternsearch

选项 描述
算法

所使用的算法patternsearch。的算法设置影响可用选项。算法的细节,请参阅搜索轮询模式是如何运作的吗非均匀模式搜索(nup)算法

算法效果的例子,请参阅探索patternsearch算法探索patternsearch算法优化生活编辑任务

{“经典”}|“国家联盟”|“nups-gps”|“nups-mads”
缓存

缓存设置为“上”,patternsearch保持网格点的历史调查。在后继的迭代中,patternsearch不调查点接近那些已经调查。使用这个选项如果patternsearch运行缓慢而计算目标函数。如果随机目标函数,不要使用此选项。

请注意

缓存不工作当您运行并行求解程序。

“上”|{“关闭”}

CacheSize

历史上的大小。

积极的标量|{1 e4}

CacheTol

最大距离当前网格点上任意点为了patternsearch为了避免轮询当前点。如果使用缓存选项设置为“上”

积极的标量|{eps}

ConstraintTolerance

公差约束。

选择结构,使用TolCon

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

显示

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

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

宽容在功能上。迭代停止如果函数值的变化小于FunctionTolerance和网格大小小于StepTolerance。这个选项并不适用于尼(网格自适应直接搜索)轮询。

选择结构,使用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

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

该选项只适用于当算法“经典”

请注意

您不能使用马德斯轮询时线性等式约束问题。

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

PollOrderAlgorithm

调查方向顺序模式搜索。

该选项只适用于当算法“经典”

选择结构,使用PollingOrder

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

ScaleMesh

自动缩放变量。

选择结构,使用ScaleMesh=“上”“关闭”

{真的}|

SearchFcn

类型的搜索模式中使用。指定一个名称或一个函数处理。

选择结构,使用SearchMethod

“|”|“GPSPositiveBasis2N GPSPositiveBasisNp1 GSSPositiveBasis2N”|“GSSPositiveBasisNp1”|“MADSPositiveBasis2N”|“MADSPositiveBasisNp1”|“searchga”|“searchlhs”|“searchneldermead”|“rbfsurrogate”| {[]} |自定义搜索功能

StepTolerance

宽容的变量。迭代停止如果两个位置的变化,小于筛孔尺寸StepTolerance。这个选项不适用于马德斯轮询。

选择结构,使用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

指定是否矢量化功能。看到矢量化和并行选项Vectorize目标和约束函数

请注意

“经典”算法,必须设置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使用中描述的算法非均匀模式搜索(nup)算法。该算法在很多方面不同于默认的算法;例如,它有更少的选项设置。

选择功能

应用程序

优化住编辑任务提供了一个可视化界面patternsearch

引用

[1]奥迪特、查尔斯·j·e·丹尼斯Jr。”分析的广义模式搜索。”暹罗杂志上优化。3号卷13日,2003年,页889 - 903。

[2]康涅狄格州,a。R。,N。I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Barrier Algorithm for Optimization with General Inequality Constraints and Simple Bounds.”数学的计算。66卷,217号,1997年,页261 - 288。

[3]艾布拉姆森,马克。模式搜索过滤器算法混合变量一般约束优化问题。博士论文、计算和应用数学,莱斯大学,2002年8月。

[4]艾布拉姆森,马克。,Charles Audet, J. E. Dennis, Jr., and Sebastien Le Digabel. “ORTHOMADS: A deterministic MADS instance with orthogonal directions.”暹罗杂志上优化。2号卷20日,2009年,页948 - 966。

[5]Kolda,塔玛拉·G。,Robert Michael Lewis, and Virginia Torczon. “Optimization by direct search: new perspectives on some classical and modern methods.”暹罗审查。卷45,问题3,2003年,页385 - 482。

[6]Kolda,塔玛拉·G。,Robert Michael Lewis, and Virginia Torczon. “A generating set direct search augmented Lagrangian algorithm for optimization with a combination of general and linear constraints.” Technical Report SAND2006-5315, Sandia National Laboratories, August 2006.

[7]刘易斯,罗伯特·迈克尔·安妮牧羊人,弗吉尼亚Torczon。“实现发电机组搜索方法线性约束最小化。”暹罗期刊在科学计算。问题6卷29日,2007年,页2507 - 2530。

扩展功能

版本历史

之前介绍过的R2006a