主要内容

patternsearch

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

描述

例子

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

请注意

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

例子

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

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

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托中定义设计变量的一组下界和上界x,使解总是在值域内x乌兰巴托.如果不存在线性等式,则设置Aeq = []而且Beq = [].如果x(我)没有下界,集合lb(i) = -无穷大.如果x(我)没有上限,集合ub(i) =无穷大

例子

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

例子

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

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

例子

xfval] =模式搜索(___,对于任何语法,返回目标函数的值有趣的在解决方案中x

例子

xfvalexitflag输出] =模式搜索(___此外回报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

Fun = @psobj;

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

X0 = [0,0];X = patternsearch(fun,x0)
优化终止:网格尺寸小于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

Fun = @psobj;

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

A = [-3,-2;4、7];B = [-1;-8];

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

X0 = [0.5,-0.5];x = patternsearch(fun,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

Fun = @psobj;

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

lb = [0,-Inf];ub = [Inf,-3];A = [];B = [];Aeq = [];Beq = [];

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

X0 = [1,-5];x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub)
优化终止:网格尺寸小于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

Fun = @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)²/2 -2;

开始patternsearch从一开始(2, 2)

X0 = [-2,-2];A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = @ellipsetilt;x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
优化终止:网格尺寸小于选项。MeshTolerance而且constraint violation is less than options.ConstraintTolerance. x = -1.5144 0.0875

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

类型sawtoothxy
函数f = sawtooxy (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],在那里锯齿状(0,0)= 0

rng默认的X0 = 12*randn(1,2);Lb = [-15,-26];Ub = [26,15];Fun = @(x) sawtooxy (x(1),x(2));

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

Optsc = optimoptions(“patternsearch”算法=“经典”);[sol,fval,eflag,output] = patternsearch(fun,...x0 ,[],[],[],[], 磅,乌兰巴托,[],optsc)
优化终止:网格尺寸小于options.MeshTolerance。
索尔=1×2105× 0.9825
Fval = 1.3278e-09
Eflag = 1
输出=带字段的结构:函数:@(x)sawtoothxy(x(1),x(2))问题类型:'boundconstraints' pollmethod: 'gpspositivebasis2n' maxconstraint: 0搜索方法:[]迭代:52 funccount: 168 meshsize: 9.5367e-07 rngstate: [1×1 struct]消息:'优化终止:网格尺寸小于选项. meshtolerance。'

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

“国家联盟”算法。

rng默认的%用于再现性Optsn = optimoptions(“patternsearch”算法=“国家联盟”);[sol,fval,eflag,output] = patternsearch(fun,...x0 ,[],[],[],[], 磅,乌兰巴托,[],optsn)
优化终止:网格尺寸小于options.MeshTolerance。
索尔=1×26.3204 - 15.0000
Fval = 85.9256
Eflag = 1
输出=带字段的结构:函数:@(x)sawtoothxy(x(1),x(2))问题类型:'boundconstraints' pollmethod: 'nup ' maxconstraint: 0搜索方法:[]迭代:29 funccount: 88 meshsize: 7.1526e-07 rngstate: [1×1 struct]消息:'优化终止:网格尺寸小于选项. meshtolerance .'

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

尝试使用“nups-mads”算法,在坐标方向上不需要步长。

rng默认的%用于再现性Optsm = optimoptions(“patternsearch”算法=“nups-mads”);[sol,fval,eflag,output] = patternsearch(fun,...x0 ,[],[],[],[], 磅,乌兰巴托,[],optsm)
优化终止:网格尺寸小于options.MeshTolerance。
索尔=1×2104× -0.5275 0.0806
Fval = 1.5477e-08
Eflag = 1
输出=带字段的结构:函数:@(x)sawtoothxy(x(1),x(2))问题类型:'boundconstraints' pollmethod: 'nup -mads' maxconstraint: 0 searchmethod:[]迭代:55 funccount: 189 meshsize: 9.5367e-07 rngstate: [1×1 struct] message: '优化终止:网格尺寸小于选项. 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

Fun = @psobj;

选项给出迭代显示,并在每次迭代中绘制目标函数。

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

从该点开始求目标的无约束最小值(0,0)

X0 = [0,0];A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = [];x = patternsearch(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

Iter f-count f(x) MeshSize Method 0 1 1 1 1 4 -5.88607 2 Successful Poll 2 8 -5.88607 1 Refine Mesh 3 12 -5.88607 0.5 Refine Mesh 4 16 -5.88607 0.25 Refine Mesh (output) 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小于选项. 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

Fun = @psobj;

从这个点出发,求出目标的无约束最小值(0,0).返回最小值的位置,x的值有趣的(x)

X0 = [0,0];[x,fval] = patternsearch(fun,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

Fun = @psobj;

从这个点出发,求出目标的无约束最小值(0,0).返回解,x,解处的目标函数值,有趣的(x)、退出标志和输出结构。

X0 = [0,0];[x,fval,exitflag,output] = patternsearch(fun,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: '优化终止:网格尺寸小于选项. meshtolerance .'

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

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

输入参数

全部折叠

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

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

X = patternsearch(@myfun,x0)

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

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

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

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

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

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

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

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

数据类型:

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

一个编码线性不等式

A*x <= b

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

例如,指定

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

给出这些约束条件:

A = [1,2;3,4;5,6];B = [10;20;30];

例子:要指定控制变量的和小于等于1,请给出约束条件A = ones(1,N)而且B = 1

数据类型:

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

b编码线性不等式

A*x <= b

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

例如,指定

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

给出这些约束条件:

A = [1,2;3,4;5,6];B = [10;20;30];

例子:要指定控制变量的和小于等于1,请给出约束条件A = ones(1,N)而且B = 1

数据类型:

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

Aeq编码线性等式

Aeq*x = beq

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

例如,指定

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

给出这些约束条件:

Aeq = [1,2,3;2,4,1];Beq = [10;20];

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

数据类型:

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

说真的编码线性等式

Aeq*x = beq

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

例如,指定

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

给出这些约束条件:

Aeq = [1,2,3;2,4,1];Beq = [10;20];

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

数据类型:

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

X (i) >= lb(i)

对所有

如果数值(lb) <数值(x0),然后指定

X (i) >= lb(i)

1 <= I <= number (lb)

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

例子:要指定所有控制变量都是正的,Lb = 0 (size(x0))

数据类型:

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

X (i) <= ub(i)

对所有

如果Numel (ub) < Numel (x0),然后乌兰巴托指定

X (i) <= ub(i)

1 <= I <= numel(ub)

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

例子:要指定所有控制变量都小于1,Ub = ones(size(x0))

数据类型:

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

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

    C (x) <= 0

    对于所有c

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

    Ceq (x) = 0

    对于所有量表信

例如,

x = patternsearch(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)

在哪里mycon是一个MATLAB函数,如

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

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

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

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

选项patternsearch

选项 描述
算法 使用的算法patternsearch.的算法设置将影响可用选项。具体算法请参见模式搜索轮询如何工作而且非均匀模式搜索算法 {“经典”}|“国家联盟”|“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" | "rbfsurrogate" | {[]} |自定义搜索功能

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真正的用于向量化或并行搜索。

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

真正的|{假}

例子:options = optimoptions("patternsearch",MaxIterations=150,MeshTolerance=1e-4)

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

  • 客观的-目标函数

  • 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-最大约束违反(如有)。

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

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

算法

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

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

选择功能

应用程序

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

参考文献

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

[2]康恩,n·i·m·古尔德,l·托因特博士。一种全局收敛的增广拉格朗日势垒算法,用于具有一般不等式约束和简单边界的优化。计算数学.第66卷,第217期,1997年,第261-288页。

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

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

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

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

[7]刘易斯,罗伯特·迈克尔,安妮·谢泼德和弗吉尼亚·托尔松。实现线性约束最小化的生成集搜索方法SIAM科学计算杂志.第29卷,第6期,2007,第2507-2530页。

扩展功能

版本历史

R2006a之前介绍