Matlab优化(求极值)Word版

  • 格式:doc
  • 大小:139.50 KB
  • 文档页数:7

下载文档原格式

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

第七讲 Matlab 优化(求极值)

理论介绍:算法介绍、软件求解. 一.线性规划问题

1.线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小值的问题,Matlab 中规定线性规划的标准形式为

min s.t.T x

c x

Ax b Aeq x beq lb x ub ≤⎧⎪

⋅=⎨⎪≤≤⎩

其中c 和x 为n 维列向量,A 、Aeq 为适当维数的矩阵,b 、beq 为适当维数的列向量。注意:线性规划问题化为Matlab 规定中的标准形式。

求解线性规划问题的Matlab 函数形式为linprog(c,A,b),它返回向量x 的值,它的具体调用形式为:

[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,x0,OPTIONS)

这里fval 返回目标函数的值,LB 、UB 分别是变量x 的下界和上界,x0是x 的初始值,OPTIONS 是控制参数。

例1 求解线性规划问题

1231231

23123123max 23572510s.t.312,,0

z x x x x x x x x x x x x x x x =+-++=⎧⎪-+≥⎪⎨++≤⎪⎪≥⎩ 程序:c=[2;3;5];

>> A=[-2,5,-1;1,3,1];b=[-10;12]; >> Aeq=[1,1,1];beq=[7]; >> LB=[0;0;0];(zeros(3,1))

>> [x,fval]=linprog(c,A,b,Aeq,beq,LB,[]) 练习与思考:求解线性规划问题

12312312123

min 23+428

s.t.3+26,,0z x x x x x x x x x x x =+++≥⎧⎪

≥⎨⎪≥⎩ 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ].

2.可以转化为线性规划的问题 规划问题12min||+||+

+||s.t.,n x x x Ax b ≤其中1

=[],T n x x x ,A b 为相应维数的矩

阵和向量。注意到对任意的i x 存在,>0i i u v 满足=-,||=+i i i i i i x u v x u v ,事实上只要取

+||||-=

,=22

i i i i i i x x x x

u v 就可以满足上面的条件。

这样,记1

1

=[],=[],T T n n u u u v v v 从而可以把问题变成

=1

min (+)

(-)s.t.,0

n

i i i u v A u v b u v ≤⎧⎨

≥⎩∑

例2 求解规划问题min{max||}i

i

i x y ε,其中=-.i i i x y ε

对于这个问题,如果取0=lim||i

i y x ε,这样,上面的问题就变换成

01100min s.t.-,,-n n x x y x x y x ≤≤

这是我们通常的线性规划问题。

练习与思考:规划问题

1234123412341234min ||2||+3||+4||--+=0s.t.-+-3=11--2+3=-2

z x x x x x x x x x x x x x x x x =+⎧

⎪⎪

⎨⎪⎪⎩

二.非线性一元函数的最小值

对于求一元函数的最小值问题,Matlab 提供了一个命令函数fminbnd ,fminbnd

函数的调用格式为:X=fminbnd(fun,x1,x2)和

[X,fval]=fminbnd(fun,x1,x2)

其中fun 为目标函数,x1,x2为变量的边界约束,即12[,]x x x ∈,X 为返回的满足fun 取得最小值的x 的值,fval 为目标函数值。

例 3 计算函数321

()x x x x f x e e

-+-=+的最小值和f(x)取最小值时x 的值,

[5,5].x ∈-

程序:>> clear

>> fun='(x^3+x^2-1)/(exp(x)+exp(-x))'; >> ezplot(fun,[-5,5]) >> [X,fval]=fminbnd(fun,-5,5) 练习与思考:如何求一元函数的最大值? 三.无约束非线性多元变量函数的优化

对于无约束非线性多元变量函数的优化问题,主要采用命令函数fminsearch 和fminunc ,其中fminsearch 比较适合处理低阶多间断点的函数,fminunc 则对高阶连续函数有效。

1.命令函数fminsearch

函数fminsearch 求解目标函数fun 的最小值和fun 取最小值时变量x 的值,调用格式为:X=fminsearch(fun,X0)和[X,fval]=fminsearch(fun,X0)

其中X0为声明变量的初始值,X 为返回的x 的值,fval 为返回的fun 的值。 例4 求12[,],x x 使目标函数12()sin cos f x x x =+取得最小值。 程序:>> clear >> X0=[0,0];

>> [X,fval]=fminsearch('sin(x(1))+cos(x(2))',X0) 说明:声明变量初始值对返回的x 的值的影响。X0=[100,100]? 2.命令函数fminunc

函数fminunc 通过计算寻找多变量目标函数fun 的最小值,调用格式为:X=fminunc(fun,X0)和[X,fval]=fminunc(fun,X0)

相关主题