收藏 分销(赏)

《MALAB优化工具箱》PPT课件.ppt

上传人:胜**** 文档编号:796305 上传时间:2024-03-20 格式:PPT 页数:33 大小:2.48MB
下载 相关 举报
《MALAB优化工具箱》PPT课件.ppt_第1页
第1页 / 共33页
《MALAB优化工具箱》PPT课件.ppt_第2页
第2页 / 共33页
《MALAB优化工具箱》PPT课件.ppt_第3页
第3页 / 共33页
《MALAB优化工具箱》PPT课件.ppt_第4页
第4页 / 共33页
《MALAB优化工具箱》PPT课件.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、线性规划的线性规划的MATLABMATLAB命令命令x=lp(c,A,b)x=lp(c,A,b)x=lp(c,A,b,vx=lp(c,A,b,v1 1)x=lp(c,A,b,vx=lp(c,A,b,v1 1,v,v2 2)x=lp(c,A,b,vx=lp(c,A,b,v1 1,v,v2 2,x0),x0)x=lp(c,A,b,vx=lp(c,A,b,v1 1,v,v2 2,x0,ne),x0,ne)x=lp(c,A,b,vx=lp(c,A,b,v1 1,v,v2 2,x0,ne,dis),x0,ne,dis)x,lag=lp(c,A,b,x,lag=lp(c,A,b,)x,lag,how=lp

2、(c,A,bx,lag,how=lp(c,A,b)min z=cxmin z=cxs.t.Axs.t.Axb bv v1 1,v,v2 2 为给出为给出x x的下界和上界,的下界和上界,v v1 1,v,v2 2的维数的维数k k可以小于可以小于x x的维数,这时的维数,这时v v1 1,v,v2 2 表示表示x x的前的前k k个分量的下界和上界;个分量的下界和上界;x0 x0 表示初始解;表示初始解;ne ne 等式约束的个数,将等式约束置等式约束的个数,将等式约束置于不等式约束前面。于不等式约束前面。当某些参数省缺时,需用当某些参数省缺时,需用 占位占位dis dis 控制警告信息,控制

3、警告信息,dis=-1,dis=-1,不显示不显示lag lag 拉格朗日乘子拉格朗日乘子,how ,how 给出错误给出错误信息信息命令命令说明说明例例1 1 求解求解 max z=3xmax z=3x1 1+x+x2 2s.t.s.t.x x1 1+x+x2 2 2 2 x x1 12x2x2 2 2 2 3x 3x1 1+2x+2x2 2 1414 x x1 1,x,x2 200输入方法输入方法c=-3,1;c=-3,1;A=-1,1;1,-A=-1,1;1,-2;3,2;2;3,2;b=2,2,14;b=2,2,14;v1=0,0;v1=0,0;x=lp(c,A,b,v1)x=lp(c

4、,A,b,v1)z=-c*x z=-c*x 例题例题输出结果输出结果x=x=4 4 1 1z=z=13 13 例题例题输入方法输入方法输出结果输出结果例例2 2 求解求解 min z=xmin z=x1 1+x+x2 2s.t.xs.t.x1 1x x2 2 1 1 x x1 1 0 0c=1,1;A=1,-1;b=1;c=1,1;A=1,-1;b=1;v1=0;x=lp(c,A,b,v1)v1=0;x=lp(c,A,b,v1)z=-c*x z=-c*x x=0 -1x=0 -1z=1z=1例例3 求解求解 例题例题输入方法输入方法c=-6,-4;A=2,3;4,2;c=-6,-4;A=2,3

5、;4,2;b=100,120;vlb=0,0;vub=b=100,120;vlb=0,0;vub=x,lam=lp(c,A,b,vlb,vub)x,lam=lp(c,A,b,vlb,vub)Z=c*xZ=c*x输出结果输出结果x=x=20.000020.0000 20.000020.0000lam=lam=0.5000 0.5000 1.2500 1.2500 0 0 0 0Z=Z=-200 -200 例题例题输入方法输入方法c=-5,4,2;A=6,-c=-5,4,2;A=6,-1,1;1,2,4;1,1;1,2,4;b=8,10;vlb=-b=8,10;vlb=-1,0,0;vub=3,2

6、;1,0,0;vub=3,2;x,lam=lp(c,A,b,vlb,vub)x,lam=lp(c,A,b,vlb,vub)Z=c*xZ=c*x输出结果输出结果x=x=1.33331.3333 0 0 0 0lam=lam=0.8333 0.8333 0 0 0 0 3.1667 3.1667 2.8333 2.8333 0 0 0 0Z=Z=-6.6667 -6.6667例例4 求解求解二次规划的二次规划的MATLABMATLAB命令命令x=qp(H,c,A,b)x=qp(H,c,A,b)x=qp(H,c,A,b,vx=qp(H,c,A,b,v1 1)x=qp(H,c,A,b,vx=qp(H,

7、c,A,b,v1 1,v,v2 2)x=qp(H,c,A,b,vx=qp(H,c,A,b,v1 1,v,v2 2,x0),x0)x=qp(H,c,A,b,vx=qp(H,c,A,b,v1 1,v,v2 2,x0,ne),x0,ne)x=qp(H,c,A,b,vx=qp(H,c,A,b,v1 1,v,v2 2,x0,ne,dis),x0,ne,dis)x,lam=lp(H,c,A,b,x,lam=lp(H,c,A,b,)x,lam,how=lp(H,c,A,bx,lam,how=lp(H,c,A,b)min min q(x)=1/2xq(x)=1/2xT THx+cHx+cT Tx x s.t.

8、Axs.t.Axb bv v1 1,v,v2 2 为给出为给出x x的下界和上界,的下界和上界,v v1 1,v,v2 2的维数的维数k k可以小于可以小于x x的维数,这时的维数,这时v v1 1 ,v,v2 2 表示表示x x的前的前k k个分量的下界和上界;个分量的下界和上界;x0 x0 表示初始解;表示初始解;ne ne 等式约束的个数,将等式约束等式约束的个数,将等式约束置于不等式约束前面。置于不等式约束前面。DisDis控制警告控制警告信息信息,dis=-1,dis=-1时不显示警告信息时不显示警告信息当某些参数省缺时,需用当某些参数省缺时,需用 占位占位lag lag 拉格朗日乘

9、子拉格朗日乘子,how ,how 错误信错误信息息命令命令说明说明 例题例题输入方法输入方法H=1,-1;-1,2;c=-2,-6;H=1,-1;-1,2;c=-2,-6;A=1,1;-A=1,1;-1,2;2,1;b=2;2;3;1,2;2,1;b=2;2;3;x,l=qp(H,c,A,b,zeros(2,x,l=qp(H,c,A,b,zeros(2,1)1)输出结果输出结果x=x=0.66670.6667 1.33331.3333l=l=3.11113.1111 0.44440.4444 0 0 0 0 0 0 例题例题输入方法输入方法H=2,0;0,2;c=-4,0;H=2,0;0,2;

10、c=-4,0;A=-1,1;1,-1;b=2;-1;A=-1,1;1,-1;b=2;-1;X=qp(H,c,A,b,zeros(2,1)X=qp(H,c,A,b,zeros(2,1)输出结果输出结果X=X=0.5000 0.5000 1.5000 1.5000问题问题模型模型基本的程序名基本的程序名.m文件文件无约束极小无约束极小(非线性规划)(非线性规划)非线性最小二乘非线性最小二乘约束极小约束极小(非线性规划)(非线性规划)非负线性最小非负线性最小二乘二乘约束线性最小约束线性最小二乘二乘功能功能省缺值及含义省缺值及含义说明(说明(opt=optins)0 0,无中间结果,无中间结果Opt(

11、1)=1,Opt(1)=1,有中间结果输出有中间结果输出Opt(1)=-1,Opt(1)=-1,给出警告信息给出警告信息输出形式输出形式解解x(k)x(k)的精的精度度用用opt(2)opt(2)设置设置x x(k)(k)的精的精度度函数函数f(k)f(k)的精的精度度用用opt(3)opt(3)设置设置f f(k)(k)的精的精度度函数值输出函数值输出opt(8)opt(8)输出结束时的函数输出结束时的函数值值主要算法主要算法0,BFGS0,BFGS法法;1,DFP;1,DFP法法 用用opt(6)opt(6)选择选择函数计算次数函数计算次数opt(10)opt(10)输出函数计算次数输出函

12、数计算次数等式约束等式约束0 0,等式约束个数为,等式约束个数为0 0opt(13)opt(13)输出等式约束个数输出等式约束个数THANK YOUSUCCESS2024/3/20 周三17可编辑例例1 1 求求 的近似值的近似值使用命令使用命令x=fmin(x=fmin(f1f1,x1,x2),x1,x2),求函数,求函数f1f1在区间在区间x1xx2x1xx2上上最小值最小值fmin(cos,3,4)fmin(cos,3,4)执行程序执行程序输出结果输出结果ans=3.14159480185141ans=3.14159480185141例例2 2 计算函数式计算函数式(x(x3 3+cos

13、(x)+xlog(x)/e+cos(x)+xlog(x)/ex x 在在(0,1)(0,1)范围内的最范围内的最小值小值执行程序执行程序fmin(x3+cos(x)+x*log(x)/exp(x),0,fmin(x3+cos(x)+x*log(x)/exp(x),0,1)1)输出结果输出结果ans=0.52228834066617ans=0.52228834066617观察中间结果;将解和函数值的精度提观察中间结果;将解和函数值的精度提高到高到108,给出迭代次数及结果的函数值。,给出迭代次数及结果的函数值。编写程序编写程序function y=f1(x)function y=f1(x)a=1

14、0;b=1;a=10;b=1;y=x(1)2/a+x(2)2/by=x(1)2/a+x(2)2/b;使用命令使用命令x=fminu(x=fminu(f1f1,x0),x0),x=fminu(x=fminu(f1f1,x0,opt),x0,opt)执行程序执行程序x0=1,1;%x0=1,1;%初始值初始值x=fminu(f1,x0),x=fminu(f1,x0),%BFGS(%BFGS(拟牛顿法拟牛顿法)输出结果输出结果无中间结果无中间结果x=x=1.0e-007*1.0e-007*0.0431 -0.2708 0.0431 -0.2708执行程序执行程序x0=1,1;%x0=1,1;%初始初

15、始值值x=fmins(f1,x0)%x=fmins(f1,x0)%简单搜索法简单搜索法.输出结果输出结果x=x=1.0e-004*1.0e-004*0.2618 -0.2618 -0.07970.0797f-COUNT FUNCTION STEP-SIZE GRAD/SDf-COUNT FUNCTION STEP-SIZE GRAD/SD 4 1.1 4 1.1 0.544554 -4.04 0.544554 -4.04 9 0.0809191 0.504496 9 0.0809191 0.504496 -2.67e-008 -2.67e-008 15 7.35327e-016 4.95545

16、 15 7.35327e-016 4.95545 -2.27e-009-2.27e-009x=x=1.0e-007*1.0e-007*0.0431 0.0431 -0.2708-0.2708x0=1,1;%x0=1,1;%初始值初始值opt(1)=1;%opt(1)=1;%输出中间结果输出中间结果x=fminu(f1,x0,opt)x=fminu(f1,x0,opt)提高精度提高精度10108 8,不输出中间结果,只给出迭代次数和结果各函数值,不输出中间结果,只给出迭代次数和结果各函数值执行执行程序程序输出结果输出结果输出中间结果输出中间结果执执行行程程序序输输出出结结果果x0=1,1;x0=

17、1,1;opt(2)=1e-8;opt(3)=1e-8;opt(2)=1e-8;opt(3)=1e-8;x,opt=fminu(f1,x0,opt)x,opt=fminu(f1,x0,opt)Y=opt(8),n=opt(10),Y=opt(8),n=opt(10),x=1.0e-008*x=1.0e-008*0.1845 0.1845 0.0908 0.0908 Y=1.1653e-018Y=1.1653e-018n=23n=23例例4 求函数求函数 的最小值的最小值 编写程序编写程序function y=f3(x)function y=f3(x)y=exp(x(1)*(4*x(1)2+2*

18、x(2)2+4*x(1)*x(2)+2*x(2)+1);y=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);执行程序执行程序x0=-x0=-1,1;options=;x,options=fminu(f3,x0,options);1,1;options=;x,options=fminu(f3,x0,options);x,y=options(8),n=options(10),x,y=options(8),n=options(10),输出结果输出结果x=0.50000349872452 -1.00000872066009x=0.500003498724

19、52 -1.00000872066009y=1.302815164349921e-010y=1.302815164349921e-010n=36n=36优化程序的选择优化程序的选择:options(6)=0:options(6)=0时为时为BFGSBFGS方法方法;options(6)=1;options(6)=1为为DFPDFP法法;options(7)=0;options(7)=0;混合插值混合插值;options(7)=1;options(7)=1为立方插值为立方插值例例5 求函数求函数 的最小值的最小值(分别用分别用BFGS和和DFP方法方法)编写程序编写程序function y=f4

20、(x)function y=f4(x)y=(x(1)+x(2)2+5*(x(3)-2*x(4)2+(x(2)-y=(x(1)+x(2)2+5*(x(3)-2*x(4)2+(x(2)-2*x(3)4+10*(x(1)-x(4)4;2*x(3)4+10*(x(1)-x(4)4;执行程序执行程序BFGSBFGS混合插值混合插值x0=3,-x0=3,-1,0,1;options(6)=0;options(7)=0;x=fminu(f4,x0,option1,0,1;options(6)=0;options(7)=0;x=fminu(f4,x0,options),s),输出结果输出结果x=0.01101

21、475115242 -0.01099180836233 x=0.01101475115242 -0.01099180836233 0.00562807899161 0.00290682431604 0.00562807899161 0.00290682431604执行程序执行程序BFGSBFGS立方插值立方插值x0=3,-x0=3,-1,0,1;options(6)=0;options(7)=1;x=fminu(f4,x0,option1,0,1;options(6)=0;options(7)=1;x=fminu(f4,x0,options),s),x=-0.00379331489930 x=

22、-0.00379331489930 0.003779223732340.00377922373234 -0.00081367476184 -0.00040994333806 -0.00081367476184 -0.00040994333806输出结果输出结果执行程序执行程序DFPDFP混合插值混合插值x0=3,-x0=3,-1,0,1;options(6)=1;options(7)=0;x=fminu(f4,x0,option1,0,1;options(6)=1;options(7)=0;x=fminu(f4,x0,options),s),x=0.01070930955579 -x=0.01

23、070930955579 -0.010709995782370.01070999578237 0.00078904792467 0.00078904792467 0.000479887261530.00047988726153输出结果输出结果执行程序执行程序DFPDFP立方插值立方插值x0=3,-x0=3,-1,0,1;options(6)=1;options(7)=1;x=fminu(f4,x0,option1,0,1;options(6)=1;options(7)=1;x=fminu(f4,x0,options),s),输出结果输出结果x=-0.03078933783743 0.03128

24、589541937x=-0.03078933783743 0.03128589541937 -0.02035363789309 -0.01011235888056 -0.02035363789309 -0.01011235888056leastsq(leastsq(funfun,x0);,x0);或或leastsq(leastsq(funfun,x0);,x0);寻找寻找M M文件中文件中fun(x)fun(x)返回的函数值的平方和的最小值返回的函数值的平方和的最小值,fun,fun返回目标返回目标函数的向量函数的向量.例例2 2 用下面一组数据拟合用下面一组数据拟合c(t)=rec(t)=r

25、ekt kt 中的系数中的系数r,k.r,k.t 0.25 0.5 1 1.5 2 3 4 6 8c 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01使用命令使用命令编写程序编写程序x=leastsq(x=leastsq(ctct,x0)x0)function f=ct(x)function f=ct(x)t=0.25,0.5,1,1.5,2,3,t=0.25,0.5,1,1.5,2,3,4,6,8;4,6,8;c=19.21,18.15,15.36,1c=19.21,18.15,15.36,14.1,12.89,9.32,7.45,5.4.1

26、,12.89,9.32,7.45,5.24,3.01;24,3.01;f=c-f=c-x(1)*exp(x(2)*t);x(1)*exp(x(2)*t);执行程序执行程序x0=10,0.5;x0=10,0.5;x=leastsq(ct,x0 x=leastsq(ct,x0)输出结果输出结果x=20.2413 -x=20.2413 -0.24200.2420带约束非线性规划的逐步二次规划法带约束非线性规划的逐步二次规划法SQPSQP法的法的MATLABMATLAB命令命令命令命令说明说明x=constr(x=constr(funfun,x0),x0)x=constr(x=constr(funfu

27、n,x0,opt),x0,opt)x=x=constr(constr(funfun,x0,opt,v1,v2,x0,opt,v1,v2,gradgrad)x=x=constr(constr(funfun,x0,opt,v1,v2,x0,opt,v1,v2,gradgrad,p1,p2)p1,p2)x,opt=constr(x,opt=constr(funfun,x0,x0,)v1 v1和和v2v2表示表示x x的下界和的下界和上界上界;fun.mfun.m给出目标函数给出目标函数f f 和约束条件和约束条件g g。形式为。形式为f,g=fun(x);f,g=fun(x);grad.mgrad.

28、m给出目标函数给出目标函数f f 和约束条件和约束条件g g 的梯度。的梯度。形式为形式为df,dg=fun(x);df,dg=fun(x);例题例题1 1f(xf(x1 1,x,x2 2)=100(x)=100(x2 2x x1 12 2)2 2+(1+(1x x1 1)2 2x x1 12 2+x+x1 12 21.5,x1.5,x1 1+x+x2 2 0 0编写程序编写程序 function f,g=f2(x)function f,g=f2(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;f=100*(x(2)-x(1)2)2+(1-x(1)2;g(1)=x(1)2+x(2

29、)2-1.5;g(2)=-x(1)-g(1)=x(1)2+x(2)2-1.5;g(2)=-x(1)-x(2);x(2);输入方法输入方法x0=-x0=-1.9,2;opt(1)=1;x=constr(f2,x0,opt1.9,2;opt(1)=1;x=constr(f2,x0,opt),),f=100*(x(2)-x(1)2)2+(1-x(1)2f=100*(x(2)-x(1)2)2+(1-x(1)2给出梯度时给出梯度时输出中间结果时输出中间结果时x0=-1.9,2;opt(1)=1;x=constr(f2,x0,opt,x0=-1.9,2;opt(1)=1;x=constr(f2,x0,op

30、t,grad),grad),f=100*(x(2)-x(1)2)2+(1-x(1)2f=100*(x(2)-x(1)2)2+(1-x(1)2function df,dg=grad(x)function df,dg=grad(x)df=-400*x(1)*(x(2)-x(1)2)-2*(1-x(1),200*(x(2)-x(1)2);df=-400*x(1)*(x(2)-x(1)2)-2*(1-x(1),200*(x(2)-x(1)2);dg=2*x(1),-1;2*x(2),-1;dg=2*x(1),-1;2*x(2),-1;输出输出结果结果梯度梯度最优解最优解最优值最优值迭代次数迭代次数不给

31、出不给出(0.9077,0.8222)0.008669给出给出(0.9072,0.8228)0.008836输出输出结果结果x=0.9072 x=0.9072 0.82270.8227f=0.0086f=0.0086编写程序编写程序 x0=-x0=-1,1;opt=;x,opt=constr(f5,x0,opt)1,1;opt=;x,opt=constr(f5,x0,opt);x,f=opt(8),n=opt(10)x,f=opt(8),n=opt(10)例题例题2 2 求解下列条件极值求解下列条件极值 输出结果输出结果x=-9.5474 1.0474x=-9.5474 1.0474f=0.0

32、236f=0.0236n=29n=29function f,g=f5(x)function f,g=f5(x)f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1)f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);g(1)=1.5+x(1)*x(2)-x(1)-x(2);g(2)=-x(1)*x(2)-10;g(1)=1.5+x(1)*x(2)-x(1)-x(2);g(2)=-x(1)*x(2)-10;例题例题3 3 求解下列条件极值问题求解下列条件极值问题 编写程序编写程序 x0=-x0=-1,1;

33、opt=;vlb=0;0;vub=;1,1;opt=;vlb=0;0;vub=;x,opt=constr(f5,x0,opt,vlb,vx,opt=constr(f5,x0,opt,vlb,vub);ub);x,f=opt(8),n=opt(10)x,f=opt(8),n=opt(10)输出结果输出结果x=0 1.5000 x=0 1.5000f=8.5000f=8.5000n=10n=10用户提供导数时用户提供导数时,则问题会更有效更准确则问题会更有效更准确.例题例题4 4 求解下列极值求解下列极值 编写程序编写程序?x0=-1,1;opt=;?x0=-1,1;opt=;x,opt=cons

34、tr(f5,x0,opt,x,opt=constr(f5,x0,opt,grad1);grad1);x,f=opt(8),n=opt(10)x,f=opt(8),n=opt(10)function df,dg=grad1(x)function df,dg=grad1(x)df=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1)+4*df=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1)+4*exp(x(1)*(2*x(1)+x(2),4*exp(x(1)*(x(1)+x(2)+0.5);exp(x(1)*

35、(2*x(1)+x(2),4*exp(x(1)*(x(1)+x(2)+0.5);dg=x(2)-1,-x(2);x(1)-1,-x(1);dg=x(2)-1,-x(2);x(1)-1,-x(1);x=-9.5474 x=-9.5474 1.04741.0474f=0.0236f=0.0236n=11n=11输出结果输出结果等式约束问题等式约束问题 例例5:5:求下列求下列极值极值编写程序编写程序 function f,g=f6(x)function f,g=f6(x)f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);f=exp(x(1)*(4*

36、x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);g(1)=x(1)+x(2);g(2)=1.5+x(1)*x(2)-x(1)-x(2);g(3)=-g(1)=x(1)+x(2);g(2)=1.5+x(1)*x(2)-x(1)-x(2);g(3)=-x(1)*x(2)-10;x(1)*x(2)-10;执行程序执行程序 x0=-1,1;clear x0=-1,1;clear options;opt(13)=1;options;opt(13)=1;x,opt=constr(f6,x0,opt);x,opt=constr(f6,x0,opt);x,f=opt(8),n=opt(10)x,f=opt(8),n=opt(10)输出结果输出结果x=-1.2247 x=-1.2247 1.22471.2247f=1.8951f=1.8951n=13n=13THANK YOUSUCCESS2024/3/20 周三33可编辑

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服