搜索和轮询
定义的搜索
在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,遗传算法
,以及拉丁超立方搜索方法,在默认情况下,所有这些方法都在优化开始时运行一次。遗传算法
和拉丁超立方搜索是随机的,可以通过几个搜索盆地的吸引力.