主要内容

模式搜索轮询如何工作

上下文

patternsearch找到一个点的序列,x0x1x2,……,即逼近最优点。从序列中的每一点到下一点,目标函数的值要么减少,要么保持不变。中描述的函数的模式搜索是如何工作的使用GPS算法进行优化

为了简化解释,本节描述了广义模式搜索(GPS)如何使用默认的最大正基2工作N,与ScaleMesh选项设置为

本节不说明如何patternsearch算法工作与边界或线性约束。对于边界和线性约束,patternsearch修改轮询点,使其在每次迭代中都是可行的,这意味着满足所有的边界和线性约束。

本节不包括非线性约束。要理解patternsearch适用于非线性约束,请参见非线性约束求解算法

成功的民意调查

模式搜索从初始点开始x0你所提供的。在这个例子中,X0 = [2.1 1.7]

迭代1

在第一次迭代中,网格尺寸为1,GPS算法将模式向量添加到初始点X0 = [2.1 1.7]计算以下网格点:

[1 0] + x0 = [3.1 - 1.7] [0 1] + x0 = [2.1 - 2.7] [1 0] + x0 = [1.1 - 1.7] [0 1] + x0 = (2.1 - 0.7)

该算法按上面所示的顺序计算网格点上的目标函数。下图为目标函数在初始点和网格点处的值。

算法通过计算网格点的目标函数值来轮询网格点,直到找到一个值小于4.6347的值x0.在本例中,它找到的第一个这样的点是(1.1 - 1.7),则目标函数值为4.5146,所以迭代1的投票结果是成功的.该算法将序列中的下一个点设置为

X1 = [1.1 1.7]

请注意

默认情况下,GPS模式搜索算法一旦发现适合度值小于当前点的网格点,就会立即停止当前迭代。因此,该算法可能无法轮询所有网格点。参数可以使算法轮询所有网格点UseCompletePoll选项真正的

迭代2

轮询成功后,算法将当前网格大小乘以2,即参数的默认值MeshExpansionFactor选项。因为初始网格尺寸为1,所以在第二次迭代时网格尺寸为2。迭代2的网格包含以下点:

2 * [1 0] + x1 = (3.1 - 1.7) 2 * [0 1] + x1 = (1.1 - 3.7) 2 * [1 0] + x1 = (-0.9 - 1.7) 2 * [0 1] + x1 = (1.1 - -0.3)

下图显示了这一点x1和网格点,连同目标函数的对应值。

算法轮询网格点,直到找到一个值小于4.5146的网格点x1.它找到的第一个这样的点是(-0.9 - 1.7),则目标函数值为3.25,因此迭代2中的轮询再次成功。该算法将序列中的第二个点设置为

X2 = [-0.9 1.7]

由于轮询成功,该算法将当前网格大小乘以2,在第三次迭代时得到网格大小为4。

一次不成功的投票

到第四次迭代时,当前点为

X3 = [-4.9 1.7]

网格大小是8,所以网格由点组成

8 * [1 0] + x3 = [3.1 - 1.7] 8 * [0 1] + x3 = [-4.9 - 9.7] 8 * [1 0] + x3 = [-12.9 - 1.7] 8 * [0 1] + x3 = (-4.9 - -1.3)

下图为网格点及其目标函数值。

在此迭代中,没有一个网格点的目标函数值小于点的值x3,所以投票结果是不成功的.在这种情况下,算法不会在下一次迭代中更改当前点。也就是说,

X4 = x3;

在下一次迭代中,该算法将当前网格大小乘以0.5,即参数的默认值MeshContractionFactor选项,使网格大小在下一次迭代是4。然后算法轮询较小的网格尺寸。

在MADS中成功和不成功的投票

设置PollMethod选项“MADSPositiveBasis2N”“MADSPositiveBasisNp1”原因patternsearch使用不同的轮询类型,并以不同于其他轮询算法的方式对轮询作出反应。

MADS轮询在每次迭代中使用新生成的伪随机网格向量。向量是从随机下三角矩阵的列中随机洗牌的分量。矩阵的分量的大小为1/ 筛孔尺寸 .在轮询中,网格向量乘以网格大小,因此轮询点可以达到 筛孔尺寸 从现在开始。

不成功的轮询使网格缩小了一倍4,忽略MeshContractionFactor选择。类似地,成功的轮询将网格扩展为倍4,忽略MeshExpansionFactor选择。最大网孔尺寸为1的任何设置MaxMeshSize选择。

此外,当投票成功时,patternsearch从成功点开始,再次投票。这个额外的投票使用相同的网格向量,扩大了一个因素4同时保持在尺寸以下1.额外的民意调查再次沿着刚刚成功的方向进行。

在每次迭代中显示结果

属性可以在每次迭代中显示模式搜索的结果显示选项“通路”.这使您能够评估模式搜索的进度,并对其进行更改选项如果有必要的话)。

使用此设置,模式搜索将在命令行上显示关于每次迭代的信息。前四个迭代是

Iter f-count f(x) MeshSize Method 0 1 4.63474 1 14 4.51464 2 Successful Poll 2 7 3.25 4 Successful Poll 3 10 -0.264905 8 Successful Poll 4 14 -0.264905 4 Refine Mesh

条目成功的调查下面方法表示当前迭代成功。例如,迭代2中的轮询是成功的。因此,在迭代2时计算的点的目标函数值如下所示f (x),小于迭代1时的值。

在迭代4中,元素细化网格告诉您轮询未成功。因此,迭代4的函数值与迭代3保持不变。

默认情况下,模式搜索在每次成功投票后将网格大小增加一倍,在每次不成功投票后将网格大小减半。

更多的迭代

模式搜索在停止前执行60次迭代。下图显示了在模式搜索的前13次迭代中计算的序列中的点。

点下面的数字表示算法找到该点的第一次迭代。该图只显示了与成功的轮询相对应的迭代数,因为在一次不成功的轮询之后,最佳点不会改变。例如,迭代4和5的最佳点与迭代3相同。

调查方法

在每次迭代中,模式搜索轮询当前网格中的点——也就是说,它在网格点上计算目标函数,以查看是否有一个函数值小于当前点的函数值。模式搜索轮询如何工作提供轮询的示例。属性指定定义网格的模式PollMethod选择。默认模式,“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]。

例如,如果目标函数有三个自变量,则GPS正基2N,由以下六个向量组成。

[10 0 0]
[0 10 0]
[0 0 1]
[-1 0 0]
[0 -1 0]
[0 0 -1]。

或者,您可以设置PollMethod选项“GPSPositiveBasisNp1”,该模式由以下内容组成N+ 1个方向。

[1 0 0…0]
[0 1 0…0]
...
[0 0 0…1]
[-1 -1 -1…-1]。

例如,如果目标函数有三个自变量,则为“GPSPositiveBasisNp1”由以下四个向量组成。

[10 0 0]
[0 10 0]
[0 0 1]
[-1 -1 -1]。

使用模式搜索有时会运行得更快“GPSPositiveBasisNp1”而不是“GPSPositiveBasis2N”随着PollMethod,因为算法在每次迭代中搜索的点更少。属性时的情况也是一样的,尽管在本例中没有涉及“MADSPositiveBasisNp1”“MADSPositiveBasis2N”, GSS也是如此。例如,如果在线性约束的示例上运行模式搜索使用模式搜索和优化实时编辑器任务约束最小化时,算法执行1588个函数求值“GPSPositiveBasis2N”,默认PollMethod,但只有877个函数计算使用“GPSPositiveBasisNp1”.有关详细信息,请参见比较投票选项的效率

但是,如果目标函数有许多局部极小值,则使用“GPSPositiveBasis2N”随着PollMethod可能会避免找到不是全局最小值的局部最小值,因为在每次迭代中搜索当前点周围的更多点。

完成调查

默认情况下,如果模式搜索发现一个网格点可以改善目标函数的值,它将停止轮询并将该点设置为下一个迭代的当前点。当这种情况发生时,一些网格点可能不会被轮询。其中一些未轮询的点的目标函数值可能比模式搜索发现的第一个值还要低。

对于存在多个局部极小值的问题,有时更可取的是进行模式搜索轮询所有每次迭代的网格点,选择目标函数值最好的网格点。这使得模式搜索能够在每次迭代中探索更多的点,从而潜在地避免局部最小值不是全局最小值。有模式搜索轮询整个网格设置UseCompletePoll选项真正的

模式搜索的停止条件

当出现以下任意一种情况时,算法停止:

  • 网目尺寸小于MeshTolerance选择。

  • 的迭代次数达到MaxIterations选择。

  • 算法执行的目标函数求值总数达到MaxFunctionEvaluations选择。

  • 的时间(以秒为单位),算法运行直到达到MaxTime选择。

  • 轮询成功后,在前两次迭代中发现的点与网格大小之间的距离都小于StepTolerance选择。

  • 轮询成功后,前两次迭代中目标函数的变化小于FunctionTolerance选项和网孔尺寸都小于StepTolerance选择。

ConstraintTolerance选项不用作停止条件。它决定了关于非线性约束的可行性。

MADS算法使用一个额外的参数,称为轮询参数Δp,在网目尺寸停止判据中:

Δ p N Δ 作为积极的基础 N + 1 民意调查 Δ 对于正基2 N 调查显示,

Δ在哪里是网目尺寸。MADS停止准则为:

ΔpMeshTolerance

模式搜索的鲁棒性

模式搜索算法对目标函数失效具有鲁棒性。这意味着patternsearch允许函数计算导致,或复数值。当目标函数在初始点时x0是一个实数,有限的值,patternsearch将轮询点失败视为目标函数值很大,并忽略它们。

例如,如果民意调查中的所有点都计算为patternsearch认为轮询不成功,缩小网格,并重新计算。如果民意调查中的一个点比以往任何一个点都要小,patternsearch认为轮询成功,并展开网格。

相关的话题