使用模式搜索查找的功能最低
将无约束问题最小化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);X = patternsearch(乐趣,X0)
终止优化:网格尺寸小于可选项。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;
设置两个线性不等式约束。
A = [-3,-2;-4,-7]。B = [-1; -8]。
找出最小,在开始点[0.5,-0.5]
。
X0 = [0.5,-0.5];X = patternsearch(乐趣,X0,A,B)
终止优化:网格尺寸小于可选项。X = 5.2824 -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,负);乌兰巴托=[正无穷,3];一个= [];b = [];Aeq = [];说真的= [];
找出最小,在开始点(1、5)
。
x0 = (1、5);x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
终止优化:网格尺寸小于可选项。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;
创建非线性约束
为此,在您的MATLAB路径上,将以下代码保存到一个名为的文件中ellipsetilt.m
。
功能[c,ceq] = ellipsetilt(x) ceq = [];c = x(1)*x(2)/2 + (x(1)+2)^2 + (x(2)-2)^2/2 -2;
开始patternsearch
从最初的点[-2,-2]
。
x0 = (2, 2);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = @ellipsetilt;X = patternsearch(乐趣,X0,A,B,AEQ,BEQ,LB,UB,nonlcon)
优化终止:网孔尺寸小于options.MeshTolerance和约束违反小于options.ConstraintTolerance。X = -1.5144 0.0874
设置选项以观察进程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”,'显示','ITER',“PlotFcn”,@psplotbestf);
从该点出发,求出目标的无约束极小值(0,0)
。
x0 = (0,0);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];X = patternsearch(乐趣,X0,A,B,AEQ,BEQ,LB,UB,nonlcon,选项)
ITER F-计数F(X)MeshSize方法0 1 1 1 1 4 -5.88607 2成功轮询2 8 -5.88607 1精确网3 12 -5.88607 0.5提纯网4 16 -5.88607 0.25精确目(输出修整)63 218 -7.025451.907e-06提纯网64 221 -7.02545 3.815e-06成功轮询65 225 -7.02545 1.907e-06提纯网66 229 -7.02545 9.537e-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)
终止优化:网格尺寸小于可选项。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)
终止优化:网格尺寸小于可选项。X = -0.7037 -0.1860 FVAL = -7.0254 exitflag = 1个输出=结构与字段:功能:@psobj problemtype: '无约束' pollmethod: 'gpspositivebasis2n' maxconstraint:[] searchmethod:[]迭代:66 funccount:229 meshsize:9.5367E-07 rngstate:[1x1的结构]消息: '优化终止:筛目大小小于options.MeshTolerance'。
该exitflag
是1
,表示收敛到局部极小值。
该输出
结构包括信息,诸如多少次迭代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
|串
x0
-初始点一个
-线性不等式约束线性不等式约束,表示为实矩阵。一个
是一个中号
——- - - - - -nvars
矩阵,中号
是不等式的个数。
一个
编码中号
线性不等式
A * x < =
,
哪里X
的列向量nvars
变量X(:)
,b
是一个列向量吗中号
元素。
例如,指定
X1+ 2X2≤10
3X1+ 4X2≤20
五X1+ 6X2≤30日
给这些约束:
= [1,2,3,4,5,6);b = (10、20、30);
例:若要指定控制变量的和为1或更小,请给出约束条件A =酮(1,N)
和B = 1
。
数据类型:双
b
-线性不等式约束线性不等式约束,指定为实数向量。b
是一个中号
-与。相关的元素向量一个
矩阵。如果您通过b
作为行向量,求解器内部进行转换b
到列向量B(:)
。
b
编码中号
线性不等式
A * x < =
,
哪里X
的列向量ñ
变量X(:)
,一个
是一个矩阵的大小中号
——- - - - - -ñ
。
例如,指定
X1+ 2X2≤10
3X1+ 4X2≤20
五X1+ 6X2≤30日
给这些约束:
= [1,2,3,4,5,6);b = (10、20、30);
例:若要指定控制变量的和为1或更小,请给出约束条件A =酮(1,N)
和B = 1
。
数据类型:双
AEQ
-线性等式约束线性等式约束,指定为实矩阵。AEQ
是一个我
——- - - - - -nvars
矩阵,我
是等式的个数。
AEQ
编码我
线性等式
Aeq * x =说真的
,
哪里X
的列向量ñ
变量X(:)
,说真的
是一个列向量吗我
元素。
例如,指定
X1+ 2X2+ 3X3= 10
2X1+ 4X2+X3= 20,
给这些约束:
AEQ = [1,2,3; 2,4,1];BEQ = [10; 20]。
例:要指定控制变量sum为1,请给出约束条件AEQ =酮(1,N)
和BEQ = 1
。
数据类型:双
说真的
-线性等式约束线性等式约束,指定为实数向量。说真的
是一个我
-与。相关的元素向量AEQ
矩阵。如果您通过说真的
作为行向量,求解器内部进行转换说真的
到列向量BEQ(:)
。
说真的
编码我
线性等式
Aeq * x =说真的
,
哪里X
的列向量ñ
变量X(:)
,AEQ
是一个矩阵的大小微地震
——- - - - - -ñ
。
例如,指定
X1+ 2X2+ 3X3= 10
2X1+ 4X2+X3= 20,
给这些约束:
AEQ = [1,2,3; 2,4,1];BEQ = [10; 20]。
例:要指定控制变量sum为1,请给出约束条件AEQ =酮(1,N)
和BEQ = 1
。
数据类型:双
磅
-下界下界,指定为实向量或真正的数组。如果要素的数量x0
等于磅
,然后磅
指定
X(ⅰ)> =磅(I)
对所有人一世
。
如果元素个数(磅)<元素个数(x0)
,然后磅
指定
X(ⅰ)> =磅(I)
为
1 <= I <= numel(Ib)的
在这种情况下,解决方案发出警告。
例:要指定所有控制变量为正,LB =零(尺寸(X0))
数据类型:双
乌兰巴托
-上界上限,指定为实向量或真正的数组。如果要素的数量x0
等于乌兰巴托
,然后乌兰巴托
指定
X(ⅰ)<= UB(I)
对所有人一世
。
如果numel(UB)
乌兰巴托
指定
X(ⅰ)<= UB(I)
为
1 <= I <= numel(UB)
在这种情况下,解决方案发出警告。
例:要指定所有的控制变量都小于1,UB =酮(尺寸(X0))
数据类型:双
nonlcon
-非线性约束非线性约束,指定为功能手柄或函数的名称。nonlcon
是接受载体或阵列的功能X
并返回两个阵列,c (x)
和CEQ(x)的
。
c (x)
是非线性不等式约束在阵列X
。patternsearch
试图满足
C(X)<= 0
对于所有C
。
CEQ(x)的
是非线性等式约束在阵列X
。patternsearch
试图满足
CEQ(X)= 0
对于所有CEQ
。
例如,
X = patternsearch(@ myfun,X0,A,B,AEQ,BEQ,LB,UB,@ mycon)
哪里mycon
是一个MATLAB函数吗
功能并[c,CEQ] = mycon(X)C = ...%计算非线性不等式x处。CEQ = ...%计算非线性等式x处。
数据类型:字符
|function_handle
|串
选项
-优化选项optimoptions
|结构优化选项,指定为返回的对象optimoptions
(推荐),或结构。您也可以使用从优化应用程序导出选项。有关详细信息,请参阅模式搜索选项。
optimoptions
皮张的选项中列出斜体;看到optimoptions隐藏的选项。
{}
表示默认值。见选项细节模式搜索选项。
选项patternsearch
和paretosearch
选项 | 描述 | 值 |
---|---|---|
|
公差限制。 对于期权的结构,使用 |
正标| |
|
显示器的水平。 |
“关” |'ITER' |“诊断” |{'最后'} |
|
目标函数评估的最大数量。 对于期权的结构,使用 |
正整数| |
|
最大迭代次数。 对于期权的结构,使用 |
正整数| |
|
总时间(单位:秒),允许进行优化。 对于期权的结构,使用 |
正标| |
|
公差的网目尺寸。 对于期权的结构,使用 |
正标| |
|
功能优化的函数调用在每次迭代。指定为功能句柄或函数处理的一个单元阵列。 对于期权的结构,使用 |
函数句柄或函数句柄的单元数组| |
|
从模式搜索输出的情节。作为指定的名称内建绘图功能,功能手柄,或名称的单元阵列内置的情节函数或函数处理。 对于期权的结构,使用 |
为 为 |
|
模式搜索中使用的轮询策略。 |
为 |
|
并行计算目标函数和非线性约束函数。看到向量化和并行选项(用户功能评价)和如何使用全局优化工具箱并行处理。 |
|
|
指定是否函数量化。看到向量化和并行选项(用户功能评价)和矢量化目标和约束功能。 对于期权的结构,使用 |
|
选项paretosearch
只有
选项 | 描述 | 值 |
---|---|---|
|
初始点
|
矩阵 |
|
图案到轮询的最低分数。 | 从0到1 |的标量 |
|
在帕累托集合中的点数。 | 正整数| |
|
解算器停止时处于停止量度超过迭代的窗口的相对变化小于或等于
当在任何适用的措施的相对变化小于所述解算器停止 请注意设置 |
正标| |
选项patternsearch
只有
选项 | 描述 | 值 |
---|---|---|
缓存 | 与 |
|
CacheSize | 历史的规模。 |
正标| |
CacheTol | 从目前的网点在历史上的任何一点,以便最大距离 |
正标| |
FunctionTolerance |
公差的功能。迭代停止如果函数值的变化小于 对于期权的结构,使用 |
正标| |
InitialMeshSize |
初始网格尺寸的算法。看到如何模式搜索查询作品。 |
正标| |
InitialPenalty | 惩罚参数的初值。看到非线性约束求解算法。 |
正标| |
MaxMeshSize | 轮询或搜索步骤中使用的最大网格大小。看到如何模式搜索查询作品。 |
正标| |
MeshContractionFactor |
网不成功迭代收缩的因素。 对于期权的结构,使用 |
正标| |
MeshExpansionFactor |
网成功迭代展开因素。 对于期权的结构,使用 |
正标| |
MeshRotate | 在声明一个点为最优之前旋转模式。看到网格选项。 |
|
PenaltyFactor | 点球更新参数。看到非线性约束求解算法。 |
正标| |
PlotInterval | 指定该地块函数被调用在每个间隔。 |
正整数| |
PollOrderAlgorithm |
在模式搜索中轮询方向的顺序。 对于期权的结构,使用 |
|
ScaleMesh |
自动缩放变量。 对于期权的结构,使用 |
|
SearchFcn |
键入模式搜索中使用的搜索。指定为名称或功能句柄。 对于期权的结构,使用 |
|
StepTolerance |
宽容的变量。迭代停止如果两个位置的变化和网格尺寸都小于 对于期权的结构,使用 |
正标| |
TolBind | 结合宽容。看到约束参数。 |
正标| |
UseCompletePoll |
围绕当前点完成投票。看到如何模式搜索查询作品。 对于期权的结构,使用 |
|
UseCompleteSearch |
围绕当前点完成搜索时,搜索方法是调查方法。看到搜索和轮询。 对于期权的结构,使用 |
|
例:选项= optimoptions( 'patternsearch', 'MaxIterations',150 'MeshTolerance',1E-4)
数据类型:结构
问题
-问题的结构问题结构,指定为具有以下字段的结构:
客观的
- 目标函数
x0
——起点
Aineq
- 矩阵的线性不等式约束
bineq
- 载体的线性不等式约束
AEQ
-线性等式约束的矩阵
说真的
- 载体的线性等式约束
磅
- 下界X
乌兰巴托
-上限X
nonlcon
- 非线性约束函数
求解
-“patternsearch”
选项
- 选项与创建optimoptions
或psoptimset
rngstate
-可选字段来重置随机数生成器的状态
创建结构问题
通过从优化应用程序导出的一个问题,如在导入和导出您的工作(优化工具箱)。
各个领域中问题
是必要的。
数据类型:结构
fval
- 在所述溶液的目标函数值目标函数值在解,作为实数返回。一般来说,fval
=有趣的(x)
。
exitflag
- - -原因patternsearch
停止原因patternsearch
停止,返回一个整数。
出口标志 | 含义 |
---|---|
|
无非线性约束- 网目尺寸的大小小于规定的公差和约束违反小于 |
非线性约束-的大小互补性措施(在此表之后定义)小于 |
|
|
在改变 |
|
在改变 |
|
步骤的大小大于机器精度更小,并且约束违反小于 |
|
达到功能评价或迭代的最大数量。 |
|
优化终止通过输出功能或绘图功能。 |
|
没有找到可行点。 |
在非线性约束求解中,互补性措施是向量,其元素为常态C一世λ一世,其中C一世是否违反非线性不等式约束,且λ一世是相应的拉格朗日乘数。
输出
-关于优化过程的信息关于优化过程的信息,以结构形式返回,包含以下字段:
功能
- 目标函数。
problemtype
-问题类型,其中之一:
“无约束”
“boundconstraints”
'linearconstraints'
'nonlinearconstr'
pollmethod
——轮询技术。
searchmethod
- 搜索技术使用,如果有的话。
迭代
-迭代总数。
funccount
-功能评估的总数。
meshsize
- 网目尺寸的X
。
maxconstraint
- 最大约束冲突,如果有的话。
rngstate
状态的MATLAB随机数发生器,刚好在算法开始之前。可以使用in中的值rngstate
要在使用随机搜索方法或随机轮询方法时重现输出。看到结果重现,其中讨论了相同的技术遗传算法
。
信息
- 之所以算法终止。
默认,patternsearch
长相对于基于自适应最小啮合的是,在不存在的线性约束,与坐标方向对准。看到什么是直接搜索?和如何模式搜索查询作品。
广义模式搜寻的分析。SIAM杂志上优化。第13卷第3期,2003年,第889-903页。
[2]美国康涅狄格州,A. R.,N. I.M。古尔德,和pH值。L. Toint。“全局收敛的增广拉格朗日屏障算法优化与一般不等式约束和简单的边界。”数学的计算。第66卷,第217号,1997年,第261-288页。
[3] Abramson, Mark A。模式搜索过滤算法混合变量的一般约束最优化问题。博士论文,计算与应用数学,莱斯大学,2002年8月系。
[4] Abramson, Mark A., Charles Audet, J. E. Dennis, Jr.,和Sebastien Le Digabel。正thomads:具有正交方向的确定性MADS实例。SIAM杂志上优化。2009年第20卷第2期,第948-966页。
[5]科尔达,塔玛拉G.罗伯特·迈克尔·刘易斯和弗吉尼亚Torczon。“优化的直接搜索:在一些古典和现代的方法,新的视角。”SIAM回顾。第45卷,2003年第3期,第385-482页。
[6]科尔达,塔玛拉G.罗伯特·迈克尔·刘易斯和弗吉尼亚Torczon。“A发电机组直接搜索增广拉格朗日算法对于具有一般和线性约束的组合优化”。技术报告SAND2006-5315,桑迪亚国家实验室,2006年8月。
[7]刘易斯,迈克尔·罗伯特,安妮·谢泼德和弗吉尼亚Torczon。“实施产生用于线性约束的最小化的一组搜索方法”。科学计算的暹罗杂志。第29卷,第6期,2007年,2507-2530页。
若要并行运行,请设置“UseParallel”
选项真正的
。
选择= optimoptions ('
solvername
”、“UseParallel’,真的)
欲了解更多信息,请参阅如何使用全局优化工具箱并行处理。
您单击对应于该MATLAB命令的链接:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。万博1manbetx
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点没有针对您所在位置的访问进行优化。