Matlab优化工具箱函数简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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(….) 例:某问题的目标函数为 约束条件为: