搜索和轮询
搜索的定义
在patternsearch
,一个搜索是在投票之前运行的算法。搜索试图找到一个比当前点更好的点。(较好的是指目标函数值较低。)如果搜索发现了更好的点,那么更好的点就成为当前点,并且在该迭代中不进行轮询。如果找不到更好的点,patternsearch
执行问卷调查。
默认情况下,patternsearch
不使用搜索。要搜索,请参见如何使用搜索方法.
这个数字patternsearch与搜索方法包含直接搜索的流程图,包括使用搜索方法。
patternsearch与搜索方法
迭代限制适用于除轮询方法外的所有内置搜索方法。如果为搜索方法选择了迭代限制,则搜索将一直启用,直到达到迭代限制为止。之后,patternsearch
停止搜索,只进行民意调查。
如何使用搜索方法
使用搜索patternsearch
:
在优化活编辑器任务,选择一个搜索功能指定求解选项>算法设置>搜索功能.
在命令行中,使用搜索方法创建选项
optimoptions
.例如,使用拉丁超立方搜索:Opts = optimoptions(“patternsearch”,“SearchFcn”, @searchlhs);
有关更多信息,包括所有内置搜索方法的列表,请参阅
patternsearch
函数参考页,以及搜索选项部分的选项引用。
您可以编写自己的搜索方法。使用中描述的语法搜索函数的结构.要在模式搜索中使用搜索方法,请将其函数句柄设置为自定义
函数(SearchFcn
)选项。
内置搜索类型
的搜索算法中,可以使用任何投票方法作为搜索算法
“经典”
算法。patternsearch
将一个轮询步骤作为搜索。要使这种类型的搜索有益,您的搜索类型应该不同于您的投票类型。(patternsearch
如果所选的搜索方法与调查类型相同,则不进行搜索。)因此,在GSS或GPS民意调查中使用MADS搜索,或者在MADS民意调查中使用GSS或GPS搜索。请注意
时,才可以使用轮询方法作为搜索方法
算法
选择是“经典”
.fminsearch
,也叫Nelder-Mead -fminsearch
只针对无约束的问题。fminsearch
运行到其自然停止标准;这不是一蹴而就的。因此,使用fminsearch
只是一次迭代。这是默认设置。若要更改设置,请参见搜索选项.遗传算法
- - - - - -遗传算法
运行到其自然停止标准;这不是一蹴而就的。因此,使用遗传算法
只是一次迭代。这是默认设置。若要更改设置,请参见搜索选项.拉丁超立方搜索-在搜索选项.缺省情况下,搜索15n点,n是变量的数量,并且只在第一次迭代期间进行搜索。若要更改设置,请参见搜索选项.
“rbfsurrogate”
-如搜索选项,使用径向基函数代理进行搜索,类似于surrogateopt
代理(见代理优化算法).这种搜索可以减少函数求值的次数,但相对耗时,因此最适合耗时的目标函数。
何时使用搜索
使用搜索方法有两个主要原因:
加速优化(参见提高速度的搜索方法)
得到一个较好的局部解,或得到一个全球解决方案(见寻找更好的解决方案的方法金宝搏官方网站)
提高速度的搜索方法
一般来说,您事先并不知道搜索方法是否会加速优化。因此,在以下情况下尝试搜索方法:
您正在对类似的问题执行重复优化,或者在具有不同参数的相同问题上执行重复优化。
您可以尝试不同的搜索方法,以找到更短的求解时间。
搜索并不总是加速优化。举个例子,看搜索及投票.
寻找更好的解决方案的方法金宝搏官方网站
由于搜索方法在轮询方法之前运行,因此使用搜索就相当于为优化选择了不同的起点。这个评论适用于Nelder-Mead,遗传算法
,以及拉丁超立方搜索方法,在默认情况下,所有这些方法都在优化开始时运行一次。遗传算法
和拉丁超立方搜索是随机的,可以搜索几个吸引盆地.