预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

预备知识: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求函数在区间上的最小值点和最小值.>>[x,fval]=fminbnd('x^2+3*x+2',-5,5)x=-1.5000fval=-0.2500例1.11.2求函数在点附近的最小值点和最小值.>>[x,fval]=fminsearch('x(1)*x(2)+2/x(1)+2/x(2)',[11])x=1.25991.2599fval=4.7622在MATLAB中,求解数学规划问题的命令主要有:(1)线性规划命令:[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)在上述命令中,当某些参数空缺时,可用[]代替或省略,下同。例1.11.3求解线性规划问题.>>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规划命令:[x,fval]=bintprog(c,A,b,Aeq,beq)例1.11.4求解0-1规划问题.>>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)二次规划命令:[x,fval]=quadprog(H,c,A,b,Aeq,beq,lb,ub)例1.11.5求解二次规划问题.>>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)非线性规划命令:[x,fval]=fmincon(’fun’,x0,A,b,Aeq,beq,lb,ub,’nonlcon’)在上述命令中,fun为定义目标函数的M文件的主文件名,x0为初值,nonlcon为定义非线性约束条件的M文件的主文件名.例1.11.6求解非线性规划问题,初始点为.首先,建立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)methoddoesnotcurre