资源描述
预备知识: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.5000
fval =
-0.2500
例1.11.2 求函数在点附近的最小值点和最小值.
>> [x,fval]= fminsearch('x(1)*x(2)+2/x(1)+2/x(2)',[1 1])
x =
1.2599 1.2599
fval =
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 -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
(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,[],[])
Optimization terminated.
x =
1
1
0
fval =
-2.2000
(3)二次规划
命令:[x,fval]=quadprog(H,c,A,b,Aeq,beq,lb,ub)
例1.11.5 求解二次规划问题.
>> H=[1 -1;-1 2];
>> c=[-2;-6];
>> A=[1 1;-1 2];
>> b=[2 2];
>> Aeq=[2 1];
>> beq=[3];
>> lb=[0;0];
>> [x,fval]=quadprog(H,c,A,b,Aeq,beq,lb,[])
Warning: Large-scale method does not currently solve this problem formulation,
switching to medium-scale method.
> In quadprog at 242
Optimization terminated.
x =
1.0000
1.0000
fval =
-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文件,定义目标函数:
function f=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=[1 1];beq=[0];
>> [x,fval]=fmincon('fun',x0,[],[],Aeq,beq,[],[],'nonlcon')
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In fmincon at 274
Optimization terminated: first-order optimality measure less than options. TolFun and maximum constraint violation is less than options. TolCon.
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
1
x =
-1.2247
1.2247
fval =
1.8951
显然,利用MATLAB求解数学规划问题(特别是非线性规划)较为不便. 为此,第二章将要介绍功能更为强大、操作更为便捷的LINGO软件.
实验9
1. 求如下函数的最小值和最小值点:
(1) ;(2)
2. 求解线性规划问题:
(1) (2)
3. 求解0-1规划问题:
(1) (2)
4. 求解二次规划问题:
5. 求解非线性规划问题:
(1) (2)
展开阅读全文