




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MatlabMatlab优化工具箱简介优化工具箱简介1.MATLAB1.MATLAB求解优化问题的主要函数求解优化问题的主要函数类 型模 型基本函数名一元函数极小Min F(x)s.t.x1xx2x=fminbnd(F,x1,x2)无约束极小Min F(X)X=fminunc(F,X0)X=fminsearch(F,X0)线性规划Min XcTs.t.AX=bX=linprog(c,A,b)二次规划Min 21xTHx+cTxs.t. Ax=bX=quadprog(H,c,A,b)约束极小(非线性规划)Min F(X)s.t. G(X)=0X=fmincon(FG,X0)达到目标问题Min r
2、s.t. F(x)-wr=goalX=fgoalattain(F,x,goal,w)极小极大问题Min max Fi(x)X Fi(x)s.t. G(x)=0X=fminimax(FG,x0)2. 2. 优化函数的输入变量优化函数的输入变量 使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表:变量描 述调用函数f线性规划的目标函数f*X 或二次规划的目标函数X*H*X+f*X 中线性项的系数向量linprog,quadprogfun非线性优化的目标函数.fun必须为行命令对象或M文件、嵌入函数、或MEX文件的名称fminbnd,fminsearch,fminunc,fmincon,ls
3、qcurvefit,lsqnonlin,fgoalattain,fminimaxH二次规划的目标函数X*H*X+f*X 中二次项的系数矩阵quadprogA,bA矩阵和b向量分别为线性不等式约束:bAX 中的系数矩阵和右端向量linprog,quadprog,fgoalattain,fmincon, fminimaxAeq,beqAeq矩阵和beq向量分别为线性等式约束:beqXAeq中的系数矩阵和右端向量linprog,quadprog,fgoalattain,fmincon, fminimaxvlb,vubX的下限和上限向量:vlbXvublinprog,quadprog,fgoalatt
4、ain,fmincon,fminimax,lsqcurvefit,lsqnonlinX0迭代初始点坐标除fminbnd外所有优化函数x1,x2函数最小化的区间fminbndoptions优化选项参数结构,定义用于优化函数的参数所有优化函数3. 3. 优化函数的输出变量优化函数的输出变量4 4控制参数控制参数optionsoptions的设置的设置 (3) MaxIterMaxIter: 允许进行迭代的最大次数,取值为正整数.OptionsOptions中常用的几个参数的名称、含义、取值如下中常用的几个参数的名称、含义、取值如下: : (1)DisplayDisplay: 显示水平.取值为off
5、时,不显示输出; 取值为iter时,显示每次迭代的信息;取值为final时,显示最终结果.默认值为final.(2)MaxFunEvalsMaxFunEvals: 允许进行函数评价的最大次数,取值为正整数.例:opts=optimset(Display,iter,TolFun,1e-8) 该语句创建一个称为opts的优化选项结构,其中显示参数设为iter, TolFun参数设为1e-8. 控制参数控制参数optionsoptions可以通过函数可以通过函数optimsetoptimset创建或修改。命创建或修改。命令的格式如下:令的格式如下:(1) options=optimset(optim
6、fun)options=optimset(optimfun) 创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.(2)options=optimset(param1,value1,param2,value2,.)options=optimset(param1,value1,param2,value2,.) 创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.(3)options=optimset(oldops,param1,value1,param2,options=optimset(oldops,param1
7、,value1,param2, value2,.) value2,.) 创建名称为oldops的参数的拷贝,用指定的参数值修改oldops中相应的参数.返回用用MatlabMatlab解无约束优化问题解无约束优化问题 其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。常用格式如下:常用格式如下:(1)x= fminbnd (x= fminbnd (fun,xfun,x1 1,x,x2 2) )(2)x= fminbnd (x= fminbnd (fun,xfun,x1
8、1,x,x2 2 ,options)options)(3)xx,fval= fminbndfval= fminbnd(.)(4)xx,fvalfval,exitflag= fminbndexitflag= fminbnd(.)(5)xx,fvalfval,exitflagexitflag,output= fminbndoutput= fminbnd(.) 主程序为主程序为 jizhi1.m:jizhi1.m: f=2*exp(-x).*sin(x); fplot(f,0,8); %作图语句 xmin,ymin=fminbnd (f, 0,8) f1=-2*exp(-x).*sin(x); xm
9、ax,ymax=fminbnd (f1, 0,8)例例2 2 对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?解解先编写先编写M M文件文件fun0.mfun0.m如下如下: : function f=fun0(x) f=-(3-2*x).2*x;主程序为主程序为jizhi2.m:jizhi2.m: x,fval=fminbnd(fun0,0,1.5); xmax=x fmax=-fval运算结果为运算结果为: : xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米. 命令格
10、式为命令格式为: :(1)x= fminunc(fun,X0 );或x=fminsearch(fun,X0 )(2)x= fminunc(fun,X0 ,options); 或x=fminsearch(fun,X0 ,options)(3)x,fval= fminunc(.); 或x,fval= fminsearch(.)(4)x,fval,exitflag= fminunc(.); 或x,fval,exitflag= fminsearch(5)x,fval,exitflag,output= fminunc(.); 或x,fval,exitflag,output= fminsearch(.)
11、2、多元函数无约束优化问题、多元函数无约束优化问题标准型为标准型为:min F(X)3 fminunc为中型优化算法的步长一维搜索提供了两种算法, 由options中参数LineSearchType控制:LineSearchType=quadcubic(缺省值),混合的二次和三 次多项式插值;LineSearchType=cubicpoly,三次多项式插使用使用fminuncfminunc和和 fminsearchfminsearch可能会得到局部最优解可能会得到局部最优解. .说明说明: :fminsearchfminsearch是用单纯形法寻优是用单纯形法寻优. fminunc. fmin
12、unc的算法见以下几点说明:的算法见以下几点说明:1 fminunc为无约束优化提供了大型优化和中型优化算法。由options中的参数LargeScale控制:LargeScale=on(默认值),使用大型算法LargeScale=off(默认值),使用中型算法2 fminunc为中型优化算法的搜索方向提供了4种算法,由 options中的参数HessUpdate控制:HessUpdate=bfgs(默认值),拟牛顿法的BFGS公式;HessUpdate=dfp,拟牛顿法的DFP公式;HessUpdate=steepdesc,最速下降法例例3 3 min f(x)=(4x12+2x22+4x1
13、x2+2x2+1)*exp(x1) 1 1、编写、编写M-M-文件文件 fun1.m:fun1.m: function f = fun1 (x) f = exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1); 2 2、输入、输入M M文件文件wliti3.mwliti3.m如下如下: : x0 = -1, 1; x=fminunc(fun1,x0); y=fun1(x) 3 3、运行结果、运行结果: : x= 0.5000 -1.0000 y = 1.3029e-102. 画出画出Rosenbrock 函数的等高线图函数的等高线图,输入命令: cont
14、our(x,y,z,20) hold on plot(-1.2,2, o ); text(-1.2,2,start point) plot(1,1,o) text(1,1,solution)1. 为获得直观认识,先画出为获得直观认识,先画出Rosenbrock 函数的三维图形函数的三维图形, 输入以下命令: x,y=meshgrid(-2:0.1:2,-1:0.1:3); z=100*(y-x.2).2+(1-x).2; mesh(x,y,z)3.3.用用fminsearchfminsearch函数求解函数求解输入命令: f=100*(x(2)-x(1)2)2+(1-x(1)2; x,fval
15、,exitflag,output=fminsearch(f, -1.2 2)运行结果: x =1.0000 1.0000fval =1.9151e-010exitflag = 1output = iterations: 108 funcCount: 202 algorithm: Nelder-Mead simplex direct search4.4. 用用fminunc fminunc 函数函数(1)建立M-文件fun2.m function f=fun2(x) f=100*(x(2)-x(1)2)2+(1-x(1)2(2)主程序wliti44.moldoptions=optimset(fm
16、inunc) options=optimset(oldoptions,LargeScale,off) options11=optimset(options,HessUpdate,dfp) x11,fval11,exitflag11,output11=fminunc(fun2, -1.2 2,options11) pauseoptions12=optimset(options,HessUpdate,dfp,LineSearchType,cubicpoly) x12,fval12,exitflag12,output12=fminunc(fun2, -1.2 2,options12) pause o
17、ptions21=optimset(options,HessUpdate,bfgs) x21,fval21,exitflag21,output21=fminunc(fun2, -1.2 2,options21) pause options22=optimset(options,HessUpdate,bfgs,LineSearchType,cubicpoly) x22,fval22,exitflag22,output22=fminunc(fun2, -1.2 2,options22) pauseoptions31=optimset(options,HessUpdate,steepdesc) x31,fval31,exitflag31,output31=fminunc(fun2, -1.2 2,options31) pause options32=optimset(options,HessUpdate,steepdesc,MaxIter,8000,MaxFunEvals,8000) x32,fval32,exitflag32,output32
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论