模式搜索就是寻找一系列的点 X0,X1,X2,…,这些点都越来越靠近最优值点,当搜索进行到终止条件时则将最后一个点作为本次搜索的解。 利用模式搜索法解决一个有 N 个自变量的
最优化问题。 ①要确定一个初始解 X0,这个值的选取对计算结果影响很大;②确定基向量用于指定搜索方向,如对于两个自变量的问题可设为 V(0,1;1,0;-1,0;0,-1)即按十字方向搜索;③确定搜索步长它将决定算法的收敛速度,以及全局搜索能力
具体步骤为:①计算出初始点的目标函数值 f(Xi),然后计算其相邻的其它各点的值 f(Xi+V(j)*L),j∈(1,2. . .2N);②如果有一点的函数值比 更优则表示搜索成功,那么 Xi+1=Xi+V(j)*L,且下次搜索时以 Xi+1 为中心,以 L=L*δ 为步长(δ>1,扩大搜索范围),若没有找到这样的点则表示搜索失败,仍以 Xi 为中心,以 L=L*λ 为步长(λ<1,缩小搜索范围);③重复②的操作,结果到终止条件为止,终止条件可以是迭代次数已到设定值或者误差小于规定值等。
运用Matlab 的工具箱里的 patternsearch,可实现模式搜索法。Patternsearch 函数的完整格式为[X FVAL]=PATTERNSEARCH(FUN X0 A b Aeq beq LB UB NONLCON options)