Matlab求解优化问题(可编辑修改word版)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

= + x

预备知识: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 2 + 3x + 2 在区间[-5,5]上的最小值点和最小值. >> [x,fval]=fminbnd('x^2+3*x+2',-5,5) x =

-1.5000 fval =

-0.2500

2 例 1.11.2 求函数 f (x 1 , x 2 ) x 1 x 2 1 + 2

在点(1,1) 附近的最小值点和最小值. x 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 中,求解数学规划问题的命令主要有:

⎧min ⎪s .t .

(1)线性规划⎨

⎪ ⎪⎩

z = c T x Ax ≤ b

Aeq ⋅ x = beq lb ≤ x ≤ ub

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

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

⎧min z = 2x 1 + 3x 2 + 6x 3 + 5x 4 ⎪s .t . x 1 - x 2 - 2x 3 - 4x 4 ≤ 0

例 1.11.3 求解线性规划问题⎨ - x 2 - x 3 + x 4 ≤ 0 .

⎪ x 1 + x 2 + x 3 + x 4 = 1 ⎪⎩

>> c=[2;3;6;5];

x 1 , x 2 , x 3 , x 4 ≥ 0 >> 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

⎪ ⎪ ⎧min ⎪s .t .

(2)0-1 规划⎨

⎪ ⎪⎩

z = c T x

Ax ≤ b Aeq ⋅ x = beq x = 0,1

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

⎧min z = -x 1 -1.2x 2 - 0.8x 3 ⎪s .t . 2.1x 1 + 2x 2 +1.3x 3 ≤ 5 ⎪ 例 1.11.4 求解 0-1 规划问题⎨

⎪ ⎪ 0.8x 1 x 1 + x 2

+ 2.5x 2 2x 2 ≤ 5 . + 2x 3 ≤ 8 ≤ 8 ⎪⎩

>> c=[-1;-1.2;-0.8];

x 1, x 2 , x 3 = 0,1 >> 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

⎪ ⎨ ⎪

⎩ ⎧min (3) 二次规划⎪s .t .

⎪ ⎪ ⎩

z = 1

x T Hx + c T x

2 Ax ≤ b

Aeq ⋅ x = beq lb ≤ x ≤ ub

命令:[x,fval]=quadprog (H,c,A,b,Aeq,beq,lb,ub)

min z = 1 x 2 + x 2 - x x - 2x - 6x

⎪ ⎪s .t . 2 1

2 1 2 1 2 x 1 + x 2 ≤ 2 例 1.11.5 求解二次规划问题⎨ ⎪

- x 1 + 2x 2 ≤ 2 . ⎪

2x 1 + x 2 = 3 ⎪ x 1 , x 2 ≥ 0 z = 1 x 2 + x 2 - x x - 2x - 6x = 1 [x x ]⎡ 1 -1⎤ ⎡ x 1 ⎤ +[-2 -6]⎡ x 1 ⎤ 2 1 2 1 2 1 2

2 1 2

⎢-1 2 ⎥ ⎢ 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];

⎣ ⎦ ⎣ 2 ⎦ ⎣ 2 ⎦

>> [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

相关文档
最新文档