




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流Matlab 7最优化问题求解.精品文档.Matlab 最优化问题求解1. 无约束最优化问题无约束最优化问题一般描述为:minfx其中x=x1,x2xnT,该数学表示的含义是求一组x,使得目标函数f(x)最小.这种问题也称为最小化问题.Matlab中提供了3个求最小值的函数,调用格式为:·x,fval=fminbnd(fname,x1,x2,options):求一元函数在(x1,x2)区间中的极小值点x和极小值fval;·x,fval=fminsearch(fname,x0,options):基于单纯形算法求多元函数的极小
2、值点x和极小值fval;·x,fval=fminunc(fname,x0,options):基于拟牛顿法求多元函数的极小值点x和极小值fval.这里讨论的是局域极值问题,fname是定义函数m文件的文件名,fminbnd的输入变量x1,x2分别是研究区间的左右边界;fminsearch和fminunc的输入变量x0是一个向量,表示极值点的初值.options为优化参数,可以通过optimset函数来设置,当目标函数的阶数大于2时,使用fminunc比fminsearch更有效;但是目标函数高度不连续时,使用fminsearch函数效果更好.Matlab中没有专门求最大值的函数,只要-
3、f(x)在(a,b)上的最小值就是f(x)在(a,b)上最大值的相反数.因此用fminbnd(-f,x1,x2)返回函数f(x)在(x1,x2)上的最大值的相反数.例如:求函数fx=x3-2x-5在区间0,5内的极小值和极小值点.function fx=mymin(x)fx=x.3-2*x-5;x,fval=fminbnd(mymin,0,5)x = 0.8165fval = -6.0887因此极小值点为x=0.8165,极小值为-6.0887例如:设fx,y,z=x+y24x+z2y+2z求函数f(x,y,z)在(0.5,0.5,0.5)附近的最小值.function f=fxyz(p)x=
4、p(1);y=p(2);z=p(3);f=x+y2/4/x+z2/y+2/z;U,min=fminsearch(mymin,0.5,0.5,0.5)U = 0.5000 1.0000 1.0000min =4.00002. 有约束最优化问题求解有约束最优化问题一般描述为:minx s.t, G(X)0fx其中x=x1,x2xnT,该数学表示的含义是求一组x,使得目标函数f(x)最小,且满足约束条件G(x)小于或等于0.这种问题也称为最小化问题.2.1 约束条件分类·线性不等式约束:Axb·线性等式约束:Aeqx=beq·非线性不等式约束:Cx0·非线性等
5、式约束:Ceqx=0·x的上界和下界:LbndxUbndMatlab提供了fmincon函数,用于求解各种约束下的最优解问题,调用格式为:x,fval=fmincon(fname,x0,A,b,Aeq,beq,Lbnd,Ubnd,Nonf ,options)X,fname,fval,x0和options含义与求最小值函数相同,其余参数为约束条件,参数NonF为非线性约束函数的M文件名,如果该约束不存在则用空矩阵表示.例如:求解有约束最优化问题x s.t.minfx=0.4x2+x12+x22-x1x2+130x13x1+0.5x20.40.5x1+x20.5x10,x20functi
6、on f=fop(x)f=0.4*x(2)+x(1)2+x(2)2-x(1)*x(2)+1/30*x(1)3;AA = -1.0000 -0.5000 -0.5000 -1.0000bb = -0.4000 -0.5000lblb = 0 0x0x0 = 0.5000 0.5000x,f=fmincon(fop,x0,A,b,lb,options)x = 0.3400 0.3300f =0.2456 注意线性不等式约束全部是小于号,如果出现大于号要将不等式两端取相反数转换成小于号再列写A,b矩阵.3. 线性规划问题求解线性规划问题的标准形式是:minx s.t.AxbAeqx=beqLbndx
7、UbndfxMatlab中求解线性规划问题的函数是linprog,调用格式为:x,fval=linprog(f,A,b,Aeq,beq,Lbnd,Ubnd)其中x是最优解,fval是目标函数的最优值.函数中各项参数是线性规划问题标准形式中的对应项,x,b,beq,Lbnd,Ubnd是向量,Aeq,A是矩阵,f为目标函数的系数向量.例如:求解线性规划问题x s.t.minfx=2x1+x23x1+x234x1+3x26x10,x20f=2;1;A=-3,-1;-4,-3;-1,-2;b=-3;-6;-2;lb=0;0;options=optimset('Display','
8、;off');x,f=linprog(f,A,b,lb,)Optimization terminated.x = 0.6000 1.2000f = 2.40004. 详细介绍用matlab优化工具箱解无约束优化问题4.1 matlab工具箱主要函数类型模型基本函数一元函数极小minFxs.t.x1<x<x2X=fminbnd(fname,x1,x2)无约束最小minF(X)X=fminsearch(fname,X0)线性规划mincTXs.t.AXbX=linprog(c,A,b,Aeq,beq,vlb,vub)二次规划min12xTHx+cTxs.t.AxbX=quadp
9、rog(H,c,A,b)约束最小(非线性规划)minFXs.t.Gx0X=fmincon(fname,X0)达到目标问题minrs.t.Fx-wrgoalX=fgoalattain(fname,x,goal,w)极小极大问题minmaxFixs.t. Gx0X=fminimax(FG,x0)4.2 控制参数options的设置控制参数options包含了优化程序中控制精度要求、输出形式、算法选择、迭代次数等.Options中常用的几个参数的含义如下:·Display:显示水平.取值为off时不显示输出;取值为iter时显示每次迭代的信息;取值为final时,显示最终结果,默认值为fi
10、nal.·MaxFunEvals:允许进行函数评价的最大次数,取值为正整数.·MaxIter:允许进行迭代的最大次数,取值为正整数控制参数options可以由optimset函数创建或修改:·options=optimset(optimfun)创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.·options=optimset(param1,value1,param2,value2)创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.·options=optim
11、set(oldops,param1,value1,param2,value2)创建一个名称为oldops的参数的拷贝,用指定的参数值修改ildops中的相应参数.4.3 用matlab工具箱求解无约束优化问题4.3.1 一元函数的无约束优化问题解一元函数的无约束优化问题:minfx x1xx2使用的函数是fminbnd,其常用格式:·x=fminbnd(fname,x1,x2)·x=fminbnd(fname,x1,x2,options)·x,fval=fminbnd(fname,x1,x2,options)·x,fval,exitflag=fminbn
12、d(fname,x1,x2,options)·x,fval,exitflag,output=fminbnd(fname,x1,x2,options)Fminbnd算法基于黄金分割法和二次插值法,要求目标函数必须是连续函数,并可能给出局部最优解.例如:求函数f=2e-xsinx在0<x<8区间内的最大值和最小值.function fx=fun(x)fx=2*exp(-x).*sin(x);xmin,ymin=fminbnd(fun,0,8)xmin = 3.9270ymin = -0.0279function fx=fun(x)fx=-2*exp(-x).*sin(x);x
13、,fval=fminbnd(fun,0,8);xmax=x;ymax=abs(fval);xmaxxmax = 0.7854ymaxymax =0.64484.3.2 多元函数的无约束优化问题多元函数无约束最小化问题的标准型为:minFX其中X为n维变元向量.可以使用fminunc函数或fminsearch函数.调用格式为:·x=fminunc(fun,x0)/x=fminsearch(fun,x0)·x=fminunc(fun,x0,options)/x=fminsearch(fun,x0,options)·x,fval=fminunc(fun,x0,optio
14、ns)/x,fval=fminsearch(fun,x0,options)·x,fval,exitflag=fminunc(fun,x0,options)/x,fval,exitflag=fminsearch(fun,x0,options)·x,fval,exitflag,output=fminunc(fun,x0,options)/x,fval,exitflag,output=fminsearch(fun,x0,options)注意:fminsearch以单纯的形法寻最优值,fminunc的算法受options参数控制:·fminunc为无约束优化提供了大型优化
15、算法和中型优化算法,由options的LargeScale控制:LargeScale=on(默认),使用大型算法LargeScale=off,使用中型算法·fminunc为中型优化算法的搜索方向提供了4种算法,由options的HessUpdate控制:HessUpdate=bfgs(默认),拟牛顿法的BFGS公式HessUpdate=dfp,拟牛顿法的DFP公式HessUpdate=steepdesc,最速下降法·fminunc为中型优化算法的步长一维搜索提供了2种算法,由options的LineSearchType控制:LineSearchType=quadcubic(
16、缺省值),混合的二次和三次多项式插值LineSearchType=cubicpoly,三次多项式插值例如:求minfx=4x12+2x22+4x1x2+2x2+1ex1编写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);编写m文件:x0=-1,1;x=fminunc('fun1',x0);y=fun1(x);执行结果:xx = 0.5000 -1.0000yy = 3.6609e-015例如:Rosenock函数fx1,x2=100x2-x122+1-x12,用不同算法算出其数值最优
17、解,初值选为x0=-1.2,2.为直观表示Rosenbrock函数的图像,制作如下指令m文件输出Rosenbrock函数的图像.x,y=meshgrid(-2:0.1:2,-1:0.1:3);z=100*(y-x.2).2+(1-x).2;surf(x,y,z)制作Rosenbrock函数的等高线图,编写如下M文件contour(x,y,z,20)hold onplot(-1.2,2,'o');text(-1.2,2,'start point');plot(1,1,'o');text(1,1,'solution')(1)使用fmi
18、nsearch函数编写m文件如下:f='100*(x(2)-x(1)2)2+(1-x(1)2'x,fval,exitflag,output=fminsearch(f,-1.2 2)执行结果:fun2f =100*(x(2)-x(1)2)2+(1-x(1)2x = 1.0000 1.0000fval = 1.9151e-010exitflag = 1output = iterations: 108 funcCount: 202 algorithm: 'Nelder-Mead simplex direct search' message: 1x196 char(2)
19、使用fminunc函数用3种搜索方向(BFGS,DFP和最速下降法)及两种步长搜索(混合二、三次插值和三次插值)先建立函数文件:function f=fun2(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;编写主函数文件:%fminunc函数缺省选项oldoptions=optimset('fminunc');%采用中型优化算法options=optimset(oldoptions,'LargeScale','off');%DFP法、混合二、三次插值options11=optimset(options,'HessUpdat
20、e','dfp');x11,fval11,exitflag11,output11=fminunc('fun2',-1.2 2,options11);%DFP·法、三次插值options12=optimset(options,'HessUpdate','dfp','lineSearchType','cubicpoly');x12,fval12,exitflag12,output12=fminunc('fun2',-1.2 2,options12);%BFGS法、混合二
21、、三次插值options13=optimset(options,'HessUpdate','bfgs');x13,fval13,exitflag13,output13=fminunc('fun2',-1.2 2,options13);%BFGS法、三次插值options14=optimset(options,'HessUpdate','bfgs','LineSearchType','cubicpoly');x14,fval14,exitflag14,output14=fminunc(
22、'fun2',-1.2 2,options14);%最速下降法、混合二、三次插值options15=optimset(options,'HessUpdate','steepdesc');x15,fval15,exitflag15,output15=fminunc('fun2',-1.2 2,options15);%最速下降法、混合二、三次插值迭代次数8000options16=optimset(options,'HessUpdate','steepdesc','MaxIter',80
23、00,'MaxFunEvals',8000);x16,fval16,exitflag16,output16=fminunc('fun2',-1.2 2,options16);%最速下降法、混合二、三次插值迭代次数9000options17=optimset(options,'HessUpdate','steepdesc','MaxIter',9000,'MaxFunEvals',9000);x17,fval17,exitflag17,output17=fminunc('fun2',-
24、1.2 2,options17)调用结果:x11 = -0.7476 0.5334fval11 = 3.1189exitflag11 = 0output11 = iterations: 60 funcCount: 201 stepsize: 11.4698 firstorderopt: 11.1142 algorithm: 'medium-scale: Quasi-Newton line search' message: 1x143 charx12 = -0.7476 0.5334fval12 = 3.1189exitflag12 = 0output12 = iteration
25、s: 60 funcCount: 201 stepsize: 11.4698 firstorderopt: 11.1142 algorithm: 'medium-scale: Quasi-Newton line search' message: 1x143 charx13 = 1.0000 1.0000fval13 = 2.0352e-011exitflag13 = 1output13 = iterations: 39 funcCount: 144 stepsize: 1 firstorderopt: 4.6220e-007 algorithm: 'medium-sca
26、le: Quasi-Newton line search' message: 1x440 charx14 = 1.0000 1.0000fval14 = 2.0352e-011exitflag14 = 1output14 = iterations: 39 funcCount: 144 stepsize: 1 firstorderopt: 4.6220e-007 algorithm: 'medium-scale: Quasi-Newton line search' message: 1x440 charx15 = 1.1169 1.2482fval15 = 0.0137e
27、xitflag15 = 0output15 = iterations: 17 funcCount: 201 stepsize: 0.0018 firstorderopt: 0.1287 algorithm: 'medium-scale: Quasi-Newton line search' message: 1x143 charx16 = 1.0796 1.1660fval16 = 0.0064exitflag16 = 0output16 = iterations: 667 funcCount: 8001 stepsize: 0.0018 firstorderopt: 0.090
28、0 algorithm: 'medium-scale: Quasi-Newton line search' message: 1x144 charx17 = 1.0757 1.1572fval17 = 0.0057exitflag17 = 0output17 = iterations: 750 funcCount: 9000 stepsize: 0.0017 firstorderopt: 0.0826 algorithm: 'medium-scale: Quasi-Newton line search' message: 1x144 char由上述结果可以得到:
29、Rosenbrock 函数不同算法的计算结果搜索方向步长搜索最优解点最优值迭代次数BFGS混合二、三次插值(1.0000,1.0000)2.0352e-011144三次插值(1.0000,1.0000)2.0352e-011144DFP混合二、三次插值(-0.7446,0.5334)3.1189201三次插值(-0.7476,0.5334)3.1189201最速下降法混合二、三次插值(1.1169,1.2482)0.0137201(1.0796,1.1660)0.00648001(1.0757,1.1572)0.005790005. 详解matlab工具箱解非线性规划5.1 二次规划二次规划的
30、标准型为:minZ=12xTHx+cTxs.t. AxbAeqX=beqvlbXvubmatlab中提供了quadprog函数求解二次规划问题.其调用格式为:·x=quadprog(H,C,A,b)·x=quadprog(H,C,A,b,Aeq,beq)·x=quadprog(H,C,A,b,Aeq,beq,vlb,vub)·x=quadprog(H,C,A,b,Aeq,beq,vlb,vub,X0)·x= quadprog(H,C,A,b,Aeq,beq,vlb,vub,X0,options)·x,fval= quadprog(H,
31、C,A,b,Aeq,beq,vlb,vub,X0,options)·x,fval,exitflag= quadprog(H,C,A,b,Aeq,beq,vlb,vub,X0,options)·x,fval,exitflag,output= quadprog(H,C,A,b,Aeq,beq,vlb,vub,X0,options)例如:求minx1,x2=-2x1-6x2+x12-2x1x2+2x22H=1,-1;-1,2;c=-2;-6;A=1,1;-1,2;b=2;2;vlb=0;0;x,z=quadprog(H,c,A,b,vlb,)Optimization termin
32、ated.x = 0.6667 1.3333z = -8.22225.2 非线性规划的解法非线性规划的标准型为:minF(X)s.t. AXbAeqX=beqGX0CeqX=0vlbXvubX为n维变元向量,G(X)和Ceq(X)都是非线性函数组成的向量,其他变量的含义与线性规划和二次规划相同.用matlab解决问题的步骤为:-1- 建立M文件fun.m定义目标函数F(X) Function f=fun(X) F=F(X)-2- 若约束条件中有非线性约束:G(X)0或CeqX=0,需要建立M文件nonlcon.m定义函数G(X)和CeqX. Function G,Ceq=nonlcon(X)
33、G= ; Ceq= ;-3- 建立主程序,非线性规划求解的函数是fmincon,命令的基本格式如下:X=fmincon(fun,X0,A,b,Aeq,beq,vlb,vub,nonlcon,options)红色的部分如果没有则使用空矩阵替代.Fmincon函数提供了大型优化算法,默认值在fun函数中提供了梯度(options参数的GradObj设置on),并且只有上下界存在或只有等式约束,fmincon将选择大型算法,既有等式约束也有梯度约束时使用中型算法.Fmincon可能会给出局部最优解,其与X0的值有关系.例如:求minf=-x1-2x2+12x12+12x22s.t. 2x1+3x26x1+4x25x1,x20先建立函数文件:function f=fun4(x)f=-x(1)-2*x(2)+(1/2)*x(1)2+(1/2)*x(2)2;x0=1;1;A=2,3;1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国复方配方颗粒市场销售模式及未来运行态势展望报告
- 2025至2030中国复合人工智能市场研发创新与投资前景深度探讨报告
- 2025至2030中国城市供热产业运行现状与应用领域趋势研究报告
- 2025至2030中国咀嚼咖啡市场行情监测与投资效益盈利性报告
- 工业互联网平台云计算资源动态分配策略在智慧工厂中的应用报告
- 2025年纺织服装行业智能化生产与产业生态构建案例分析研究分析报告
- 医疗科研工作者的网络品牌建设
- 商业会议中的隐私保护技巧
- 调整思路的2023年高考作文试题及答案
- 2025年工业互联网平台联邦学习隐私保护在城市公共安全应急通信中的应用前景分析报告
- 华中师范大学第一附中2025届高考仿真模拟数学试卷含解析
- 急诊科运用PDCA循环降低急诊危重患者院内转运风险品管圈QCC专案结题
- 新时代青年的使命与担当2
- JJF 1375-2024机动车发动机转速测量仪校准规范
- 现金日记账模板(出纳版)
- 临床常见操作-灌肠
- 探寻中国茶:一片树叶的传奇之旅学习通超星期末考试答案章节答案2024年
- 冷却塔清洗合同模板
- 高层建筑火灾扑救危险识别与应对
- 2024年管道燃气客服员(初级)技能鉴定考试复习题库(含答案)
- 2023-2024学年广东省惠州市惠城区八年级(下)期末数学试卷(含解析)
评论
0/150
提交评论