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

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

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

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

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

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

Matlab求解优化问题Matlab求解优化问题Matlab求解优化问题预备知识: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-