Matlab优化工具箱函数简介

  • 格式:doc
  • 大小:1.83 MB
  • 文档页数:8

下载文档原格式

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

Matlab优化工具箱函数简介

一维搜索问题fminbnd

无约束极小值fminunc, fminsearch

约束极小值fmincon

线性规划linprog

二次规划quadprog

1.一维搜索问题

优化工具箱函数fminbnd

对应问题:min f(x)

x1

调用格式

x= fminbnd(fun,x1,x2):得到函数fun在区间[x1,x2]内取得最小值的x.

[x,f]= fminbnd(fun,x1,x2): 得到最优点x和最优目标函数值f。

例:求minf(x)= -(3-2*x)^2*x

方法1:x=fminbnd('-(3-2*x)^2*x',0,1.5)

方法2:f=inline('-(3-2*x)^2*x');

x=fminbnd(f,0,1.5)

方法3: x = fminbnd(@(x) -(3-2*x)^2*x,0,1.5)

方法4:先形成一个函数文件

function f=fun(x)

f=-(3-2*x)^2*x;

然后运行下两句中的任一句

x=fminbnd('fun',0,1.5)

x=fminbnd(@fun,0,1.5)

若需输出最优点处的目标函数值f,则将上述语句的左边改为[x,f],如:

[x,f]=fminbnd(' -(3-2*x)^2*x',0,1.5)

其它用法:

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

其中:fun为目标函数,x1,x2为变量的边界约束,即x1≤x≤x2,X为返回的满足fun取得最小值的x的值,而fval则为此时的目标函数值。exitflag>0表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag<0表示计算不收敛,返回值output有3个分量,其中iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法。

例:

clear

fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))'

ezplot(fun,[-2,2])

[X,fval,exitflag,output]= fminbnd(fun,-2,2)

结果为:

X = 0.2176

fval =-1.1312

exitflag = 1

output = iterations: 13

funcCount: 13

algorithm: 'golden section search, parabolic interpolation'

2. 无约束极小值

优化工具箱函数 fminunc, fminsearch

以上两个函数均可求解无约束多元函数的最小值。

调用格式:

x=fminunc(fun,X0)

x=fminsearch(fun,X0)

--------------以X0为初始迭代点,求使函数fun 取得最小值的x

[x,fval]= fminunc(fun,X0)

[x,fval]= fminsearch(fun,X0)

--------------以X0为初始迭代点,求得最优点x 和最优值fval 。

fminsearch()采用单纯形法进行计算,适合处理阶次低但是间断点多的函数;

fminunc()对于高阶连续的函数比较有效,该函数可以输出海塞矩阵。

例1:求 221122

min ()32f X x x x x =++ X0=[1,1]’

[x,fval]=fminunc('3*x(1)^2+2*x(1)*x(2)+x(2)^2',X0)

[x,fval]=fminsearch('3*x(1)^2+2*x(1)*x(2)+x(2)^2',[1,1]')

例2:

clear

fun='exp(x(1))*(2*x(1)^2+3*x(2)^2+2*x(1)*x(2)+3*x(2)+1)';

x0=[0,0];

options=optimset('largescale','off','display','iter','tolx',1e-8,'tolfun',1e-8);

[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options)

3. 约束极小值

优化工具箱函数 fmincon

对应数学模型:

min F(X)

subject to: A*X <= B, Aeq*X = Beq (linear constraints)

C(X) <= 0, Ceq(X) = 0 (nonlinear constraints)

LB <= X <= UB

调用格式:

x=fmincon(fun,x0,A,b):给定初值x0,求解fun函数的最极值点x.。约束条件为线性约束A*x<=b。x0可以是标量、矢量或矩阵

X=fmincon(FUN,X0,A,B,Aeq,Beq) 同前一调用格式相比,约束条件中增加了等式约束Aeq*X = Beq. (若无不等式约束,取A=[] 、B=[])

X=fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB) 若设计变量X有上下限UB、LB用此格式

若X无取值限制,LB与UB为空矩阵[]。

若X(i)的下限为负无穷,则LB(i)=-Inf。

若X(i)的上限为正无穷,则UB(i)=Inf。

X=fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON)

NONLCON是包含函数名的字符串,该函数可以是M文件、内部文件。例如,若NONLCON=’mycon’,则M文件mycon.m具有如下内容:

Function [C,Ceq]=mycon(X)

C=…..%计算X处的非线性不等式

Ceq=…%计算X处的非线性等式

以上各调用格式中均可输出目标函数值,用法仍为:

[x,fval]=fmincon(….)

例:某问题的目标函数为

约束条件为: