《《MATLAB优化工具箱》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《MATLAB优化工具箱》PPT课件.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、线性规划的线性规划的MATLAB命令命令x=lp(c,A,b)x=lp(c,A,b,v1)x=lp(c,A,b,v1,v2)x=lp(c,A,b,v1,v2,x0)x=lp(c,A,b,v1,v2,x0,ne)x=lp(c,A,b,v1,v2,x0,ne,dis)x,lag=lp(c,A,b, )x,lag,how=lp(c,A,b)min z =cxs.t. Axbv1 ,v2 为给出为给出x的下界和上界,的下界和上界,v1 ,v2的维的维数数k可以小于可以小于x的维数,这时的维数,这时v1 ,v2 表示表示x的前的前k个分量的下界和上界;个分量的下界和上界;x0 表示初始解;表示初始解;n
2、e 等式约束的个数,将等式约束置于等式约束的个数,将等式约束置于不等式约束前面。不等式约束前面。当某些参数省缺时,需用当某些参数省缺时,需用 占位占位dis 控制警告信息,控制警告信息,dis=-1,不显示不显示lag 拉格朗日乘子拉格朗日乘子,how 给出错误信息给出错误信息命令命令说明说明例例1 求解求解 max z = 3x1+x2s.t. x1+x2 2 x12x2 2 3x1+2x2 14 x1,x20输入方法输入方法c=-3,1;A=-1,1;1,-2;3,2;b=2,2,14;v1=0,0;x=lp(c,A,b,v1)z=-c*x 例题例题输出结果输出结果x = 4 1z = 1
3、3 例题例题输入方法输入方法输出结果输出结果例例2 求解求解 min z = x1+x2s.t. x1x2 1 x1 0c=1,1;A=1,-1;b=1;v1=0;x=lp(c,A,b,v1)z=-c*x x = 0 -1z = 1例例3 求解求解0,120210032. .46min21212121xxxxxxtsxxz 例题例题输入方法输入方法c=-6,-4;A=2,3;4,2;b=100,120;vlb=0,0;vub=x,lam=lp(c,A,b,vlb,vub)Z=c*x输出结果输出结果x = 20.0000 20.0000lam = 0.5000 1.2500 0 0Z = -20
4、0 例题例题输入方法输入方法c=-5,4,2;A=6,-1,1;1,2,4;b=8,10;vlb=-1,0,0;vub=3,2;x,lam=lp(c,A,b,vlb,vub)Z=c*x输出结果输出结果x = 1.3333 0 0lam = 0.8333 0 0 3.1667 2.8333 0 0Z = -6.66670021104286. .245min321321321321xxxxxxxxxtsxxx例例4 求解求解二次规划的二次规划的MATLAB命令命令x=qp(H,c,A,b)x=qp(H,c,A,b,v1)x=qp(H,c,A,b,v1,v2)x=qp(H,c,A,b,v1,v2,x
5、0)x=qp(H,c,A,b,v1,v2,x0,ne)x=qp(H,c,A,b,v1,v2,x0,ne,dis)x,lam=lp(H,c,A,b, )x,lam,how=lp(H,c,A,b)min q(x)=1/2xTHx+cTx s.t. Axbv1 ,v2 为给出为给出x的下界和上界,的下界和上界,v1 ,v2的的维数维数k可以小于可以小于x的维数,这时的维数,这时v1 ,v2 表示表示x的前的前k个分量的下界和上界;个分量的下界和上界;x0 表示初始解;表示初始解;ne 等式约束的个数,将等式约束置等式约束的个数,将等式约束置于不等式约束前面。于不等式约束前面。Dis控制警告信控制警告
6、信息息,dis=-1时不显示警告信息时不显示警告信息当某些参数省缺时,需用当某些参数省缺时,需用 占位占位lag 拉格朗日乘子拉格朗日乘子, how 错误信息错误信息命令命令说明说明 例题例题221122121212121211min( )2622. . 2 22 23 ,0f xxx xxxxstxxxxxxx x输入方法输入方法H=1,-1;-1,2;c=-2,-6;A=1,1;-1,2;2,1;b=2;2;3;x,l=qp(H,c,A,b,zeros(2,1)输出结果输出结果x = 0.6667 1.3333l = 3.1111 0.4444 0 0 0 例题例题0,0102. .4)(
7、min21212112221xxxxxxtsxxxxf输入方法输入方法H=2,0;0,2;c=-4,0;A=-1,1;1,-1;b=2;-1;X=qp(H,c,A,b,zeros(2,1)输出结果输出结果X = 0.5000 1.5000问题问题模型模型基本的程序名基本的程序名.m文件文件无约束极小无约束极小(非线性规划)(非线性规划)非线性最小二乘非线性最小二乘约束极小约束极小(非线性规划)(非线性规划)非负线性最小非负线性最小二乘二乘约束线性最小约束线性最小二乘二乘Rxxf),(minnRxxf),(min)2, 1, min(xxffx )0, f(fmins)0, f(fminuxxx
8、x)(function xff )(function xff )(function xff )()(minxfxfT)0, f(curvefit)0, f(leastsqxxxx0)(. .),(minxgtsRxxfn)0, f(constrxx )(fgf,functionx0 . .minxtsbAxdxtsbAxC . .min),(nnlsbAx ),(conlsdcbAx 功能功能省缺值及含义省缺值及含义说明(说明(opt=optins)0,无中间结果,无中间结果Opt(1)=1,有中间结果输出有中间结果输出Opt(1)=-1,给出警告信息给出警告信息输出形式输出形式解解x(k)的
9、精度的精度4)()()1(1exxxkkk用用opt(2)设置设置x(k)的精度的精度函数函数f(k)的精度的精度4)()()1(1efffkkk用用opt(3)设置设置f(k)的精度的精度函数值输出函数值输出opt(8)输出结束时的函数值输出结束时的函数值主要算法主要算法0,BFGS法法;1,DFP法法 用用opt(6)选择选择函数计算次数函数计算次数opt(10)输出函数计算次数输出函数计算次数等式约束等式约束0,等式约束个数为,等式约束个数为0opt(13)输出等式约束个数输出等式约束个数例例1 求求 的近似值的近似值使用命令使用命令x=fmin(f1,x1,x2) ,求函数,求函数f1
10、在区间在区间x1xx2上最小值上最小值fmin(cos,3,4)执行程序执行程序输出结果输出结果ans = 3.14159480185141例例2 计算函数式计算函数式(x3+cos(x)+xlog(x)/ex 在在(0,1)范围内的最小值范围内的最小值执行程序执行程序fmin(x3+cos(x)+x*log(x)/exp(x),0,1)输出结果输出结果ans = 0.522288340666171,10,min22babxax例观察中间结果;将解和函数值的精度提观察中间结果;将解和函数值的精度提高到高到108,给出迭代次数及结果的函数值。,给出迭代次数及结果的函数值。编写程序编写程序func
11、tion y=f1(x)a=10;b=1;y=x(1)2/a+x(2)2/b;使用命令使用命令x=fminu(f1,x0) ,x=fminu(f1,x0,opt)执行程序执行程序x0=1,1; %初始值初始值x=fminu(f1,x0),%BFGS(拟牛顿法拟牛顿法)输出结果输出结果无中间结果无中间结果x = 1.0e-007 * 0.0431 -0.2708执行程序执行程序x0=1,1; %初始值初始值x=fmins(f1,x0)%简单搜索法简单搜索法.输出结果输出结果x = 1.0e-004 * 0.2618 -0.0797f-COUNT FUNCTION STEP-SIZE GRAD/S
12、D 4 1.1 0.544554 -4.04 9 0.0809191 0.504496 -2.67e-008 15 7.35327e-016 4.95545 -2.27e-009x = 1.0e-007 * 0.0431 -0.2708x0=1,1; %初始值初始值opt(1)=1;%输出中间结果输出中间结果x=fminu(f1,x0,opt)提高精度提高精度108,不输出中间结果,只给出迭代次数和结果各函数值,不输出中间结果,只给出迭代次数和结果各函数值执行执行程序程序输出结果输出结果输出中间结果输出中间结果执执行行程程序序输输出出结结果果x0=1,1; opt(2)=1e-8;opt(3)
13、=1e-8;x,opt=fminu(f1,x0,opt)Y=opt(8),n=opt(10),x = 1.0e-008 * 0.1845 0.0908 Y = 1.1653e-018n = 23例例4 求函数求函数 的最小值的最小值 ) 12424()(22122211xxxxxexfx编写程序编写程序function y=f3(x)y=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);执行程序执行程序x0=-1,1;options=;x,options=fminu(f3,x0,options);x,y=options(8),n=options(1
14、0),输出结果输出结果x = 0.50000349872452 -1.00000872066009y = 1.302815164349921e-010n = 36优化程序的选择优化程序的选择:options(6)=0时为时为BFGS方法方法; options(6)=1为为DFP法法;options(7)=0;混合插值混合插值; options(7)=1为立方插值为立方插值例例5 求函数求函数 的最小值的最小值 (分别用分别用BFGS和和DFP方法方法) 441432243221)(10)2()2(5)()(xxxxxxxxxf编写程序编写程序function y=f4(x)y=(x(1)+x(
15、2)2+5*(x(3)-2*x(4)2+(x(2)-2*x(3)4+10*(x(1)-x(4)4;执行程序执行程序BFGS混合插值混合插值x0=3,-1,0,1;options(6)=0;options(7)=0;x=fminu(f4,x0,options),输出结果输出结果x = 0.01101475115242 -0.01099180836233 0.00562807899161 0.00290682431604执行程序执行程序BFGS立方插值立方插值x0=3,-1,0,1;options(6)=0;options(7)=1;x=fminu(f4,x0,options),x = -0.00
16、379331489930 0.00377922373234 -0.00081367476184 -0.00040994333806输出结果输出结果执行程序执行程序DFP混合插值混合插值x0=3,-1,0,1;options(6)=1;options(7)=0;x=fminu(f4,x0,options),x = 0.01070930955579 -0.01070999578237 0.00078904792467 0.00047988726153输出结果输出结果执行程序执行程序DFP立方插值立方插值x0=3,-1,0,1;options(6)=1;options(7)=1;x=fminu(f4
17、,x0,options),输出结果输出结果x = -0.03078933783743 0.03128589541937 -0.02035363789309 -0.01011235888056leastsq(fun,x0);或或leastsq(fun,x0);寻找寻找M文件中文件中fun(x)返回的函数值的平方和的最小值返回的函数值的平方和的最小值,fun返回目标返回目标函数的向量函数的向量.例例2 用下面一组数据拟合用下面一组数据拟合c(t)=rekt 中的系数中的系数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
18、.32 7.45 5.24 3.01使用命令使用命令编写程序编写程序x=leastsq(ct,x0)function f=ct(x)t=0.25,0.5,1,1.5,2,3,4,6,8;c=19.21,18.15,15.36,14.1,12.89,9.32,7.45,5.24,3.01;f=c-x(1)*exp(x(2)*t);执行程序执行程序x0=10,0.5;x=leastsq(ct,x0)输出结果输出结果x = 20.2413 -0.2420带约束非线性规划的逐步二次规划法带约束非线性规划的逐步二次规划法SQP法的法的MATLAB命令命令命令命令说明说明x= constr(fun,x0)
19、x= constr(fun,x0,opt)x= constr(fun,x0,opt,v1,v2,grad)x= constr(fun,x0,opt,v1,v2,grad,p1,p2)x,opt= constr(fun,x0, ) v1和和v2表示表示x的下界和的下界和上界上界;fun.m给出目标函数给出目标函数f 和和约束条件约束条件g 。形式为。形式为f,g=fun(x);grad.m给出目标函数给出目标函数f 和约束条件和约束条件g 的梯度。的梯度。形式为形式为df,dg=fun(x); 例题例题1f(x1,x2)=100(x2x12)2+(1x1)2x12+x121.5,x1+x2 0编
20、写程序编写程序 function f,g=f2(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;g(1)=x(1)2+x(2)2-1.5;g(2)=-x(1)-x(2);输入方法输入方法x0=-1.9,2;opt(1)=1;x=constr(f2,x0,opt),f=100*(x(2)-x(1)2)2+(1-x(1)2给出梯度时给出梯度时输出中间结果时输出中间结果时x0=-1.9,2;opt(1)=1;x=constr(f2,x0,opt, , ,grad),f=100*(x(2)-x(1)2)2+(1-x(1)2function df,dg=grad(x)df=-400*x(1
21、)*(x(2)-x(1)2)-2*(1-x(1),200*(x(2)-x(1)2);dg=2*x(1),-1;2*x(2),-1;输出输出结果结果梯度梯度最优解最优解最优值最优值迭代次数迭代次数不给出不给出(0.9077,0.8222)0.008669给出给出(0.9072,0.8228)0.008836输出输出结果结果x = 0.9072 0.8227f = 0.0086编写程序编写程序 x0=-1,1;opt=;x,opt=constr(f5,x0,opt);x,f=opt(8),n=opt(10) 例题例题2 求解下列条件极值求解下列条件极值 1005 . 1.) 12424()(min
22、21212122122211xxxxxxtosubxxxxxexfx输出结果输出结果x = -9.5474 1.0474f = 0.0236n = 29function 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);g(1)=1.5+x(1)*x(2)-x(1)-x(2);g(2)=-x(1)*x(2)-10; 例题例题3 求解下列条件极值问题求解下列条件极值问题 1221212212121212min( )(42421). . 1.50 10 0 0 xf xexxx xxsubtox xxxx xxx编写程序编写程序
23、x0=-1,1;opt=;vlb=0;0;vub=;x,opt=constr(f5,x0,opt,vlb,vub);x,f=opt(8),n=opt(10)输出结果输出结果x = 0 1.5000f = 8.5000n = 10用户提供导数时用户提供导数时,则问题会更有效更准确则问题会更有效更准确. 例题例题4 求解下列极值求解下列极值 1005 . 1.) 12424()(min21212122122211xxxxxxtosubxxxxxexfx编写程序编写程序 ?x0=-1,1;opt=;x,opt=constr(f5,x0,opt,grad1);x,f=opt(8),n=opt(10)f
24、unction 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*exp(x(1)*(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);x = -9.5474 1.0474f = 0.0236n = 11输出结果输出结果等式约束问题等式约束问题 例例5: 求下列极值求下列极值1005 . 10.) 12424()(min2121212122122211xxxxxxxxtosubxxxxxexfx编写程序编写程序 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);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;执行程序执行程序 x0=-1,1;clear options;opt(13)=1;x,opt=constr(f6,x0,opt);x,f=opt(8),n=opt(10)输出结果输出结果x = -1.2247 1.2247f = 1.8951n = 13结束结束