有两种方法可以指定模式搜索选项,这取决于您是使用优化应用程序还是调用函数patternsearch
在命令行:
如果您正在使用优化应用程序,您可以通过从下拉列表中选择一个选项或在文本字段中输入该选项的值来指定选项。
如果您呼叫patternsearch
在命令行中,指定通过创建一个选项选项
使用函数的对象optimoptions
,如下所示:
选择= optimoptions (‘patternsearch’,‘Param1 value1, Param2, value2,…);
看到设置选项为例子。
在本节中,每个选项以两种方式列出:
它的标签,因为它出现在优化应用程序
的字段名选项
对象
例如:
调查方法为优化app中选项的标签。
PollMethod
的相应字段选项
对象。
Plot选项使您能够在模式搜索运行时绘制数据。当您选择plot函数并运行模式搜索时,plot窗口将在不同的轴上显示这些绘图。可以在任何时候停止算法停止绘图窗口上的按钮。
为patternsearch
,情节间隔(PlotInterval
)指定连续调用的绘图功能之间的迭代次数。
您可以选择任何在下列地块绘制函数面板的patternsearch
要么paretosearch
只有一个目标函数。
最好的函数值('psplotbestf'
)绘制最佳目标函数值。
函数计算(“psplotfuncount”
)绘制函数计算的次数。
网格尺寸(“psplotmeshsize”
)绘制网格大小。
最佳点('psplotbestx'
)绘制当前的最佳点。
最大约束(“psplotmaxconstr”
)绘制最大非线性约束违反。
自定义使您能够使用自己的绘图功能。要使用优化应用程序指定plot函数,
选择自定义函数。
输入@myfun
在文本框中,其中myfun
是函数的名称。
情节功能的结构描述绘图函数的结构。
为paretosearch
使用多个目标函数,您可以选择“psplotfuncount”
选项,或作为函数句柄传递的自定义函数,或下列任何函数。
“psplotdistance”
-绘制距离度量。看到paretosearch算法。
“psplotmaxconstr”
-绘制最大非线性约束违反。
“psplotparetof”
-绘制目标函数值。适用于三个或更少的目标。
'psplotparetox'
-绘制参数空间中的当前点。适用于三个或更小的维度。
'psplotspread'
-绘制扩展度量。看到paretosearch算法。
“psplotvolume”
- 画出量的度量。看到paretosearch算法。
要拨打电话时显示一个阴谋patternsearch
要么paretosearch
从命令行设置PlotFcn
选项为内置的plot函数名或plot函数的句柄。例如,要显示最佳的函数值,请设置选项
如下:
选择= optimoptions (‘patternsearch’,‘PlotFcn’,‘psplotbestf’);
要显示多个绘图区,请使用内置绘图区函数名的单元格数组或函数句柄的单元格数组:
options = optimoptions('patternsearch','PlotFcn', {@plotfun1, @plotfun2,…});
在哪里@plotfun1
,@plotfun2
等是功能句柄积函数(上述列表中列在括号中)。
如果指定一个以上的plot函数,那么所有的plot都将作为子图出现在同一个窗口中。右键单击任何子图以在单独的图形窗口中获得较大的版本。
曲线函数的第一行的形式
功能停止= plotfun(optimvalues,标志)
函数的输入参数是
optimvalues
-结构,包含有关求解程序当前状态的信息。该结构包含以下字段patternsearch
:
x
- 当前点
迭代
——迭代数
FVAL
-目标函数值
meshsize
-当前网格大小
funccount
-函数计算次数
方法
- 在最后一次迭代使用方法
TolFun
-上次迭代中函数值的公差
TolX
——宽容x
上次迭代的值
nonlinineq
-非线性不等式约束,仅当指定非线性约束函数时显示
nonlineq
-非线性等式约束,仅在指定非线性约束函数时显示
该结构包含以下字段paretosearch
:
x
- 当前点
FVAL
-目标函数值
迭代
——迭代数
funccount
-函数计算次数
nonlinineq
-非线性不等式约束,仅当指定非线性约束函数时显示
nonlineq
-非线性等式约束,总是空的[]
体积
-体积测量(见paretosearch算法的定义)
averagedistance
-距离测量(见paretosearch算法的定义)
传播
-蔓延措施(见paretosearch算法的定义)
国旗
- 其中绘图功能被称为当前状态。对于可能的值国旗
是
'在里面'
——初始化状态
“通路”
——迭代状态
“中断”
——中间阶段
“完成”
——最终状态
有关详细信息国旗
,请参阅输出函数的结构。
传递额外的参数(Optimization Toolbox)说明如何向函数提供附加参数。
输出参数停止
提供在当前迭代中停止算法的方法。停止
可以有以下值:
假
-算法继续下一个迭代。
真正
- 在当前迭代算法终止。
投票选项控制模式搜索民调在每次迭代的网格点。
调查方法(PollMethod
)指定算法用于创建网格的模式。每一类直接搜索算法都有两种模式:通用模式搜索(GPS)算法、生成集搜索(GSS)算法和网格自适应直接搜索(MADS)算法。这些图形是正基底N正基底N+ 1:
默认模式patternsearch
,GPS正基2N
(“GPSPositiveBasis2N”
),包括以下2项N向量,N为目标函数的自变量个数。
(1 0 0…0][0 1 0...0] ...[0 0 0...1][–1 0 0...0][0 –1 0...0][0 0 0...–1].
例如,如果优化问题有三个自变量,则模式由以下六个向量组成。
[1 0 0] [0 1 0] [0 0 1] [ - 1 0 0] [0 -1 0] [0 0 -1]。
的GSS正基2N
模式(“GSSPositiveBasis2N”
) 类似于GPS正基2N
,但调整基向量以考虑线性约束。GSS正基2N
比更有效GPS正基2N
当电流点在线性约束边界附近时。
的MADS正基2N
模式(“MADSPositiveBasis2N”
)由2个N随机生成的载体,其中N为目标函数的自变量个数。这是通过随机地生成完成N向量构成一个线性无关的集合,然后用这个集合和这个集合的负数得到2N向量。如上图所示GPS正基2N
模式是利用线性无关恒等式的正与负而形成的MADS正基2N
,模式是使用an的随机排列生成的N——- - - - - -N在每次迭代中重新生成的线性无关的下三角矩阵。
的GPS正基
模式(“GPSPositiveBasisNp1”
)包括下列各项N+ 1的向量。
(1 0 0…0][0 1 0...0] ...[0 0 0...1][–1 –1 –1...–1].
例如,如果目标函数有三个自变量,则模式由以下四个向量组成。
[1 0 0][0 1 0][0 0 1][-1 -1 -1]。
的GSS正基Np1
模式(“GSSPositiveBasisNp1”
) 类似于GPS正基
,但调整基向量以考虑线性约束。GSS正基Np1
比更有效GPS正基
当电流点在线性约束边界附近时。
的MADS正基Np1
模式(“MADSPositiveBasisNp1”
)由N随机生成的矢量,以形成正的基础上,在那里N为目标函数的自变量个数。然后,又生成一个随机向量N+1个随机生成的向量。方法时,每个迭代生成一个新模式MADS正基础N + 1
被选中。
为paretosearch
只是,默认“GSSPositiveBasis2Np2”
模式使用GSS2 n
模式,也可以使用(1 1…1]
和(1 1…1]
模式。
完成调查(UseCompletePoll)
指定是否必须在每次迭代时轮询当前网格中的所有点。完成调查可以有值在
要么离
。
如果你设置完成调查来上(真正
),算法在每次迭代时轮询网格中的所有点,并在下一次迭代时选择目标函数值最小的点作为当前点。
如果你设置完成调查来离(假
)、默认值,一旦找到目标函数值小于当前值的点,算法就会停止轮询。然后算法在下一次迭代中将该点设置为当前点。
为paretosearch
只有MinPollFraction
选项指定在轮询期间调查的轮询方向的分数,而不是的二进制值UseCompletePoll
。若要指定完整的轮询,请设置MinPollFraction
来1
。若要指定轮询在找到一个可以改进所有目标函数的点时立即停止,请设置MinPollFraction
来0
。
轮询命令(PollOrderAlgorithm
)指定算法在当前网格中搜索点的顺序。选项是
“随机”
-轮询顺序是随机的。
'成功'
-每次迭代的第一个搜索方向是算法在前一次迭代中找到最佳点的方向。在第一个点之后,算法以相同的顺序轮询网格点连续。
“连续”
-算法轮询网格点连续顺序,即,如在所描述的模式矢量的顺序调查方法。
的paretosearch
解算器主要使用patternsearch
选项。几个可用的内置绘图功能有所不同;看到图解选项。以下选项仅适用于paretosearch
。
在表中,N
表示决策变量的数目。
多目标模式搜索选项
选项 | 定义 | 允许,{ 默认的} 值 |
---|---|---|
ParetoSetSize |
在帕累托集点数。 | 正整数|{max(60,目标数)} |
ParetoSetChangeTolerance |
对溶液的体积或扩散的变化的容忍度。万博 尤文图斯当这两种方法中的任何一种相对变化小于ParetoSetChangeTolerance ,迭代结束。有关详细信息,请参阅停止条件。 |
积极的标量|{1}的军医 |
MinPollFraction |
要轮询的模式的最小分数。 | 通过0-1标|{0} |
InitialPoints |
初始点
中是否有丢失的项 |
矩阵 |
搜索选项指定算法可以在轮询之前的每次迭代中执行的可选搜索。如果搜索返回一个改进目标函数的点,算法将在下一个迭代中使用该点,并省略轮询。请注意,如果你选择了相同的搜索方法和调查方法,只有在Poll方法中选择的选项将被使用,但当所选的选项不同时,将同时使用这两个选项。
完成搜索(UseCompleteSearch
设置时应用搜索方法来GPS正基
,GPS正基2N
,GSS正基Np1
,GSS正基2N
,MADS正基Np1
,MADS正基2N
,或拉丁超立方
。完成搜索可以有值上(真正
)或离(假
)。
为GPS正基
,MADS正基Np1, GPS正基2N
,或MADS正基2N
,完成搜索与poll选项的含义相同吗完成调查。
搜索方法(SearchFcn
)指定可选的搜索步骤。选项是
没有一个
([]
)(默认)不指定搜索步骤。
GPS正基2N
(“GPSPositiveBasis2N”
)
GPS正基
(“GPSPositiveBasisNp1”
)
GSS正基2N
(“GSSPositiveBasis2N”
)
GSS正基Np1
(“GSSPositiveBasisNp1”
)
MADS正基2N
(“MADSPositiveBasis2N”
)
MADS正基Np1
(“MADSPositiveBasisNp1”
)
遗传算法
(“searchga”
)指定使用遗传算法的搜索。如果您选择遗传算法
,另外两个选项出现:
迭代限制-指定执行遗传算法搜索的模式搜索的迭代次数的正整数。的默认值迭代限制1。
选项-遗传算法的选项,你可以设置使用optimoptions
。
要更改默认值迭代限制和选项在命令行,使用语法
选项= optimoptions( 'patternsearch', 'SearchFcn',... {@ searchga,iterlim,optionsGA})
在哪里iterlim
的值迭代限制和optionsGA
是遗传算法的选项对象。如果您不指定任何searchga
选项,然后searchga
使用相同的UseParallel
和UseVectorized
选项设置patternsearch
。
如果你设置搜索方法来遗传算法
要么Nelder-Mead
,我们建议你离开迭代限制设置为默认值1
,因为多次执行这些搜索不太可能改善结果。
拉丁超立方
('searchlhs'
)指定拉丁超多维数据集搜索。patternsearch
为搜索生成每个点,如下所示。对于每个分量,取向量的随机排列(1、2、…,k)
-兰特(1,k)的
,除以k
。(k
是点数。)这个收益率k
点,每个分量接近均匀间隔。然后对结果点进行缩放以适应任何边界。拉丁超立方
使用默认边界-1
和1
。
执行搜索的方式取决于设置的完成搜索:
如果你设置完成搜索来上(真正
),该算法轮询拉丁超立方体搜索在每次迭代中随机生成的所有点,并选择目标函数值最小的点。
如果你设置完成搜索来离(假
)(默认值),一旦找到目标函数值小于当前值的随机生成的点中的一个,算法就停止轮询,并为下一次迭代选择该点。
如果您选择拉丁超立方
,另外两个选项出现:
迭代限制-指定执行拉丁超立方体搜索的模式搜索的迭代次数的正整数。的默认值迭代限制1。
设计水平- - -设计水平是点数吗patternsearch
搜索,一个正整数。的默认值设计水平是维数的15倍。
要更改默认值迭代限制和设计水平在命令行,使用语法
options = optimoptions('patternsearch','SearchFcn', {@searchlhs,iterlim,level})
在哪里iterlim
的值迭代限制和水平
的值设计水平。
Nelder-Mead
('searchneldermead'
)指定使用的搜索fminsearch
它使用了Nelder-Mead算法。如果您选择Nelder-Mead
,另外两个选项出现:
迭代限制-指定执行Nelder-Mead搜索的模式搜索的迭代次数的正整数。的默认值迭代限制1。
选项-功能的选项fminsearch
,您可以创建一个使用功能optimset
。
要更改默认值迭代限制和选项在命令行,使用语法
选项= optimoptions( 'patternsearch', 'SearchFcn',... {@ searchneldermead,iterlim,optionsNM})
在哪里iterlim
的值迭代限制和optionsNM
是搜索函数的选项。
自定义
使您能够编写自己的搜索功能。要使用优化应用指定搜索功能,
集搜索功能来自定义
。
集函数名来@myfun
,在那里myfun
是函数的名称。
如果你使用patternsearch
在命令行,set
选择= optimoptions (‘patternsearch’,‘SearchFcn @myfun);
要查看可用于编写自己的搜索函数的模板,请输入
编辑searchfcntemplate
下一节描述搜索函数的结构。
您的搜索函数必须具有以下调用语法。
函数[successSearch,xBest,fBest,funccount] = searchfcntemplate(fun,x,A,b,Aeq,beq,lb,ub,…optimValues选项)
搜索函数有以下输入参数:
开玩笑
——目标函数
x
- 当前点
A、b
-线性不等式约束
AEQ,BEQ
-线性等式约束
磅,乌兰巴托
-下界和上界约束
optimValues
-结构,使您能够设置搜索选项。结构包含以下字段:
x
- 当前点
FVAL
- 在目标函数值x
迭代
- 当前迭代次数
funccount
- 计数器用户功能评测
规模
-缩放因子用于缩放设计点
problemtype
-标记传递给搜索例程,指示问题是否存在无约束的
,'boundconstraints'
,或“linearconstraints”
。这个域是非线性约束问题的子问题类型。
meshsize
- 在搜索步骤中所用电流目尺寸
方法
- 在最后一次迭代使用方法
选项
-模式搜索选项
该功能具有以下输出参数:
successSearch
- 标识符指示一个布尔是否搜索成功与否
xb, fb
-通过搜索方法找到最佳点和最佳函数值
funccount
-在搜索方法中评估用户功能的数量
看到使用搜索方法了一个例子。
网格选项控制模式搜索使用的网格。可以使用以下选项。
初始大小(InitialMeshSize
)指定初始网格的大小,即从初始点到网格点的最短向量的长度。初始大小应该是一个正的标量。默认值是1.0
。
最大尺寸(MaxMeshSize
)指定网格的最大大小。当达到最大尺寸时,网格尺寸在一次成功迭代后不会增加。最大尺寸必须为正的标量,并且仅在选择GPS或GSS算法作为轮询或搜索方法时使用。默认值为正
。MADS使用的最大尺寸1
。
加速器(AccelerateMesh
)指定当网格大小较小时收缩因子乘以0.5
在每个不成功的迭代之后。加速器可以有值在
要么离
,默认的。加速器适用于GPS和GSS算法。
旋转(MeshRotate
)只适用于调查方法被设置为GPS正基
要么GSS正基Np1
。它指定当网格大小小于网格公差(最小网格大小)的1/100时,网格向量是否乘以-1MeshTolerance
)不成功的调查之后。在方向换句话说,具有小筛目尺寸的第一不成功轮询之后,代替轮询e我(单位积极方向)和-Σe我,算法在方向轮询-e我和Σe我。旋转可以有值离
要么在
(默认值)。当问题具有平等的限制,旋转是禁用的。
旋转对于不连续函数尤其有用。
更改旋转什么时候对投票没有影响调查方法被设置为GPS正基2N
,GSS正基2N
,MADS正基2N
,或MADS正基Np1
。
规模(ScaleMesh)
指定该算法是否通过小心地将模式向量乘以与当前点(或对于无约束问题,初始点)的组件绝对值的对数成比例的常数来扩展网格点。规模可以有值离
要么在
(默认值)。当问题具有平等的限制,规模是禁用的。
膨胀系数(MeshExpansionFactor)
指定在成功轮询后网格大小增加的因子。默认值为2.0
,这意味着网格的大小乘以2.0
投票成功后。膨胀系数必须是正标量,并且当GPS或GSS方法被选择为轮询或检索方法仅使用。MADS使用的因素4.0
。
收缩因子(MeshContractionFactor)
指定在一次不成功的轮询后网格大小减小的因子。默认值为0.5
,这意味着网格的大小乘以0.5
在一次不成功的投票之后。收缩因子必须是正标量,并且当GPS或GSS方法被选择为轮询或检索方法仅使用。MADS使用的因素0.25
。
看到网格的膨胀和收缩为更多的信息。
有关惩罚参数含义的信息,请参见非线性约束求解算法。
最初的处罚(InitialPenalty
) - 指定用于由非线性约束算法的惩罚参数的初始值。最初的处罚必须大于或等于1
,并有一个默认10
。
惩罚因子(PenaltyFactor
) -增加惩罚参数,当问题没有解决到所需的精度和约束不满足。惩罚因子必须大于1
,并有一个默认100
。
结合公差(TolBind
)指定在线性约束条件下,从当前点到可行域边界的距离的公差。这意味着结合公差
指定何时激活线性约束。结合公差
不是一条停止准则。有源线性约束改变点的图案patternsearch
用途轮询或搜索。的默认值结合公差
是1 e - 3
。
模式搜索算法可以记录它已经轮询过的点,这样它就不必轮询同一点多次。如果目标函数需要较长的计算时间,缓存选项可以加快算法的速度。为记录这些点而分配的内存称为缓存。这个选项只能用于确定的目标函数,而不能用于随机函数。
缓存(缓存
)指定是否使用缓存。选项是在
和离
,默认的。当您设置缓存来在
,该算法不计算目标函数在任何网格点内的值宽容缓存中的一个点。
宽容(CacheTol
)指定网格点必须与缓存中的某个点之间的距离,以便算法忽略轮询。宽容必须是正标量。默认值为每股收益
。
大小(的CacheSize
)指定缓存的大小。大小必须是正标量。默认值为1 e4
。
看到使用缓存为更多的信息。
停止条件决定模式搜索算法停止的原因。模式搜索使用以下条件:
网宽容(MeshTolerance
)指定网格大小的最小公差。如果网格尺寸小于,GPS和GSS算法就会停止网宽容。当网格大小小于时,MADS 2N停止MeshTolerance ^ 2
。当网格大小小于时,MADS Np1停止(MeshTolerance /据nVar) ^ 2
,在那里据nVar
是的元件的数量x0
。的默认值MeshTolerance
是1 e-6
。
最大迭代(MaxIterations
)指定算法执行的最大迭代次数。当迭代次数达到时,算法停止最大迭代。您可以选择
100 * numberOfVariables- 最大迭代次数是独立变量(默认值)的100倍的数量。
指定-最大迭代次数的正整数
Max函数评价(MaxFunctionEvaluations
)指定目标函数的最大计算次数。如果函数的计算次数达到,算法就会停止Max函数评价。您可以选择
2000 * numberOfVariables-函数计算的最大次数是自变量数的2000倍。
指定- 用于评价函数的最大数量的正整数
时间限制(MaxTime
)指定模式搜索算法在停止前运行的最大时间(以秒为单位)。这还包括模式搜索算法的任何指定暂停时间。
X宽容(StepTolerance
)指定在两个连续迭代时当前点之间的最小距离。不适用于MADS轮询。在一次不成功的轮询之后,如果两个连续点之间的距离小于,则算法停止X宽容并且网格大小小于X宽容。默认值为1 e-6
。
功能公差(FunctionTolerance
)指定目标函数的最小公差。不适用于MADS轮询。在一次不成功的轮询之后,如果函数值在前一个最佳点与当前最佳点之间的差值小于,则算法停止功能公差,如果网格大小也小于X宽容。默认值为1 e-6
。
看到设置解决公差了一个例子。
约束宽容(ConstraintTolerance
)-约束宽容不作为停止准则。它被用来确定相对于非线性约束的可行性。
输出函数是模式搜索算法在每次生成时调用的函数。要使用优化应用程序指定输出函数,
在命令行,set
选择= optimoptions (‘patternsearch’,‘OutputFcn’,‘myfun’);
对于多个输出函数,输入一个函数句柄单元数组:
选择= optimoptions (‘patternsearch’,‘OutputFcn’, {@myfun1, @myfun2,…});
要查看可用于编写自己的输出函数的模板,请输入
编辑psoutputfcntemplate
在MATLAB®命令提示符。
你的输出函数必须有以下调用语法:
(停止、选择optchanged) = myfun (optimvalues、期权、旗)
MATLAB传递optimvalues
,状态
和国旗
数据到您的输出功能,输出函数返回停止
,选项
和optchanged
数据。
输出函数有以下输入参数:
optimvalues
-结构,包含有关求解程序当前状态的信息。结构包含以下字段:
x
- 当前点
迭代
——迭代数
FVAL
- 在目标函数值x
meshsize
-当前网格大小
funccount
-函数计算次数
方法
-在最后一次迭代中使用的方法,例如“更新乘数”
要么增加惩罚的
对于非线性约束问题,或者“成功的调查”
,细化网格的
,或“成功的搜索”
,可能与“\旋转”
后缀,表示没有非线性约束的问题
TolFun
-上次迭代中函数值变化的绝对值
TolX
-规范的变化x
在最后一次迭代
nonlinineq
-非线性不等式约束函数值为x
,只在指定非线性约束函数时显示
nonlineq
-非线性等式约束函数值为x
,只在指定非线性约束函数时显示
选项
——选项
国旗
-调用输出函数的当前状态。对于可能的值国旗
是
'在里面'
——初始化状态
“通路”
——迭代状态
“中断”
- 一个非线性约束问题的一个子问题的迭代
当国旗
是“中断”
,值optimvalues
字段应用于子问题迭代。
当国旗
是“中断”
,patternsearch
不接受更改吗选项
,忽略了optchanged
。
“完成”
——最终状态
传递额外的参数(优化工具箱)解释了如何提供额外的参数输出功能。
输出函数将以下参数返回给patternsearch
:
停止
-提供在当前迭代中停止算法的方法。停止
可以有以下值。
假
-算法继续下一个迭代。
真正
- 在当前迭代算法终止。
选项
- - - - - -patternsearch
选项。
optchanged
-布尔标志,指示更改到选项
。改变选项
对于后续迭代,设置optchanged
来真正
。
水平显示(“显示”
)指定在模式搜索运行时在命令行显示多少信息。可用的选项有
离
(“关闭”
) - 不显示输出。
迭代
(“通路”
) -显示每个迭代的信息。
诊断
(“诊断”
) -显示每个迭代的信息。此外,诊断还列出了一些问题信息和从默认值更改的选项。
最后
(“最后一次”
) -显示停止的原因。
这两个迭代
和诊断
显示以下信息:
Iter
——迭代数
FunEval
-函数计算的累积次数
MeshSize
-当前网格大小
FunVal
-当前点的目标函数值
方法
-当前轮询的结果(没有指定非线性约束函数)。对于非线性约束函数,方法
显示子问题解决后使用的更新方法。
马克斯约束
-最大非线性约束违反(仅在指定非线性约束函数时显示)
的默认值水平显示是
离
在优化应用
“最后一次”
在使用以下方法创建的选项中optimoptions
您可以选择以串行、并行或向量化的方式计算目标函数和约束函数。选项中提供了这些选项用户函数评价部分的选项优化应用程序的窗格,或通过设置“UseVectorized”
和“UseParallel”
选择与optimoptions
。
必须设置'UseCompletePoll'
来真正
对于patternsearch
使用向量化或并行轮询。类似地,组“UseCompleteSearch”
来真正
用于向量化或并行搜索。
开始在R2019a,当您设置“UseParallel”
选项真正
,patternsearch
内部覆盖'UseCompletePoll'
设置为真正
所以它是并行轮询的。
当评估目标和约束函数(“UseVectorized”
)是串行(假
)patternsearch
在遍历网格点时,每次在一个点上调用目标函数。(在命令行,假设是这样“UseParallel”
是否为其默认值假
。)
当评估目标和约束函数(“UseVectorized”
)是矢量化(真正
)patternsearch
呼吁所有的网一次的点,即目标函数,在目标函数的单一调用。
如果存在非线性约束,则目标函数和非线性约束都需要向量化,以便算法以向量化的方式进行计算。
有关详细信息和示例,请参见向量化目标和约束函数。
当评估目标和约束函数(“UseParallel”
)是在平行下(真正
)patternsearch
使用您建立的并行环境并行地调用目标函数(参见如何在全局优化工具箱中使用并行处理)。在命令行,set“UseParallel”
来假
计算顺序。
不能同时使用向量化计算和并行计算。如果你设置“UseParallel”
来真正
和“UseVectorized”
来真正
,patternsearch
以向量化的方式计算目标函数和约束函数,而不是并行计算。
如何计算目标函数和约束函数
假设UseCompletePoll =真正 |
UseVectorized =假 |
UseVectorized =真正 |
---|---|---|
UseParallel =假 |
串行 | 矢量化 |
UseParallel =真正 |
平行 | 矢量化 |
所有算法的选项可用性表
选项 | 描述 | 算法的可用性 |
---|---|---|
AccelerateMesh |
加速网格大小收缩。 |
GPS和GSS |
缓存 |
同 |
所有 |
的CacheSize |
缓存的大小,以点数为单位。 |
所有 |
CacheTol |
指定当前网格点与缓存中的某个点的距离的正标量 |
所有 |
ConstraintTolerance |
非线性约束的容忍。 |
所有 |
显示 |
显示到命令窗口的级别。 |
所有 |
FunctionTolerance |
公差函数值。 |
所有 |
InitialMeshSize |
用于模式搜索算法的初始网格大小。 |
所有 |
InitialPenalty |
惩罚参数的初值。 |
所有 |
MaxFunctionEvaluations |
目标函数评估的最大数目。 |
所有 |
MaxIterations |
最大迭代次数。 |
所有 |
MaxMeshSize |
在轮询/搜索步骤中所使用的最大网孔尺寸。 |
GPS和GSS |
MaxTime |
允许优化的总时间(以秒为单位)。还包括模式搜索算法的任何指定暂停时间。 |
所有 |
MeshContractionFactor |
网格收缩系数,在迭代不成功时使用。 |
GPS和GSS |
MeshExpansionFactor |
网格扩展因子,在迭代成功时扩展网格。 |
GPS和GSS |
MeshRotate |
在声明一个点为最优之前旋转模式。 |
GPS NP1和GSS NP1 |
MeshTolerance |
网格尺寸公差。 |
所有 |
OutputFcn |
用户指定的函数,模式搜索在每次迭代时调用该函数。 |
所有 |
PenaltyFactor |
点球更新参数。 |
所有 |
PlotFcn |
指定要在运行时绘图的函数。 |
所有 |
PlotInterval |
指定将在每个间隔调用绘图函数。 |
所有 |
PollingOrder |
查询搜索方向的顺序。 |
GPS和GSS |
PollMethod |
模式搜索中使用的轮询策略。 |
所有 |
ScaleMesh |
变量的自动缩放。 |
所有 |
SearchFcn |
指定模式搜索中使用的搜索方法。 |
所有 |
StepTolerance |
自变量的公差。 |
所有 |
TolBind |
结合耐受用来确定是否线性约束是有效的。 |
所有 |
UseCompletePoll |
完成当前迭代的轮询。在一个轮询步骤中评估所有的点。 |
所有 |
UseCompleteSearch |
当搜索方法为轮询方法时,完成围绕当前迭代的搜索。计算搜索步骤中的所有点。 |
所有 |
UseParallel |
当 |
所有 |
UseVectorized |
指定目标函数和约束函数是否向量化。 |
所有 |