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 求函数f(x)?x?3x?2在区间[?5,5]上的最小值点和最小值. >> [x,fval]=fminbnd('x^2+3*x+2',-5,5) x =

-1.5000 fval =

-0.2500

例1.11.2 求函数f(x1,x2)?x1x2?222?在点(1,1)附近的最小值点和最小值. x1x2>> [x,fval]= fminsearch('x(1)*x(2)+2/x(1)+2/x(2)',[1 1]) x =

1.2599 1.2599 fval =

4.7622

在MATLAB中,求解数学规划问题的命令主要有:

?min??s.t.(1)线性规划????z?cTxAx?b

Aeq?x?beqlb?x?ub命令:[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)

在上述命令中,当某些参数空缺时,可用[]代替或省略,下同。

?minz?2x1?3x2?6x3?5x4?s.t.x?x?2x?4x?01234??例1.11.3 求解线性规划问题??x2?x3?x4?0.

?x1?x2?x3?x4?1??x1,x2,x3,x4?0?>> c=[2;3;6;5];

>> A=[1 -1 -2 -4;0 -1 -1 1]; >> b=[0;0];

>> Aeq=[1 1 1 1]; >> beq=[1];

>> lb=[0;0;0;0];

>> [x,fval]=linprog(c,A,b,Aeq,beq,lb,[]) Optimization terminated. x =

0.5000 0.5000 0.0000 0.0000 fval =

2.5000

?minz?cTx??s.t.Ax?b(2)0-1规划?

Aeq?x?beq??x?0,1?命令:[x,fval]=bintprog(c,A,b,Aeq,beq)

?minz??x1?1.2x2?0.8x3?s.t.2.1x1?2x2?1.3x3?5??0.8x1?x2?5?例1.11.4 求解0-1规划问题?.

x1?2.5x2?2x3?8??2x2?8??x1,x2,x3?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,[],[]) Optimization terminated. x = 1 1 0 fval =

-2.2000