Matlab优化工具箱简介.ppt
《Matlab优化工具箱简介.ppt》由会员分享,可在线阅读,更多相关《Matlab优化工具箱简介.ppt(61页珍藏版)》请在三一办公上搜索。
1、第五讲 Matlab优化工具箱简介-optimization toobox,1.线性优化2.非线性优化3.极小化极大(Minmax)问题4.曲线拟合与插值,线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB7.0解决的线性规划问题的标准形式为 min sub.to:其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵.其它形式的线性规划问题都可经过适当变换化为此标准形式.在MATLAB5.x以上版中,线性规划问题Linear Programming已用函数linprog取代了MATLAB5.x版中的lp函数.当然,由于版本的向下兼容性,一般说来,低版本中的函数在7.0版中仍
2、可使用.,5.1 线性优化,函数 linprog格式 x=linprog(f,A,b)%求min f*x sub.to 线性规划的最优解.x=linprog(f,A,b,Aeq,beq)%等式约束,若没有不等式约束,则A=,b=.x=linprog(f,A,b,Aeq,beq,lb,ub).%指定x的范围,若没有等式约束,则Aeq=,beq=.x=linprog(f,A,b,Aeq,beq,lb,ub,x0)%设置初值x0.x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数.,x,fval=linprog()%返回目标函数最优值,
3、即fval=f*x.x,lambda,exitflag=linprog()%lambda为解x的Lagrange乘子.x,lambda,fval,exitflag=linprog()%exitflag为终止迭代的错误条件.x,fval,lambda,exitflag,output=linprog()%output为关于优化的一些信息.说明:若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大次数,exitflag0表示函数不收敛于解x;若lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,
4、lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数.,例5-1 求下面的优化问题,min,sub.to.,解:f=-5;-4;-6;%写成行向量亦可!A=1-1 1;3 2 4;3 2 0;b=20;42;30;lb=zeros(3,1);x,fval,exitflag,output,lambda=linprog(f,A,b,lb)结果为:x=%最优解 0.0000 15.0000 3.0000fval
5、=%最优值-78.0000exitflag=%收敛 1,output=iterations:6%迭代次数 cgiterations:0 algorithm:lipsol%所使用规则lambda=ineqlin:3x1 double eqlin:0 x1 double upper:3x1 double lower:3x1 double lambda.ineqlinans=0.0000 1.5000 0.5000 lambda.lower,ans=1.0000 0.0000 0.0000表明:不等约束条件2和3以及第1个下界是有效的.,请写出下面线性规划的Matlab程序.,c=-0.4-0.28
6、-0.32-0.72-0.64-0.6;A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08;b=850;700;100;900;Aeq=;beq=;vlb=0;0;0;0;0;0;vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub),MATLAB求解优化问题的主要函数,优化函数的输入变量,优化函数的输出变量,5.2非线性优化,5.2.1 有约束的一元函数的最小值单变量函数求最小值的标准形式为 sub.to 函数 fminbnd格式 x=fmin
7、bnd(fun,x1,x2)%返回自变量x在区间上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x=fminbnd(fun,x1,x2,options)x,fval=fminbnd()x,fval,exitflag=fminbnd()x,fval,exitflag,output=fminbnd(),例5-2 计算下面函数在区间(0,1)内的最小值.,解:x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x=0.5223fval=0.3974exitflag=1,output=it
8、erations:9 funcCount:9 algorithm:golden section search,parabolic interpolation,例5-3 在0,5上求下面函数的最小值解:先自定义函数:在MATLAB编辑器中建立M文件为:function f=myfun(x)f=(x-3).2-1;保存为myfun.m,然后在命令窗口键入命令:x=fminbnd(myfun,0,5)则结果显示为:x=3,5.2.2 无约束多元函数最小值多元函数最小值的标准形式为其中:x为向量.命令 利用函数fminsearch求无约束多元函数最小值.函数 fminsearch格式 x=fminse
9、arch(fun,x0)%x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x=fminsearch(fun,x0,options)%options查optimset.x,fval=fminsearch()%最优点的函数值.x,fval,exitflag=fminsearch()%exitflag与单变量情形一致.x,fval,exitflag,output=fminsearch()%output与单变量情形一致.,例5-4 求 的最小值点.解:X=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2,0,0)结果为
10、X=1.0016 0.8335或在MATLAB编辑器中建立函数文件.function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存为myfun.m,在命令窗口键入 X=fminsearch(myfun,0,0)或 X=fminsearch(myfun,0,0)结果为:X=1.0016 0.8335,5.2.3 有约束的多元函数最小值非线性有约束的多元函数的标准形式为:sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可
11、以是非线性函数.在MATLAB5.x中,它的求解由函数constr实现.,函数 fmincon格式 x=fmincon(fun,x0,A,b)x=fmincon(fun,x0,A,b,Aeq,beq)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval=fmincon()x,fval,exitflag=fmincon()x,fval,exitflag,output=fmincon
12、()x,fval,exitflag,output,lambda=fmincon()x,fval,exitflag,output,lambda,grad=fmincon()x,fval,exitflag,output,lambda,grad,hessian=fmincon(),参数说明:fun为目标函数,它可用前面的方法定义;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的估计C和Ceq,通过指定函数柄来使用,如:x=fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m:function
13、C,Ceq=mycon(x)C=%计算x处的非线性不等约束的函数值.Ceq=%计算x处的非线性等式约束的函数值.lambda是Lagrange乘子,它体现哪一个约束有效.output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessian值.,例5-5 求下面问题在初始点(0,1)处的最优解,min,sub.to,解:约束条件的标准形式为:sub.to 先在MATLAB编辑器中建立非线性约束函数文件:function c,ceq=mycon(x)c=(x(1)-1)2-x(2);ceq=;%无等式约束.,然后,在命令窗口键入如下命令或建立M文件:fun=
14、x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2);%目标函数.x0=0 1;A=-2 3;%线性不等式约束.b=6;Aeq=;%无线性等式约束.beq=;lb=;%x没有下、上界.ub=;x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon),则结果为x=3 4fval=-13exitflag=1%解收敛.output=iterations:2 funcCount:9 stepsize:1 algorithm:medium-scale:SQP,Quasi-Newt
15、on,line-search firstorderopt:cgiterations:lambda=lower:2x1 double%x下界有效情况,通过lambda.lower可查看.upper:2x1 double%x上界有效情况,为0表示约束无效.,eqlin:0 x1 double%线性等式约束有效情况,不为0表示约束有效.eqnonlin:0 x1 double%非线性等式约束有效情况.ineqlin:2.5081e-008%线性不等式约束有效情况.neqnonlin:6.1938e-008%非线性不等式约束有效情况.grad=%目标函数在最小值点的梯度.1.0e-006*-0.177
16、6 hessian=%目标函数在最小值点的Hessian值.1.0000-0.0000-0.0000 1.0000,5.2.4 二次规划问题二次规划问题(quadratic programming)的标准形式为:sub.to 其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量其它形式的二次规划问题都可转化为标准形式.MATLAB5.x版中的qp函数已被6.0版中的函数quadprog取代。,函数 quadprog格式 x=quadprog(H,f,A,b)%其中H,f,A,b为标准形中的参数,x为目标函数的最小值.x=quadprog(H,f,A,b,Aeq,beq)%Aeq,b
17、eq满足等约束条件.x=quadprog(H,f,A,b,Aeq,beq,lb,ub)%lb,ub分别为解x的下界与上界.x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)%x0为设置的初值x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数.x,fval=quadprog()%fval为目标函数最优值.x,fval,exitflag=quadprog()%exitflag与线性规划中参数意义相同.x,fval,exitflag,output=quadprog()%output与线性规划中参数意义相同.x
18、,fval,exitflag,output,lambda=quadprog()%lambda与线性规划中参数意义相同.,例5-6 求二次规划的最优解 max f(x1,x2)=x1x2+3 sub.to x1+x2-2=0解:化成标准形式:sub.to x1+x2=2,在Matlab中实现如下:H=0,-1;-1,0;f=0;0;Aeq=1 1;b=2;x,fval,exitflag,output,lambda=quadprog(H,f,Aeq,b)结果为:x=1.0000 1.0000,fval=-1.0000exitflag=4output=iterations:1 algorithm:l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 优化 工具箱 简介
链接地址:https://www.31ppt.com/p-5438939.html