预备知识:M文件简介在MATLAB中,用户可以利用Edtior(编辑器)建立M文件,然后在命令窗口中的“>>”提示符下键入M文件的主文件名,回车执行.MATLAB的M文件有两类:命令文件和函数文件。将原本要在MATLAB环境下直接输入的语句,放在一个以.m为后缀的文件中,这一文件就称为命令文件;函数文件由五部分组成:函数定义行、H1行、函数帮助文本、函数体、注释,MATLAB的内部函数都是由函数文件定义的。1.11优化(最值、数学规划)在数学上,优化问题包括最值问题和数学规划问题等,后者又包括线性规划、整数规划(含0-1规划)、二次规划等.在MATLAB中,求解最值问题的命令主要有:fminbnd(f,x1,x2)求一元函数f在区间[x1,x2]上的最小值点[x,fval]=fminbnd(f,x1,x2)求一元函数f在区间[x1,x2]上的最小值点和最小值fminsearch(’f’,x0)求多元函数f在点x0附近的最小值点[x,fval]=fminsearch(’f’,x0)求多元函数f在点x0附近的最小值点和最小值例1.11.1求函数23)(2xxxf在区间]5,5[上的最小值点和最小值.>>[x,fval]=fminbnd('x^2+3*x+2',-5,5)x=-1.5000fval=-0.2500例1.11.2求函数21212122),(xxxxxxf在点)1,1(附近的最小值点和最小值.>>[x,fval]=fminsearch('x(1)*x(2)+2/x(1)+2/x(2)',[11])x=1.25991.2599fval=4.7622在MATLAB中,求解数学规划问题的命令主要有:(1)线性规划ubxlbbeqxAeqbAxtsxczT..min命令:[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)在上述命令中,当某些参数空缺时,可用[]代替或省略,下同。例1.11.3求解线性规划问题0,,,10042..5632min4321432143243214321xxxxxxxxxxxxxxxtsxxxxz.>>c=[2;3;6;5];>>A=[1-1-2-4;0-1-11];>>b=[0;0];>>Aeq=[1111];>>beq=[1];>>lb=[0;0;0;0];>>[x,fval]=linprog(c,A,b,Aeq,beq,lb,[])Optimizationterminated.x=0.50000.50000.00000.0000fval=2.5000(2)0-1规划1,0..minxbeqxAeqbAxtsxczT命令:[x,fval]=bintprog(c,A,b,Aeq,beq)例1.11.4求解0-1规划问题1,0,,82825.258.053.121.2..8.02.1min321232121321321xxxxxxxxxxxxtsxxxz.>>c=[-1;-1.2;-0.8];>>A=[2.1,2,1.3;0.8,1,0;1,2.5,2;0,2,0];>>b=[5;5;8;8];>>[x,fval]=bintprog(c,A,b,[],[])Optimizationterminated.x=110fval=-2.2000(3)二次规划ubxlbbeqxAeqbAxtsxcHxxzTT..21min命令:[x,fval]=quadprog(H,c,A,b,Aeq,beq,lb,ub)例1.11.5求解二次规划问题0,32222..6221min2121212121212221xxxxxxxxtsxxxxxxz.11221212121222111126261222xxzxxxxxxxxxx>>H=[1-1;-12];>>c=[-2;-6];>>A=[11;-12];>>b=[22];>>Aeq=[21];>>beq=[3];>>lb=[0;0];>>[x,fval]=quadprog(H,c,A,b,Aeq,beq,lb,[])Warning:Large-scalemethoddoesnotcurrentlysolvethisproblemformulation,switchingtomedium-scalemethod.>Inquadprogat242Optimizationterminated.x=1.00001.0000fval=-7.5000(4)非线性规划ubxlbxDeqxDbeqxAeqbAxtsxfz0)(0)(..)(min命令:[x,fval]=fmincon(’fun’,x0,A,b,Aeq,beq,lb,ub,’nonlcon’)在上述命令中,fun为定义目标函数)(xf的M文件的主文件名,x0为初值,nonlcon为定义非线性约束条件0)(,0)(xDeqxD的M文件的主文件名.例1.11.6求解非线性规划问题01005.10..)12424(min2121212122122211xxxxxxxxtsxxxxxezx,初始点为)1,1(.首先,建立fun.m文件,定义目标函数:functionf=fun(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);其次,建立nonlcon.m文件,定义非线性约束条件:function[D,Deq]=nonlcon(x)D(1)=1.5+x(1)*x(2)-x(1)-x(2);D(2)=-x(1)*x(2)-10;Deq=[];最后,输入如下命令并执行:>>x0=[-1;1];>>Aeq=[11];beq=[0];>>[x,fval]=fmincon('fun',x0,[],[],Aeq,beq,[],[],'nonlcon')Warning:Large-scale(trustregion)methoddoesnotcurrentlysolvethistypeofproblem,switchingtomedium-scale(linesearch).>Infminconat274Optimizationterminated:first-orderoptimalitymeasurelessthanoptions.TolFunandmaximumconstraintviolationislessthanoptions.TolCon.Activeinequalities(towithinoptions.TolCon=1e-006):lowerupperineqlinineqnonlin1x=-1.22471.2247fval=1.8951显然,利用MATLAB求解数学规划问题(特别是非线性规划)较为不便.为此,第二章将要介绍功能更为强大、操作更为便捷的LINGO软件.实验91.求如下函数的最小值和最小值点:(1)2ln13,2xfxxx;(2)2212121212,601040(1,1)fxxxxxxxxx2.求解线性规划问题:(1)12121212min23..2843,0zxxstxxxxxx(2)12312312312123max3..21124321,,0zxxxstxxxxxxxxxxx3.求解0-1规划问题:(1)123451234512345max75963..5620544215100,,,,0,1zxxxxxstxxxxxxxxxx(2)123123121232123min1.20.8..2.121.350.852.52828,,0,1zxxxstxxxxxxxxxxxx4.求解二次规划问题:2212121212121212max22412..22223,0zxxxxxxstxxxxxxxx5.求解非线性规划问题:(1)2212121221212min25..10236zxxxxxxstxxxx(2)221222121212min32..50240,0zxxstxxxxxx