《运筹学优化试验课件.ppt》由会员分享,可在线阅读,更多相关《运筹学优化试验课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、运筹学优化试验运筹学优化试验第1页,此课件共26页哦一、用一、用Excel求非线性规划模型的命令格式和实例求非线性规划模型的命令格式和实例第2页,此课件共26页哦例1 求例2 求第3页,此课件共26页哦二、用二、用Mathematica求非线性规划模型的命令格式和实求非线性规划模型的命令格式和实例例1、用驻点法求函数f(x)在a,b区间上的最大和最小值1)先求驻点表 zd=Solvefx=0,x2)再求函数在表 zd 中点处的变量值、函数值表与端点值、端点函数值并集表 zdgh=Unionx,fx/.zdg,a,f(a),b,f(b)3)求表zdgh 中的函数值的最大、最小值 fmax=Max
2、Transposezdgh2 fmin=Min Transposezdgh24)求出函数取最大、最小值的点 x1=Positionzdgh,fmin x2=Positionzdgh,fmax xmin=zdghx11,1 xmax=zdghx21,1第4页,此课件共26页哦注:学习编程后我们可把这种方法编成一个通用程序。Transposezdgh表示把表zdgh转置 zdgh2表示获取表zdgh的第2行 Transposezdgh2表示获取表zdgh的第2列 Positionzdgh,fmin表示表zdgh中与元素fmin相匹配的位置2、用改进法求函数f(x)在a,b区间上的最大和最小值1)绘
3、制函数f(x)在a,b上的图形,观察函数f(x)在a,b区间上可能取最大和最小值 的点为x2和x1附近。2)xmin=FindRootfx=0,x,x1 xmax=FindRootfx=0,x,x23)fmin=fx/.xmin fmax=fx/.xmax注:该方法简单直观,但不适宜编通用程序。第5页,此课件共26页哦3、用求极值命令求函数f(x)在a,b区间上的最大和最小值(P186)1)绘制函数f(x)在a,b上的图形,观察函数f(x)在a,b区间上可能取最大和最小值 的点为x2和x1。2)xmin=FindMinmumfx,x,x1 xmax=FindMinmun-fx,x,x24、多元
4、函数求极值命令xmin=FindMinmumfx,y,z,x,x0y,y0,z,z0表示求多元函数f(x,y,z)在点xo,y0,z0附近的极小值 xmax=FindMinmum-fx,y,z,x,x0y,y0,z,z0表示求多元函数f(x,y,z)在点xo,y0,z0附近的极大值5、有约束的非线性规划求解命令NMinimizef(X),约束1,约束2,约束m,决策变量 如:NMinimizeE(Sin50 x)+Sin60 Ey+Sin70 Sinx+SinSin80 y-Sin10(x+y)+1/4(x2+y2),x2+y2 1,x,y第6页,此课件共26页哦三、用三、用MATLAB解优化
5、问题解优化问题 其中等式(3)、(4)、(5)的右边可选用(1)或(2)的等式右边.函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解.常用格式如下:常用格式如下:(1)x=fminbnd(fun,x1,x2)(2)x=fminbnd(fun,x1,x2,options)(3)x,fval=fminbnd()(4)x,fval,exitflag=fminbnd()(5)x,fval,exitflag,output=fminbnd()第7页,此课件共26页哦MATLAB(wliti1)主程序为主程序为wliti1.m:f=2*exp(-x).
6、*sin(x);fplot(f,0,8);%作图语句作图语句 xmin,ymin=fminbnd(f,0,8)f1=-2*exp(-x).*sin(x);xmax,ymax=fminbnd(f1,0,8)用用Excel规划求解工具求解规划求解工具求解用用LINGO软件求解软件求解第8页,此课件共26页哦 命令格式为命令格式为:(1)x=fminunc(fun,X0);或x=fminsearch(fun,X0)(2)x=fminunc(fun,X0,options);或x=fminsearch(fun,X0,options)(3)x,fval=fminunc(.);或x,fval=fminsea
7、rch(.)(4)x,fval,exitflag=fminunc(.);或x,fval,exitflag=fminsearch(5)x,fval,exitflag,output=fminunc(.);或x,fval,exitflag,output=fminsearch(.)2.多元函数无约束优化问题多元函数无约束优化问题标准型为:标准型为:min第9页,此课件共26页哦3 fminunc为中型优化算法的步长一维搜索提供了两种算法,由选项中参数LineSearchType控制:LineSearchType=quadcubic(缺省值),混合的二次和三次多项式插值;LineSearchType=c
8、ubicpoly,三次多项式插使用使用fminunc和和 fminsearch可能会得到局部最优解可能会得到局部最优解.说明说明:fminsearch是用单纯形法寻优是用单纯形法寻优.fminunc算法见以下几点说明:算法见以下几点说明:1 fminunc为无约束优化提供了大型优化和中型优化算法.由选项中的参数LargeScale控制:LargeScale=on(默认值默认值),使用大型算法使用大型算法LargeScale=off(默认值默认值),使用中型算法使用中型算法2 fminunc为中型优化算法的搜索方向提供了4种算法,由 选项中的参数选项中的参数HessUpdate控制:控制:Hes
9、sUpdate=bfgs(默认值),拟牛顿法的(默认值),拟牛顿法的BFGS公式;公式;HessUpdate=dfp,拟牛顿法的,拟牛顿法的DFP公式;公式;HessUpdate=steepdesc,最速下降法,最速下降法第10页,此课件共26页哦例例3 3 minMATLAB(wliti3)1.1.编写编写M文件文件 fun1.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);2.2.输入输入M文件文件wliti3.m如下如下:x0=-1,1;x=fminunc(fun1,x0);y=fun1(x)3.
10、3.运行结果运行结果:x=0.5000 -1.0000 y=1.3029e-10=0用用LINGO软件求解软件求解用用Excel规划求解工具求解规划求解工具求解第11页,此课件共26页哦MATLAB(wliti31)MATLAB(wliti32)第12页,此课件共26页哦3.3.用用fminsearch函数求解函数求解MATLAB(wliti41)输入命令:f=100*(x(2)-x(1)2)2+(1-x(1)2;x,fval,exitflag,output=fminsearch(f,-1.2 2)运行结果:x=1.0000 1.0000fval=1.9151e-010exitflag=1ou
11、tput=iterations:108 funcCount:202 algorthm:Nelder-Mead simplex direct search 第13页,此课件共26页哦4.4.用用fminunc 函数函数MATLAB(wliti44)(1)建立M文件fun2.m function f=fun2(x)f=100*(x(2)-x(1)2)2+(1-x(1)2(2)主程序wliti44.m第14页,此课件共26页哦 Rosenbrock函数不同算法的计算结果函数不同算法的计算结果可以看出,最速下降法的结果最差.因为最速下降法特别不适合于从一狭长通道到达最优解的情况.第15页,此课件共26
12、页哦四)、有约束优化问题的数学软件求解四)、有约束优化问题的数学软件求解1.首先建立M文件fun.m,用来定义目标函数F(X):function f=fun(X);f=F(X);其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,MATLAB求解上述问题,基本步骤分三步:第16页,此课件共26页哦3 建立主程序.求解非线性规划的函数是fmincon,命令的基本格式如下:(1)x=fmincon(fun,X0,A,b)(2)x=fmincon(fun,X0,A,b,Aeq,beq)(3)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB)(4)x=fmin
13、con(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon)(5)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon,options)(6)x,fval=fmincon()(7)x,fval,exitflag=fmincon()(8)x,fval,exitflag,output=fmincon()输出极值点M文件迭代的初值参数说明变量上下限第17页,此课件共26页哦注意:注意:1 fmincon函数提供了大型优化算法和中型优化算法默认时:若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等
14、式约束,fmincon函数将选择大型算法当既有等式约束又有梯度约束时,使用中型算法2 fmincon函数的中型算法使用的是序列二次规划法在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hesse矩阵3 fmincon函数可能会给出局部最优解,这与初值X0的选取有关第18页,此课件共26页哦例例1 1 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t.x1+x22 -x1+2x22 x10,x20 MATLAB(youh1)1写成标准形式写成标准形式:2输入命令输入命令:H=1-1;-1 2;c=-2;-6;A=1 1;-1 2;b=2;2;Aeq=;
15、beq=;VLB=0;0;VUB=;x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3运算结果运算结果为:x=06667 13333 z=-82222s.t.第19页,此课件共26页哦1写成标准形式写成标准形式:s.t.2x1+3x2 6 s.t.x1+4x2 5 x1,x2 0例例2第20页,此课件共26页哦2先建立先建立M-文件文件 fun3m:function f=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)2+(1/2)*x(2)2MATLAB(youh2)3再建立主程序youh2m:x0=1;1;A=2 3;1 4;b=6;5;Aeq=
16、;beq=;VLB=0;0;VUB=;x,fval=fmincon(fun3,x0,A,b,Aeq,beq,VLB,VUB)4运算结果为:运算结果为:x=07647 10588 fval=-20294第21页,此课件共26页哦1 1先建立先建立M文件文件fun4m定义目标函数定义目标函数:function f=fun4(x);f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);x1+x2=0 s.t.1.5+x1x2-x1-x2 0 -x1x2 10 0例例3 2再建立再建立M文件文件myconm定义非线性约束:定义非线性约束:function
17、g,ceq=mycon(x)g=x(1)+x(2);15+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10;第22页,此课件共26页哦3主程序主程序youh3m为为:x0=-1;1;A=;b=;Aeq=1 1;beq=0;vlb=;vub=;x,fval=fmincon(fun4,x0,A,b,Aeq,beq,vlb,vub,mycon)MATLAB(youh3)4 运算结果为运算结果为:x=-12250 12250 fval=18951第23页,此课件共26页哦 例4 1先建立先建立M文件文件funm定义目标函数定义目标函数:function f=fun(x);f=-2*x
18、(1)-x(2);2再建立再建立M文件文件mycon2m定义非线性约束:定义非线性约束:function g,ceq=mycon2(x)g=x(1)2+x(2)2-25;x(1)2-x(2)2-7;第24页,此课件共26页哦3 主程序主程序fxxm为为:x0=3;25;VLB=0 0;VUB=5 10;x,fval,exitflag,output =fmincon(fun,x0,VLB,VUB,mycon2)MATLAB(fxx(fun)第25页,此课件共26页哦4 运算结果为运算结果为:x=40000 30000fval=-110000exitflag=1output=iterations:4 funcCount:17 stepsize:1 algorithm:1x44 char firstorderopt:cgiterations:返回返回第26页,此课件共26页哦