非线性规划问题_第1页
非线性规划问题_第2页
非线性规划问题_第3页
非线性规划问题_第4页
非线性规划问题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.3 非线性规划问题单变量函数求最小值的标准形式为minxf(x) sub.to x1<x<x2在MATLAB5.x中使用fmin函数求其最小值。函数 fminbnd格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间x1<x<x2上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项x,fval = fminbnd() % fval为目标函数的最小值x,fval,exitflag = fminbnd() %xit

2、flag为终止迭代的条件x,fval,exitflag,output = fminbnd() % output为优化信息说明 若参数exitflag>0,表示函数收敛于x,若exitflag=0,表示超过函数估计值或迭代的最大数字,exitflag<0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。 例5-2 计算下面函数在区间(0,1)内的最小值。x3+cosx+xlogxf(x)= ex解:>> x,fval,exitflag,output=

3、fminbnd('(x3+cos(x)+x*log(x)/exp(x)',0,1)x =0.5223fval =0.3974exitflag =output =iterations: 9funcCount: 9algorithm: 'golden section search, parabolic interpolation'例5-3 在0,5上求下面函数的最小值f(x)=(x3)31解:先自定义函数:在MATLAB编辑器中建立M文件为:function f = myfun(x)f = (x-3).2 - 1;保存为myfun.m,然后在命令窗口键入命令:>

4、;> x=fminbnd(myfun,0,5)则结果显示为:x =3多元函数最小值的标准形式为minxf(x)其中:x为向量,如x=x1,x2,L,xn在MATLAB5.x中使用fmins求其最小值。命令 利用函数fminsearch求无约束多元函数最小值函数 fminsearch格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x = fminsearch(fun,x0,options) % options查optimsetx,fval = fminsearch() %最优点的函数值x,fval,exit

5、flag = fminsearch() % exitflag与单变量情形一致x,fval,exitflag,output = fminsearch() %output与单变量情形一致注意:fminsearch采用了Nelder-Mead型简单搜寻法。32例5-4 求y=2x1+4x1x3210x1x2+x2的最小值点解:>>X=fminsearch('2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2', 0,0)结果为X =1.0016 0.8335或在MATLAB编辑器中建立函数文件function f=myfun(x)f=2*x(1

6、)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命令 利用函数fminunc求多变量无约束函数最小值函数 fminunc格式 x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点x = fminunc(fun,x0,options) % options为指定优化参数x,fval = fminunc() %fval最优点

7、x处的函数值x,fval,exitflag = fminunc() % exitflag为终止迭代的条件,与上同。x,fval,exitflag,output = fminunc() %output为输出优化信息x,fval,exitflag,output,grad = fminunc() % grad为函数在解x处的梯度值x,fval,exitflag,output,grad,hessian = fminunc() %目标函数在解x处的海赛(Hessian)值注意:当函数的阶数大于2时,使用fminunc比fminsearch更有效,但当所选函数高度不连续时,使用fminsearch效果较好

8、。2例5-5 求f(x)=3x1+2x1x2+x22的最小值。>> fun='3*x(1)2+2*x(1)*x(2)+x(2)2'>> x0=1 1;>> x,fval,exitflag,output,grad,hessian=fminunc(fun,x0)结果为:x =1.0e-008 *-0.7591 0.2665fval =1.3953e-016exitflag =1output =iterations: 3funcCount: 16stepsize: 1.2353firstorderopt: 1.6772e-007algorithm:

9、 'medium-scale: Quasi-Newton line search'grad =1.0e-006 *-0.16770.0114hessian =6.0000 2.00002.0000 2.0000或用下面方法:>> fun=inline('3*x(1)2+2*x(1)*x(2)+x(2)2')fun =Inline function:fun(x) = 3*x(1)2+2*x(1)*x(2)+x(2)2>> x0=1 1;>> x=fminunc(fun,x0)x =1.0e-008 *-0.7591 0.2665

10、非线性有约束的多元函数的标准形式为:minf(x) xsub.to C(x)0Ceq(x)=0AxbAeqx=beqlbxub其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。在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,

11、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()x,fval,exitflag,output,lambda = fmincon()x,fval,exitflag,output,lambda,grad = fmincon()x,fval,exitflag,output,lambda,grad,hessian = fmincon()参数说

12、明:fun为目标函数,它可用前面的方法定义;x0为初始值;A、b满足线性不等式约束Axb,若没有不等式约束,则取A= ,b= ;Aeq、beq满足等式约束Aeqx=beq,若没有,则取Aeq= ,beq= ;lb、ub满足lbxub,若没有界,可设lb= ,ub= ;nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)0和等式约束Ceq(x)=0分别在x处的估计C和Ceq,通过指定函数柄来使用,如:>>x = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m:function C,Ceq

13、= mycon(x)C = % 计算x处的非线性不等约束C(x)0的函数值。Ceq = % 计算x处的非线性等式约束Ceq(x)=0的函数值。 lambda是Lagrange乘子,它体现哪一个约束有效。output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessiab值。例5-6 求下面问题在初始点(0,1)处的最优解2min x1+x22x1x22x15x2sub.to (x11)2+x202x13x2+60解:约束条件的标准形式为sub.to (x11)2x202x1+3x26先在MATLAB编辑器中建立非线性约束函数文件:function c,

14、ceq=mycon (x)c=(x(1)-1)2-x(2);ceq= ; %无等式约束然后,在命令窗口键入如下命令或建立M文件:>>fun='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

15、=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon)则结果为x =3 4fval =-13exitflag = %解收敛1output =iterations: 2funcCount: 9stepsize: 1algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'firstorderopt: cgiterations: lambda =lower: 2x1 double %x下界有效情况,通过lambda.lower可查看。 upper: 2x1 double %x上界有效情况,为0表示约束

16、无效。eqlin: 0x1 double %线性等式约束有效情况,不为0表示约束有效。 eqnonlin: 0x1 double %非线性等式约束有效情况。ineqlin: 2.5081e-008 %线性不等式约束有效情况。ineqnonlin: 6.1938e-008 %非线性不等式约束有效情况。grad = %目标函数在最小值点的梯度1.0e-006 *-0.1776hessian = %目标函数在最小值点的Hessian值1.0000 -0.0000-0.0000 1.0000例5-7 求下面问题在初始点x=(10, 10, 10)处的最优解。Min f(x)=x1x2x3Sub.to

17、0x1+2x2+2x372解:约束条件的标准形式为sub.to x12x22x30 x1+2x2+2x372>> fun= '-x(1)*x(2)*x(3)'>> x0=10,10,10;>> A=-1 -2 -2;1 2 2;>> b=0;72;>> x,fval=fmincon(fun,x0,A,b)结果为:x =24.0000 12.0000 12.0000fval =-3456二次规划问题(quadratic programming)的标准形式为:minxHx+fx sub.to AxbAeqx=beqlbxu

18、b其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量其它形式的二次规划问题都可转化为标准形式。函数 quadprog格式 x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最小值。x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq满足等约束条件Aeqx=beq。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,Ae

19、q,beq,lb,ub,x0,options) % options为指定的优化参数x,fval = quadprog() %fval为目标函数最优值x,fval,exitflag = quadprog() % exitflag与线性规划中参数意义相同x,fval,exitflag,output = quadprog() % output与线性规划中参数意义相同x,fval,exitflag,output,lambda = quadprog() % lambda与线性规划中参数意义相同例5-8 求解下面二次规划问题minsub.to2f(x)=x1+x22x1x22x16x2 5x1+x22x1

20、+2x222x1+x230x1,0x2 解:f(x)=xHx+fx 112x1x,则H=f=6x 122在MATLAB中实现如下:>>H = 1 -1; -1 2 ;>>f = -2; -6;>>A = 1 1; -1 2; 2 1;>>b = 2; 2; 3;>>lb = zeros(2,1);>>x,fval,exitflag,output,lambda = quadprog(H,f,A,b, , ,lb) 结果为:x = %最优解0.66671.3333fval = %最优值-8.2222exitflag = %收敛1output =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论