收藏 分享(赏)

用matlab解无约束优化问题.ppt

上传人:cjc2202537 文档编号:1036682 上传时间:2018-06-06 格式:PPT 页数:22 大小:396.50KB
下载 相关 举报
用matlab解无约束优化问题.ppt_第1页
第1页 / 共22页
用matlab解无约束优化问题.ppt_第2页
第2页 / 共22页
用matlab解无约束优化问题.ppt_第3页
第3页 / 共22页
用matlab解无约束优化问题.ppt_第4页
第4页 / 共22页
用matlab解无约束优化问题.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、Matlab优化工具箱简介,1.MATLAB求解优化问题的主要函数,2. 优化函数的输入变量,使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表:,3. 优化函数的输出变量,4控制参数options的设置,(3) MaxIter: 允许进行迭代的最大次数,取值为正整数.,Options中常用的几个参数的名称、含义、取值如下:,(1)Display: 显示水平.取值为off时,不显示输出; 取值为iter时,显示每次迭代的信息;取值为final时,显示最终结果.默认值为final.,(2)MaxFunEvals: 允许进行函数评价的最大次数,取值为正整数.,例:opts=optimset

2、(Display,iter,TolFun,1e-8) 该语句创建一个称为opts的优化选项结构,其中显示参数设为iter, TolFun参数设为1e-8.,控制参数options可以通过函数optimset创建或修改。命令的格式如下:,(1) options=optimset(optimfun) 创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.,(2)options=optimset(param1,value1,param2,value2,.) 创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.,(3)op

3、tions=optimset(oldops,param1,value1,param2, value2,.) 创建名称为oldops的参数的拷贝,用指定的参数值修改oldops中相应的参数.,返回,用Matlab解无约束优化问题,其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。,常用格式如下:(1)x= fminbnd (fun,x1,x2)(2)x= fminbnd (fun,x1,x2 ,options)(3)x,fval= fminbnd(.)(4)x,fval,

4、exitflag= fminbnd(.)(5)x,fval,exitflag,output= fminbnd(.),主程序为 jizhi1.m: f=2*exp(-x).*sin(x); fplot(f,0,8); %作图语句 xmin,ymin=fminbnd (f, 0,8) f1=-2*exp(-x).*sin(x); xmax,ymax=fminbnd (f1, 0,8),例2 对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?,解,先编写M文件fun0.m如下: function f=fun0(x) f=-(3-2*x).2*x;,主程

5、序为jizhi2.m: x,fval=fminbnd(fun0,0,1.5); xmax=x fmax=-fval,运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米.,命令格式为:(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,exitf

6、lag= fminunc(.); 或x,fval,exitflag= fminsearch(5)x,fval,exitflag,output= fminunc(.); 或x,fval,exitflag,output= fminsearch(.),2、多元函数无约束优化问题,标准型为:min F(X),3 fminunc为中型优化算法的步长一维搜索提供了两种算法, 由options中参数LineSearchType控制:LineSearchType=quadcubic(缺省值),混合的二次和三 次多项式插值;LineSearchType=cubicpoly,三次多项式插,使用fminunc和 f

7、minsearch可能会得到局部最优解.,说明:,fminsearch是用单纯形法寻优. fminunc的算法见以下几点说明:,1 fminunc为无约束优化提供了大型优化和中型优化算法。由options中的参数LargeScale控制:LargeScale=on(默认值),使用大型算法LargeScale=off(默认值),使用中型算法,2 fminunc为中型优化算法的搜索方向提供了4种算法,由 options中的参数HessUpdate控制:HessUpdate=bfgs(默认值),拟牛顿法的BFGS公式;HessUpdate=dfp,拟牛顿法的DFP公式;HessUpdate=stee

8、pdesc,最速下降法,例3 min f(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1),1、编写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、输入M文件wliti3.m如下: x0 = -1, 1; x=fminunc(fun1,x0); y=fun1(x),3、运行结果: x= 0.5000 -1.0000 y = 1.3029e-10,2. 画出Rosenbrock 函数的等高线图,输入命令: contour(x,y,z,20) ho

9、ld 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.用fminsearch函数求解,输入命令: f=100*(x(2)-x(1)2)2+(1-x(1)2; x,fval,exitflag,output=fminsearch(f, -1.2 2),运行结果: x =

10、1.0000 1.0000fval =1.9151e-010exitflag = 1output = iterations: 108 funcCount: 202 algorithm: Nelder-Mead simplex direct search,4. 用fminunc 函数,(1)建立M-文件fun2.m function f=fun2(x) f=100*(x(2)-x(1)2)2+(1-x(1)2,(2)主程序wliti44.m,oldoptions=optimset(fminunc) options=optimset(oldoptions,LargeScale,off) optio

11、ns11=optimset(options,HessUpdate,dfp) x11,fval11,exitflag11,output11=fminunc(fun2, -1.2 2,options11) pause,options12=optimset(options,HessUpdate,dfp,LineSearchType,cubicpoly) x12,fval12,exitflag12,output12=fminunc(fun2, -1.2 2,options12) pause options21=optimset(options,HessUpdate,bfgs) x21,fval21,e

12、xitflag21,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) pause,options31=optimset(options,HessUpdate,steepdesc) x31,fval31,exitflag31,output31=fminunc(fun2, -1.2 2,opti

13、ons31) pause options32=optimset(options,HessUpdate,steepdesc,MaxIter,8000,MaxFunEvals,8000) x32,fval32,exitflag32,output32=fminunc(fun2, -1.2 2,options32) pause options33=optimset(options,HessUpdate,steepdesc,MaxIter,9000,MaxFunEvals,9000) x33,fval33,exitflag33,output33=fminunc(fun2, -1.2 2,options33),Rosenbrock函数不同算法的计算结果,可以看出,最速下降法的结果最差.因为最速下降法特别不适合于从一狭长通道到达最优解的情况.,实验作业,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报