主要内容

模式搜索攀登华盛顿山

此示例直观地显示了模式搜索如何优化函数。该函数是华盛顿山附近地形的高度,作为x-y位置的函数。为了找到华盛顿山顶,我们最小化目标函数,即高度的负值。(本例中的华盛顿山是美国东北部的最高峰。)

美国地质调查局(US Geological Survey)根据网格上的x-y位置提供地形高度数据。为了能够计算任意点的高度,目标函数将从附近的栅格点插值高度。

当然,简单地找到网格上指定的高度最大值会更快,使用最大值作用这个例子的重点是展示模式搜索算法是如何运行的;它适用于定义在连续区域上的函数,而不仅仅是网格点。此外,如果评估目标函数的计算成本很高,则按照最大值函数,将比使用模式搜索算法效率低得多,后者对一小部分网格点进行抽样。

模式搜索的工作原理

模式搜索通过以下方法(称为轮询)查找目标函数的局部最小值。在此描述中,描述模式搜索量的单词以粗体显示。搜索从初始点开始,该点作为当前点第一步:

1.生成一个图案点的集合,通常是加上或减去坐标方向,乘以a网目尺寸,并将此图案置于当前点

2.对目标函数的每一点求值图案

3.如果最小目标在图案低于当前位置的值当前点,那么民意调查是成功的,会发生以下情况:

3 a。找到的最小值点变成当前点

3b。这个网目尺寸是翻了一倍。

3 c。算法继续执行步骤1。

4.如果投票结果不一致成功的,然后发生以下情况:

4 a。的网目尺寸减半。

4b。如果网目尺寸低于阈值时,迭代将停止。

4 c。否则,当前点,算法从第1步开始。

这个简单的算法,经过一些小的修改,提供了一种健壮而直接的优化方法。它不需要目标函数的梯度。它本身也有约束条件,但是这个例子和描述只处理无约束的问题。

准备模式搜索

要准备模式搜索,请加载数据mtWashington.mat,它包含了一个472 × 345的网格上的美国地质勘探局数据。标高Z以英尺为单位。向量x和y分别包含了向东和向北的网格间距的基值。数据文件还包含搜索的起始点X0。

负载mtWashington

有三个MATLAB文件,执行目标函数的计算和绘图例程。它们是:

1.terrainfun,它计算任何x-y位置的高度负值。terrainfun使用MATLAB®函数interp2进行二维线性插值。它获取Z数据,并使所有x-y点的高度为负。

2.华盛顿,它绘制了华盛顿山的三维渲染。此外,随着运行的进行,它会在每个点周围绘制比以前访问的点更好(更高)的球体。

3.华盛顿,绘制华盛顿山的等高线地图,并监控控制跑步速度的滑块。它通过在这些点上画+符号来显示模式搜索算法寻找最优值的位置。它还在每个点周围画出了比以前访问过的点更好的球体。

在这个例子中,模式搜索使用terrainfun作为其目标函数,华盛顿作为输出函数,和华盛顿作为一个绘图函数。我们准备好要传递的函数模式搜索在匿名函数语法中:

mtWashObjectiveFcn = @(xx) terrainfun(xx, x, y, Z);mtWashOutputFcn = @(xx,arg1,arg2) psoutpuwashington (xx,arg1,arg2, x, y, Z); / /输入参数mtWashPlotFcn = @(xx,arg1) psplowashington (xx,arg1, x, y, Z); / /获取路径

模式搜索选项设置

接下来,我们创建模式搜索的选项。这组选项使算法在网格尺寸缩小到1以下时停止,保持网格不缩放(每个方向的尺寸相同),设置初始网格尺寸为10,并设置输出函数和plot函数:

options=options(@patternsearch,“MeshTolerance”1.“鳞片鱼”错误的...“InitialMeshSize”10“UseCompletePoll”,真的,“PlotFcn”,MTFCN,...“OutputFcn”mtWashOutputFcn,“UseVectorized”,真正的);

观察模式搜索的进展

运行此示例时,您会看到两个窗口。其中一个窗口显示模式搜索算法在华盛顿山二维等高线图上选择的点。此窗口有一个滑块,用于控制算法迭代之间的延迟(当它返回到模式搜索工作说明中的步骤1时)。将滑块设置为低位可加快跑步,或将滑块设置为高位可减慢跑步。

另一个窗口显示华盛顿山的三维图,以及模式搜索算法的步骤。可以在运行过程中旋转此绘图以获得不同的视图。

[xfinal ffinal] = patternsearch (mtWashObjectiveFcn X0 ,[],[],[],[],[],...[]、[]、选项)
优化终止:网格大小小于options.MeshTolerance。

图形模式搜索包含一个轴。标题为“白山地形图”的轴线包含98个等高线、直线类型的对象。

图白山包含一个轴。标题为白山的轴包含51个类型为面、线的对象。

xfinal =1×2316130 4904295
ffinal = -6280

最后一点,xfinal,表示模式搜索算法完成的位置;这是华盛顿山顶的x-y坐标。最终的目标函数,ffinal,是华盛顿山高度的负数,6280英尺。(根据华盛顿山天文台的数据,这个高度应该是6288英尺)。

检查文件terrainfun.mpsoutputwashington.mpsplotwashington.m看看插值和图形是如何工作的。

模式搜索算法有很多选项。例如,该算法可以选择它发现的第一个改进点,而不是轮询模式中的所有点。它可以按不同顺序轮询点。它可以使用不同的轮询模式,包括确定性和随机性。请查阅全局优化有关详细信息,请参阅用户指南。

相关话题