主要内容

模式搜索选项

模式搜索选项

设置选项patternsearch通过使用optimoptions

选择= optimoptions (“patternsearch”...Option1 = value1, Option2 = value2);
  • 中列出了一些选项斜体.这些选项没有出现在清单中optimoptions的回报。要知道为什么optimoptions隐藏这些选项值,参见optimoptions隐藏的选项

  • 确保将选项传递给求解器。否则,patternsearch使用默认选项值。

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

算法的选择

算法指定使用的算法patternsearch解决一个问题。

  • “经典”—使用原算法模式搜索轮询如何工作

  • “国家联盟”-使用非均匀模式搜索算法描述非均匀模式搜索(NUPS)算法

  • “nups-gps”-使用仅限于GPS(广义模式搜索)轮询算法的非均匀模式搜索算法(不使用OrthoMADS(正交网格自适应直接搜索)轮询)。

  • “nups-mads”—使用OrthoMADS轮询算法限制的非均匀模式搜索算法(不支持GPS轮询)。

绘图选项

PlotFcn指定在每次迭代时调用的一个或多个plot函数patternsearchparetosearch.设置PlotFcn选项为内置的plot函数名称或plot函数的句柄。,您可以随时停止算法停止图窗口上的按钮。例如,要显示最佳函数值,请设置选项如下:

选择= optimoptions (“patternsearch”PlotFcn =“psplotbestf”);

要显示多个图形,使用内置图形函数名的单元格数组或函数句柄的单元格数组:

选择= optimoptions (“patternsearch”...PlotFcn = {@plotfun1 @plotfun2,...});

在哪里@plotfun1@plotfun2,等等都是绘图函数的函数句柄。如果指定多个plot函数,则所有plot将作为子plot显示在同一窗口中。右键单击任意子图,可在单独的图形窗口中获得较大的版本。

可用的绘图功能patternsearchparetosearch只有一个目标函数:

  • “psplotbestf”-绘制最佳目标函数值。

  • “psplotfuncount”-绘制函数求值的次数。

  • “psplotmeshsize”-绘制网格尺寸。

  • “psplotbestx”-绘制当前最佳点。

  • “psplotmaxconstr”-绘制最大非线性约束违例。

  • 您还可以创建和使用您自己的plot函数。情节功能的结构描述自定义plot函数的结构。将任何自定义函数作为函数句柄传递。

paretosearch对于多个目标函数,您可以选择作为函数句柄传递的自定义函数,或以下函数中的任何一个。

  • “psplotfuncount”-绘制函数求值的次数。

  • “psplotmaxconstr”-绘制最大非线性约束违例。

  • “psplotdistance”-绘制距离度量。看到paretosearch算法

  • “psplotparetof”-绘制目标函数值。适用于三个或更少的目标。

  • “psplotparetox”-在参数空间中绘制当前点。适用于三个或更少的维度。

  • “psplotspread”-绘制传播度量。看到paretosearch算法

  • “psplotvolume”-绘制体积度量。看到paretosearch算法

patternsearch,PlotInterval选项指定对plot函数的连续调用之间的迭代次数。

情节功能的结构

图函数的第一行有形式

函数停止= plotfun(optimvalues, flag)

函数的输入参数是

  • optimvalues包含求解器当前状态信息的结构。的结构包含以下字段patternsearch

    • x——当前点

    • 迭代——迭代数

    • fval-目标函数值

    • meshsize-当前网目尺寸

    • funccount-函数求值次数

    • 方法-上次迭代使用的方法

    • TolFun-上次迭代函数值的公差

    • TolX——宽容x上次迭代中的值

    • nonlinineq-非线性不等式约束,仅在指定非线性约束函数时显示

    • nonlineq-非线性等式约束,仅当指定非线性约束函数时显示

    的结构包含以下字段paretosearch

  • 国旗-调用plot函数的当前状态。的可能值国旗

    • “init”——初始化状态

    • “通路”——迭代状态

    • “中断”——中间阶段

    • “完成”——最终状态

    的细节国旗,请参阅输出函数的结构

传递额外的参数解释如何向函数提供附加参数。

输出参数停止提供在当前迭代时停止算法的方法。停止可以有以下值:

  • -算法继续到下一次迭代。

  • 真正的—算法在当前迭代时终止。

调查选项

轮询选项控制模式搜索在每次迭代中轮询网格点的方式。

PollMethod指定算法用于创建网格的模式。每一类直接搜索算法都有两种模式:广义模式搜索(GPS)算法、生成集搜索(GSS)算法和网格自适应直接搜索(MADS)算法。这些模式是积极的基础2N积极的基础N+ 1:

  • 的默认模式patternsearch“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)。

  • 的默认模式paretosearch“GPSPositiveBasis2Np2”,等于“GPSPositiveBasis2N”还有两个点,都是1,都是- 1。

    [1 1 1…1] [–1 –1 –1...–1]

    例如,如果优化问题有三个自变量,则该模式由以下8个向量组成。

    [1 0 0][0 1 0][0 0 1][1 0 0][0 1 0][0 0 1][1 1 1](1 1 1)。

  • “GSSPositiveBasis2N”模式类似于“GPSPositiveBasis2N”,但调整基向量,以考虑线性约束。“GSSPositiveBasis2N”效率比“GPSPositiveBasis2N”当电流点靠近线性约束边界时。paretosearch也有“GSSPositiveBasis2Np2”类似的模式“GPSPositiveBasis2Np2”

  • “MADSPositiveBasis2N”模式由两个部分组成N随机生成的向量,其中N为目标函数的自变量个数。这是通过随机生成来实现的N构成线性无关集合的向量,用第一个集合和这个集合的负数得到2N向量。如上所示,“GPSPositiveBasis2N”模式是用线性无关恒等式的正和负组成的,然而,用“MADSPositiveBasis2N”的随机排列生成模式N——- - - - - -N线性无关的下三角矩阵,在每次迭代中重新生成。

    请注意

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

  • “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]。

  • “GSSPositiveBasisNp1”模式类似于“GPSPositiveBasisNp1”,但调整基向量,以考虑线性约束。“GSSPositiveBasisNp1”效率比“GPSPositiveBasisNp1”当电流点靠近线性约束边界时。

  • “MADSPositiveBasisNp1”模式由N个随机生成的向量构成正基,其中N为目标函数的自变量个数。然后,再生成一个随机向量,给出N+1个随机生成的向量。时,每次迭代生成一个新模式“MADSPositiveBasisNp1”被选中。

    请注意

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

  • “OrthoMADSPositiveBasis2N”模式与“GPSPositiveBasis2N”模式,然后在N维上随机旋转。

  • “OrthoMADSPositiveBasisNp1”模式与“GPSPositiveBasisNp1”模式,然后在N维上随机旋转。

UseCompletePoll指定是否必须在每次迭代时轮询当前网格中的所有点。UseCompletePoll可以有价值真正的UseCompletePoll只适用于当算法“经典”

  • 如果你设置UseCompletePoll真正的,算法在每次迭代时轮询网格中的所有点,并选择目标函数值最小的点作为下一次迭代的当前点。

  • 如果你设置UseCompletePoll,当算法发现一个点的目标函数值小于当前点的目标函数值时,算法立即停止轮询。然后,算法将该点设置为下次迭代的当前点。

  • paretosearch只有,MinPollFractionOption指定在轮询期间调查的轮询方向的百分比,而不是的二进制值UseCompletePoll.要指定一个完整的轮询,请设置MinPollFraction1.若要指定轮询在找到改善所有目标函数的点时立即停止,请设置MinPollFraction0

PollOrderAlgorithm指定算法在当前网格中搜索点的顺序。PollOrderAlgorithm只适用于当算法“经典”.选项是

  • “连续”(默认)-算法轮询网格点连续中所描述的模式向量的顺序调查方法

  • “随机”—轮询顺序是随机的。

  • “成功”-每次迭代的第一个搜索方向是算法在前一次迭代中找到最佳点的方向。在第一个点之后,算法以相同的顺序轮询网格点“连续”

多目标的选择

paretosearch解算器主要使用patternsearch选项。几个可用的内置plot函数是不同的;看到绘图选项.以下选项仅适用于paretosearch

在表中,N表示决策变量的个数。

多目标模式搜索选项

选项 定义 允许,默认的
ParetoSetSize 帕累托集合中的点数。 正整数|{max(60,目标数量)}
ParetoSetChangeTolerance 溶液体积或扩散的变化公差。当这些指标的相对变化小于ParetoSetChangeTolerance,迭代结束。有关详细信息,请参见停止条件 积极的标量|{1}的军医
MinPollFraction 要轮询的模式的最小分数。 标量从0到1 |{0}
InitialPoints

初始点paretosearch.使用以下数据类型之一:

  • 矩阵据nvar列,其中每一行代表一个初始点。

  • 包含以下字段的结构(所有字段都是可选的,除了X0):

    • X0——矩阵据nvar列,其中每一行代表一个初始点。

    • Fvals——矩阵numObjectives列,其中每一行表示目标函数在中的对应点的值X0

    • Cineq——矩阵numIneq列,其中每一行表示对应点的非线性不等式约束值X0

中有缺失的条目FvalsCineq字段,paretosearch计算缺少的值。

矩阵据nvar柱|结构|{[]}

搜索选项

SearchFcnOption指定算法可以在轮询之前的每次迭代中执行的可选搜索。如果搜索返回一个改进目标函数的点,算法在下一次迭代中使用该点,并省略轮询。如果您选择相同的SearchFcn而且PollMethod时,只使用Poll方法,尽管在选择的选项不同时使用这两种方法。

只能选择轮询方法作为搜索方法“经典”算法。

的值SearchFcn下面列出。

  • []为默认值,不指定搜索步骤。

  • 任何内置投票算法:“GPSPositiveBasis2N”“GPSPositiveBasisNp1”“GSSPositiveBasis2N”“GSSPositiveBasisNp1”“MADSPositiveBasis2N”“MADSPositiveBasisNp1”“OrthoMADSPositiveBasis2N”,或“OrthoMADSPositiveBasisNp1”

  • “searchga”指定使用遗传算法的搜索。您可以使用两个附加参数修改遗传算法搜索:

    选择= optimoptions (“patternsearch”SearchFcn =...{@searchga, iterlim, optionsGA})
    • iterlim-正整数,指定执行遗传算法搜索的模式搜索的迭代次数。的默认值iterlim是1。建议不要更改此值,因为多次执行这些耗时的搜索不太可能改善结果。

    • optionsGA—遗传算法选项,您可以使用optimoptions.如果不指定任何searchga选项,然后searchga使用相同的UseParallel而且UseVectorized选项设置patternsearch

  • “searchlhs”指定拉丁超立方搜索。patternsearch为搜索生成每个点,如下所示。对于每个分量,取向量的随机排列(1、2、…,k)-兰特(k),除以k.(k是点数。)这个收益率k点,每个分量接近均匀间隔。然后将得到的点按比例缩放以适应任何边界。拉丁超立方的默认边界-1而且1

    的设置决定执行搜索的方式UseCompleteSearch选择。

    • 如果你设置UseCompleteSearch真正的,算法轮询每一次迭代中由拉丁超立方搜索随机生成的所有点,选择目标函数值最小的点。

    • 如果你设置UseCompleteSearch(默认值),算法一旦发现随机生成的其中一个点的目标函数值小于当前点的目标函数值,就会停止轮询,并选择该点进行下一次迭代。

    您可以使用两个附加参数修改拉丁超立方搜索:

    选择= optimoptions (“patternsearch”SearchFcn =...{@searchlhs iterlim,水平})
    • iterlim-正整数,指定执行拉丁超立方搜索的模式搜索的迭代次数。的默认值iterlim是1。

    • 水平- - -水平点数是多少patternsearch搜索,一个正整数。的默认值水平是维数的15倍。

  • “searchneldermead”指定使用fminsearch,该算法使用了Nelder-Mead算法。您可以使用两个附加参数修改Nelder-Mead搜索:

    选择= optimoptions (“patternsearch”SearchFcn =...{@searchneldermead, iterlim, optionsNM})
    • iterlim-正整数,指定执行Nelder-Mead搜索的模式搜索的迭代次数。的默认值iterlim是1。

    • optionsNM——选项fminsearch,可以使用optimset函数。

  • “rbfsurrogate”指定使用径向基函数代理的搜索,类似于surrogateopt代理(见代理优化算法).代理是由最近的代理形成的N+1个或多个评价点,其中N变量的数量(大小x0).算法计算10*后N点,代理被重置(擦除),新代理的点来自重置后的点。径向基函数要求至少N+1点,所以在重置之后,搜索不会运行,直到算法计算至少N+ 1额外的点。代理需要所有变量的上下界。如果你不提供一个边界,算法从最近的点列表构造一个。因此,当您不为某些变量提供一个边界时,算法会执行更多的计算,运行速度会略慢。在任何情况下,该搜索函数都是相对耗时的,因此最适合与耗时的目标函数一起使用。

  • 自定义使您能够编写自己的搜索函数。

    选择= optimoptions (“patternsearch”SearchFcn = @myfun);

    若要查看可用于编写自己的搜索函数的模板,请输入

    编辑searchfcntemplate

    下一节描述搜索函数的结构。

搜索功能的结构

搜索函数必须具有以下调用语法。

函数[successSearch, xb, fb, funccount] =...searchfcntemplate(有趣,x, A、b Aeq,说真的,磅,乌兰巴托,...optimValues选项)

搜索函数有以下输入参数:

  • 有趣的——目标函数

  • x——当前点

  • A、b-线性不等式约束

  • Aeq,说真的-线性等式约束

  • 磅,乌兰巴托—下限和上限约束

  • optimValues—可以设置搜索选项的结构。该结构包含以下字段:

    • x——当前点

    • fval-目标函数值在x

    • 迭代-当前迭代次数

    • funccount-用户功能评估计数器

    • 规模-缩放因子用于缩放设计点

    • problemtype-传递给搜索例程的标志,指示问题是否存在无约束的“boundconstraints”,或“linearconstraints”.该字段是非线性约束问题的子问题类型。

    • meshsize-搜索步骤中使用的当前网格尺寸

    • 方法-上次迭代使用的方法

  • 选项-模式搜索选项

该函数有以下输出参数:

  • successSearch-一个布尔标识符,表示搜索是否成功

  • xb, fb-用搜索法找到最佳点和最佳函数值

  • funccount-搜索方法中用户功能评估的个数

看到搜索和调查了一个例子。

完成搜索

UseCompleteSearch选项在设置时应用SearchFcn“GPSPositiveBasis2N”“GPSPositiveBasisNp1”“GSSPositiveBasis2N”“GSSPositiveBasisNp1”“MADSPositiveBasis2N”“MADSPositiveBasisNp1”,或“searchlhs”UseCompleteSearch可以有价值真正的

对于poll算法的搜索函数,UseCompleteSearch和投票选项的意思相同吗UseCompletePoll.的意义UseCompleteSearch有关拉丁超立方搜索,请参阅“searchlhs”进入搜索选项

网格选项

网格选项控制模式搜索使用的网格。可以使用以下选项。

  • InitialMeshSize指定初始网格的大小,它是从初始点到网格点的最短向量的长度。InitialMeshSize必须是正标量。默认值是1.0

  • MaxMeshSize指定网格的最大大小。当达到最大尺寸时,网格尺寸在成功迭代后不会增加。MaxMeshSize必须是一个正标量,并且仅在选择GPS或GSS算法作为Poll或Search方法时使用。默认值为.MADS使用的最大大小为1

  • AccelerateMesh指定当网格尺寸很小时,是否MeshContractionFactor乘以0.5在每次不成功的迭代之后。AccelerateMesh可以有价值真正的(用加速器)(不使用加速器),默认。AccelerateMesh仅适用于GPS和GSS轮询算法和“经典”算法. .

  • MeshRotate仅适用于PollMethod“GPSPositiveBasisNp1”“GSSPositiveBasisNp1”MeshRotate“上”指定当网格大小小于的1/100时,网格向量乘以-1MeshTolerance不成功轮询后的选项。换句话说,第一次轮询失败后用小网格尺寸,而不是轮询方向e(单位正向方向)和-Σe,算法沿-方向轮询e和ΣeMeshRotate可以有价值“关闭”“上”(默认)。

    • MeshRotate对于不连续函数特别有用。

    • 当问题有等式约束时,MeshRotate是禁用的。

  • ScaleMesh指定算法是否通过仔细地将模式向量乘以与当前点(或对于无约束问题,初始点)的分量绝对值的对数成正比的常数来缩放网格点。ScaleMesh可以有价值真正的(默认)。当问题有等式约束时“经典”算法,ScaleMesh是禁用的。

  • MeshExpansionFactor指定在成功轮询后增加网格大小的因子。默认值为2.0,这意味着网格的大小乘以2.0成功投票后。MeshExpansionFactor必须是一个正标量,并且仅在选择GPS或GSS方法作为Poll或Search方法和算法选择是“经典”.麦斯使用一个MeshExpansionFactor4.0.看到网格的膨胀和收缩为更多的信息。

  • MeshContractionFactor指定轮询失败后网格尺寸减小的因子。默认值为0.5,这意味着网格的大小乘以0.5在投票失败后。MeshContractionFactor必须是一个正标量,并且仅在选择GPS或GSS方法作为Poll或Search方法和算法选择是“经典”.麦斯使用一个MeshContractionFactor0.25.看到网格的膨胀和收缩为更多的信息。

约束参数

有关惩罚参数含义的信息,请参见非线性约束求解算法

  • InitialPenalty—指定非线性约束算法使用的惩罚参数的初始值。InitialPenalty必须大于或等于1,默认为10

  • PenaltyFactor-当问题没有解决到要求的精度和约束条件不满足时,增加惩罚参数。PenaltyFactor必须大于1,默认为One hundred.

TolBind指定从当前点到可行域边界相对于线性约束的距离的公差。这意味着TolBind指定线性约束何时处于活动状态。TolBind不是停止的标准。主动线性约束改变点的模式patternsearch用于轮询或搜索。的默认值。TolBind1 e - 3

缓存选项

模式搜索算法可以保留它已经轮询过的点的记录,因此它不必对同一个点进行多次轮询。如果目标函数需要相对较长的计算时间,缓存选项可以加快算法的速度。为记录这些点而分配的内存称为缓存。这个选项应该只用于确定性目标函数,而不是随机目标函数。

缓存指定是否使用缓存。选项是“上”而且“关闭”,默认的。当您设置缓存“上”,算法不计算目标函数在内的任何网格点上的值CacheTol缓存中的一个点。

CacheTol指定网格点与缓存中的某个点的距离必须有多近,算法才能忽略轮询它。CacheTol必须是正标量。默认值为每股收益

CacheSize指定缓存的大小。CacheSize必须是正标量。默认值为1 e4

请注意

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

看到使用缓存为更多的信息。

停止条件

停止标准决定了是什么原因导致模式搜索算法停止。模式搜索使用以下标准:

MeshTolerance指定网格尺寸的最小公差。如果网格尺寸小于则GPS和GSS算法停止MeshTolerance.当网格尺寸小于时,MADS 2N停止MeshTolerance ^ 2.当网格尺寸小于时,MADS Np1停止(MeshTolerance /据nVar) ^ 2,在那里据nVar元素的个数是x0.的默认值。MeshTolerance1 e-6

MaxIterations指定算法执行的最大迭代次数。当迭代次数达到时,算法停止MaxIterations.默认值为自变量个数的100倍。

MaxFunctionEvaluations指定目标函数的最大求值次数。当函数求值的次数达到时,算法停止MaxFunctionEvaluations.默认值为2000乘以自变量个数。

MaxTime指定模式搜索算法在停止之前运行的最长时间(以秒为单位)。这还包括模式搜索算法的任何指定暂停时间。

StepTolerance指定两个连续迭代时当前点之间的最小距离。不适用于MADS轮询。在轮询失败后,如果两个连续点之间的距离小于,算法将停止StepTolerance而且网目尺寸小于StepTolerance.默认值为1 e-6

FunctionTolerance指定目标函数的最小公差。不适用于MADS轮询。在轮询失败后,如果上一个最佳点的函数值与当前最佳点的函数值之差小于则算法停止FunctionTolerance,如果网格尺寸也小于StepTolerance.默认值为1 e-6

看到设置解决公差了一个例子。

ConstraintTolerance不用作停止判据。它被用来确定关于非线性约束的可行性。默认值为1 e-6

输出函数的选择

OutputFcn指定模式搜索算法在每次迭代时调用的函数。用于输出函数文件myfun.m,设置

选择= 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,仅在指定非线性约束函数时显示

  • 选项——选项

  • 国旗—当前调用输出函数的状态。的可能值国旗

    • “init”——初始化状态

    • “通路”——迭代状态

    • “中断”-非线性约束问题子问题的迭代

      • 国旗“中断”的值。optimvalues字段应用于子问题迭代。

      • 国旗“中断”patternsearch不接受变更选项,忽略了optchanged

    • “完成”——最终状态

传递额外的参数解释如何向输出函数提供附加参数。

输出函数返回以下参数patternsearch

  • 停止-提供了一种在当前迭代时停止算法的方法。停止可以具有以下值。

    • -算法继续到下一次迭代。

    • 真正的—算法在当前迭代时终止。

  • 选项- - - - - -patternsearch选项。

  • optchanged-布尔标志,指示更改为选项.改变选项对于后续的迭代,设置optchanged真正的

显示到命令窗口选项

显示指定运行模式搜索时在命令行上显示的信息的数量。可用的选项有

  • “最终”(默认)-显示停止的原因。

  • “关闭”或同等“没有”—无显示信息。

  • “通路”—显示每次迭代的信息。

  • “诊断”—显示每次迭代的信息。此外,诊断程序还列出了一些问题信息和从默认值更改的选项。

这两个“通路”而且“诊断”显示以下信息:

  • Iter——迭代数

  • FunEval-累计函数求值次数

  • MeshSize-当前网目尺寸

  • FunVal-当前点的目标函数值

  • 方法-当前投票结果(不指定非线性约束函数)。对于非线性约束函数,方法显示子问题解决后使用的更新方法。

  • 马克斯约束最大非线性约束违例(仅当指定了非线性约束函数时显示)

矢量化和并行选项

您可以选择以串行、并行或向量化的方式计算目标函数和约束函数。设置UseVectorizedUseParallel选项真正的使用矢量化或并行计算

请注意

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

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

  • UseVectorizedpatternsearch每次在一个点上调用目标函数,因为它在网格点中循环。(这个假设UseParallel的默认值为.)

  • UseVectorized真正的patternsearch同时在网格中的所有点上调用目标函数,也就是说,在对目标函数的单一调用中。

    如果存在非线性约束,则目标函数和非线性约束都需要向量化,以便算法以向量化的方式计算。

    有关详细信息和示例,请参见向量化目标函数和约束函数

  • UseParallel真正的patternsearch使用您建立的并行环境(参见如何在全局优化工具箱中使用并行处理).在命令行,设置“UseParallel”计算连续。

请注意

不能同时使用向量化和并行计算。如果你设置UseParallel真正的而且UseVectorized真正的patternsearch以向量化的方式计算目标函数和约束函数,而不是并行计算。

如何评估目标函数和约束函数

假设UseCompletePoll真正的 UseVectorized UseVectorized真正的
UseParallel 串行 矢量化
UseParallel真正的 平行 矢量化

模式搜索算法选项表

所有算法的选项可用性表

选项 描述 算法的可用性
AccelerateMesh

加速网目尺寸收缩。

GPS和GSS,“经典”算法

缓存

缓存设置为“上”patternsearch保存它所轮询的网格点的历史,并且在随后的迭代中不再轮询接近它们的点。如果需要使用此选项patternsearch因为计算目标函数要花很长时间,所以运行很慢。如果目标函数是随机的,建议不要使用这个选项。

请注意

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

所有

CacheSize

缓存的大小,以点数表示。

所有

CacheTol

指定当前网格点与缓存中的某个点必须有多近的正标量,以便patternsearch避免轮询。如果可用“缓存”选项设置为“上”

所有

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

指定每隔一段时间调用plot函数。

所有

PollOrderAlgorithm

轮询搜索方向的顺序。

GPS和GSS,“经典”算法

PollMethod

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

“经典”算法

ScaleMesh

自动缩放变量。

所有

SearchFcn

指定模式搜索中使用的搜索方法。

所有

StepTolerance

自变量公差。

所有

TolBind

用于确定线性约束是否有效的绑定公差。

所有

UseCompletePoll

完成当前迭代的轮询。在轮询步骤中计算所有点。

“经典”算法

UseCompleteSearch

当搜索方法是轮询方法时,围绕当前迭代完成搜索。计算搜索步骤中的所有点。

“经典”算法

UseParallel

真正的,并行计算投票或搜索的目标函数。通过设置为禁用

所有

UseVectorized

指定目标函数和约束函数是否向量化。

所有

Baidu
map