(完整word版)Matlab求解优化问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
预备知识: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)(2
++=x x x f 在区间]5,5[-上的最小值点和最小值. >> [x,fval]=fminbnd('x^2+3*x+2',-5,5) x =
-1.5000 fval =
-0.2500
例1.11.2 求函数2
121212
2),(x x x x x x f ++
=在点)1,1(附近的最小值点和最小值. >> [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)线性规划⎪⎪
⎩
⎪⎪
⎨⎧≤≤=⋅≤=ub x lb beq x Aeq b
Ax t s x c z T ..min
命令:[x,fval]=linprog (c,A,b,Aeq,beq,lb,ub)
在上述命令中,当某些参数空缺时,可用[]代替或省略,下同。
例1.11.3 求解线性规划问题⎪⎪⎪⎩
⎪
⎪⎪⎨
⎧≥=+++≤+--≤---+++=0
,,,1
00
42..5632min 4321432143243214
321x x x x x x x x x x x x x x x t s x x x x z . >> 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规划⎪⎪⎩
⎪⎪⎨
⎧==⋅≤=1
,0.
.min x beq x Aeq b
Ax t s x c z T
命令:[x,fval]=bintprog (c,A,b,Aeq,beq)
例1.11.4 求解0-1规划问题⎪⎪⎪⎪⎩
⎪
⎪⎪⎪⎨
⎧=≤≤++≤+≤++---=1
,0,,8
28
25.258.053.121.2..8.02.1min 3212
32121
3213
21x x x x x x x x x x x x t s x x x z .
>> 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)二次规划⎪
⎪⎩
⎪⎪⎨⎧≤≤=⋅≤+=ub x lb beq x Aeq b Ax t s x c Hx x z T
T ..21min 命令:[x,fval]=quadprog (H,c,A,b,Aeq,beq,lb,ub)
例1.11.5 求解二次规划问题⎪⎪
⎪
⎩
⎪
⎪⎪⎨⎧≥=+≤+-≤+---+=0,322
22..6221min 2121212121212
221x x x x x x x x t s x x x x x x z . [][]1122
1212121222111126261222x x z x x x x x x x x x x -⎡⎤⎡⎤⎡⎤=+---=+--⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦
>> 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