主要内容

搜索和轮询

定义的搜索

patternsearch,一个搜索是在投票前运行的算法。搜索试图找到一个比当前点更好的点。(较好是指目标函数值较低。)如果搜索找到了一个更好的点,那么这个更好的点就成为当前点,并且在该迭代中不进行轮询。如果找不到更好的点,patternsearch执行一项民意调查。

默认情况下,patternsearch不使用搜索。搜索,看如何使用搜索方法

这个数字带搜索方法的patternsearch包含直接搜索的流程图,包括使用搜索方法。

带搜索方法的patternsearch

迭代限制适用于除投票方法外的所有内置搜索方法。如果您为搜索方法选择迭代限制,则搜索将一直启用,直到达到迭代限制为止。之后,patternsearch停止搜索,只轮询。

如何使用搜索方法

中使用搜索patternsearch

  • 优化Live Editor任务中,选择一个搜索函数指定求解器选项>算法设置>搜索功能

  • 在命令行中,使用搜索方法using创建选项optimoptions.例如,要使用拉丁超立方搜索:

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

    有关更多信息,包括所有内置搜索方法的列表,请参阅patternsearch函数参考页,以及搜索选项选项引用的部分。

你可以编写自己的搜索方法。使用中描述的语法搜索功能的结构.要在模式搜索中使用搜索方法,请将其函数句柄作为自定义函数SearchFcn)选项。

内置搜索类型

  • 的查询方法——您可以使用任何查询方法作为搜索算法“经典”算法。patternsearch执行一个轮询步骤作为搜索。要使这种类型的搜索有效,您的搜索类型应该与您的投票类型不同。(patternsearch如果选择的查询方法与问卷类型相同,则不进行查询。)因此,使用MADS搜索与GSS或GPS民意调查,或使用GSS或GPS搜索与MADS民意调查。

    请注意

    的情况下才能使用轮询方法作为搜索方法算法选择是“经典”

  • fminsearch,也叫Nelder-Mead -fminsearch仅适用于无约束问题。fminsearch运行到自然停止标准;这不是一蹴而就的。因此,使用fminsearch只需要一次迭代。这是默认设置。要更改设置,请参见搜索选项

  • 遗传算法- - - - - -遗传算法运行到自然停止标准;这不是一蹴而就的。因此,使用遗传算法只需要一次迭代。这是默认设置。要更改设置,请参见搜索选项

  • 拉丁超立方搜索-在搜索选项.缺省情况下,搜索值为15n点,n是变量的数量,并且只在第一次迭代期间进行搜索。要更改设置,请参见搜索选项

  • “rbfsurrogate”-如搜索选项,使用径向基函数代理进行搜索,类似于surrogateopt代理(见代理优化算法).这种搜索可以减少函数的计算次数,但相对耗时,因此最适合用于耗时的目标函数。

何时使用搜索

使用搜索方法主要有两个原因:

搜索方法增加速度

通常,您事先并不知道某个搜索方法是否会加速优化。因此,在以下情况下尝试一种搜索方法:

  • 您正在对类似的问题或具有不同参数的相同问题执行重复优化。

  • 您可以尝试不同的搜索方法,以找到更短的求解时间。

搜索并不总是加速优化。举个例子,看搜索和调查

寻找更好的解决方案的方法

由于搜索方法先于轮询方法运行,因此使用搜索相当于为优化选择不同的起点。这一评论适用于Nelder-Mead,遗传算法,以及拉丁超立方搜索方法,在默认情况下,所有这些方法都在优化开始时运行一次。遗传算法和拉丁超立方搜索是随机的,可以通过几个搜索盆地的吸引力

相关的话题

Baidu
map