0 引言解决最优化问题已经有很多比较成熟的算法,如遗传算法、神经网络、模拟退火法等,各有其优劣。
模式搜索法作为一种解决最优化问题的直接搜索方法,因为在计算时不需要目标函数的导数,所以在解决不可导或者求导异常麻烦时比较有效。
随着模式搜索法的发展,人们在Hooke-Jeeves 模式搜索法的基础上设计了变步长搜索策略,使得模式搜索方向更接近于最优下降方向,并且同时采用了插值技术和非单调技术,不仅改善了方法的局部寻优能力,而且改善了方法的收敛性。
现在已有很多软件将这一算法集成到程序中,如Matlab 已经将它`添加到工具箱中,使用时只要调用相应的函数就可以用模式搜索法解决问题,大大提高了工作效率,降低了编程工作量。
1 模式搜索法的基本原理模式搜索就是寻找一系列的点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,缩小搜索范围);③重复②的操作直到终止条件为止,终止条件可以是迭代次数已到设定值或者误[差小于规定值等。
2 模式搜索法的改进随着模式搜索法被逐渐认可与应用,人们对模式搜索法做了许多改进。
如在搜索方向上,用模式搜索法解决一个有N 个自变量的问题时,共有Z*N 个基向量,这样如果对每个方向都搜索就会大大的增加计算量,对此人们提出了正基向量的概念,具体可参照,编写的《Positive bases innumerical optimization》一文,正__________基向量的应用与有运动矢量场自适应快速搜索法(MVFAST),增强预测区域搜索(EPZS)、非对称十字多层六边形搜索法(UMHexagonS)的提出在满足全局—搜索能力的情况下,大大降低了计算量。
另外在步长控制方面,出现了变步长模式搜索方法,推动了模式搜索法的发展。
3 Matlab模式搜索法工具箱应用及实例Matlab 的工具箱里的patternsearch 就是基于模式搜索算法的优化工具箱,有两种方法可以调用patternsearch 工具箱,一种是GUI 即图形界面形式的,用户可以直接在窗口中操作,另一种就是在程序中调用patternsearch 函数来进行模式搜索,本文主要介绍后面一种。
Patternsearch 函数的完整格式为[X,FVAL]=PATTERNSEARCH (FUN,X0,A,b,Aeq,beq,LB,UB,NONLCON,options)FVAL,X 分别为取得的最优值及所在的,点,FUN 为m 文件句柄该,该m 文件就是要进行最优化的函数,options 为对搜索方式的设置。
A,b,Aeq,beq,LB,UB 为对x 取值的限制条件,具体的为:A*x≤B;Aeq*x=Beq;Lb≤x≤Ub≤≤≤≤≤≤≤≤*≤;软件导刊Software Guide第8卷%第8期2009年8 月Aug. 2009若没有限制则可以设为空即[],下面用patternsearch 工具箱计算带噪声的具有多个极小值的函数的最小值x21函数具体表达式为:,f(x1,x2)=x21+x21-25+m*rand;x21+x22≤25x21+(x2-9)2-16+m*rand;x21+(x2-9)2≤16m*rand;其它情%≤≤≤≤≤≤≤≤≤况Rand 为(0 1)之间的随机数,m 为振幅,两者乘机代表噪声大小(本算例取自matlab 软件包的help 文件,原算例没有带噪声)。
当m 取为1 时利用matlab 画出该函数的图形如图1,由图可知当引入噪声后,图形变的很复杂,若利用一般的算法由于无法求导则该问题变得很复杂,由于patternsearch 的工作原,理使得其在解决这类问题时有很大优势。
解决步骤:(1)编写m 函数,m 函数就是要计算的函数,具体如下:function y = myfun(z,noise)y=zeros(1,size(z,1));noise=1;for i=1:size(z,1)x=z(i,:);if x(1)^2+x(2)^2<=25y(i)=x(1)^2+x(2)^2-25+noise*randn;elseif x(1)^2+(x(2)-9)^2<=16y(i)=x(1)^2+(x(2)-9)^2-16+noise*randn;|else y(i)=0+noise*randn;end end endz 为矢量是目标函数的自变量,大小为自变量的个数,y 是对应与自变量的目标函数的取值。
图1 m=1 时,函数(1)的图形(2)确定初始点,这对运算速度也结果有很大影响,这里取为X0=[-8,8];再就要确定搜索边界条件,一般要视具体问题来确定,若选的过大则搜索速度变慢,过小则会影响全局搜索能力。
这里取为-10≤x1≤10;-10≤x2≤15(3)编写主程序)X0 = [-8 8];% Starting point.LB = [-10 -10];%Lower boundUB = [10 15];%Upper boundrange = [LB(1)UB(1);LB(2)UB(2)];Objfcn = @myfun;% Handle to the objective function.clf;showSmoothFcn (Objfcn,range);hold on;% Plot the smooth objective functiontitle('objective function')fig = gcf;PSoptions = psoptimset ('Display','iter','OutputFcn',~@psOut);[x,z]= patternsearch (Objfcn,X0,[],[],[],[],LB,UB,PSoptions)figure(fig);hold on;plot3 (x (1),x(2),z,'dr','MarkerSize',12,'MarkerFaceColor','r');hold off搜索过程:Iter f-count f(x)MeshSize Method.0 1 11 2 2 Successful Poll2 2 1 Refine Mesh。
(只列出了前两次结果)32 112 Refine Mesh图2 搜索结果模型结果如图2 所示,可以看出模式搜索法有很好的全局搜索能力,尽管图形毫无规律,并且有无穷多的极小值点,但是模式搜索法通过31 次迭代就找到了最小值点[,],搜索精度已经达到数量级。
而相比之下matlab 优化工具箱中.的Fmincon 函数则搜索不到最小值点,如图Fmincon 函数找到的点已远远偏离了最小值点,由此我们可以看出模式搜索的强大功能。
参考文献:[1]张明,毕笃彦.自适应可变模式搜索算法[J].计算机工程,2008(7).[2]杨春,倪勤.变步长非单调模式搜索法[J].高等学校计算机学报,~0 引言水利工程大部分在山区, 位置偏僻, 交通不便,水、电设施需要在施工前备齐。
工程建设过程中需要的宿舍、办公楼、材料仓库、成品半成品加工场地等临时工程和辅助设施需要修建。
临时工程、辅助设施科学合理的选址不仅能够减少费用和运行期间材料运输费用, 大幅度降低运行成本, 而且能为施工生产*部门带来方便、快捷的服务。
在考虑施工辅助设施位置布置时, 若地址位置平面坐标( x1,x2) 是以建造费用和运行费用为目标函数的变量, 该函数的导数很难求得, 或者根本不存在, 利用传统的解析法不能得出解答。
模式搜索法的迭代步骤简单, 收敛速度较快, 可以很方便地得出满意解。
1 模式搜索法求极值的优化理论模式搜索法是一种最优化算法, 当目标函数f(x1,x2,⋯,xn)的解析表达式十分复杂甚至写不出具体@表达式、用解析法无法解答时, 它可以方便地求出极值。
求解目标函数极值问题的计算步骤为:( 1) 任选初始近似点B1, 以它为初始基点进行探索。
( 2) 为每一独立变量xi( i=1, 2, ⋯, n) 选定步长缩小到要求的精度时, 即可停止迭代, 确定已找到最优点。
2 模式搜索法优化施工方案施工某场址平面图和剖面图见图1、图2。
现要确定其混凝土生产系统合适的位置, 使修建费用最(少。
在场址范围的西南角设置坐标原点, 建立坐标系统。
由于各种线路的长短不同, 以及桩的长短不同( 桩的最小长度为20m, 差别在于超过20m 以上的部分) 。
因工厂位置不同, 其修建费用就有差别。
目标函数列出目标函数即修建总费用C 为:C( x1,x2) =45x2+9[(5000- x1)2+x22]1/2+15[x21+(x2-2000)2]1/2+12[(x1- 200)2+(5600- x2)2]1/2+$36[(3000- x1)2+(4800- x2)2] 1/2+45×15(x2/100)地理范围的约束条件为: 0≤x1≤5000;0≤x2≤6000- (2/5)x1。
以探索法解算给定起点坐标(x1, x2), 采用模式探索法进行解算。
搜索步长定为100m, 即!1=(0,100)。
搜索过程及计算结果见表1。
从表1 的计算结果可以看到, 无论初始点在最终结果附近( 见表1 中的1 点) , 还是在最终结果的上、下、左、右( 见表1 中的3, 4, 5 点) , 均可以找到最[从表1 的计算结果可以看到, 无论初始点在最终结果附近( 见表1 中的1 点) , 还是在最终结果的上、下、左、右( 见表1 中的3, 4, 5 点) , 均可以找到最表1 搜索过程及结果Table 1 Sear ching process and r esult起点坐标/mx1 x2123"45佳的结果。
即使给出的初始点离最佳点较远, 是一些极不合理的点( 见表1 中的2 点) , 用模式搜索法同样可以找出最优位置点。