资源描述:
《Matlab优化工具箱详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab优化工具箱详解(2008-10-2009:15:00)标签:文化 1.fminbnd进行有约束的一元函数最小值求解。它的求解命令是:X=FMINBND(FUN,x1,x2),FUN是目标函数,可以为表达式字符串或MATLAB自定义函数的函数柄,要求解在约束x1<=X<=x2下的最优解X*。还有其他一些求解命令是:x=fminbnd(fun,x1,x2,options) %options为指定优化参数选项,由OPTIMSET设定[x,fval]=fminbnd(…) %fval为目标函数的最小值[x,fval,exitflag]=f
2、minbnd(…) %exitflag为终止迭代的原因[x,fval,exitflag,output]=fminbnd(…) %output为优化信息说明:若参数exitflag>0,表示函数收敛于x,若exitflag=0,表示达到了最大迭代次数,exitflag<0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。例子:要求解f(x)=x3-2x-5在(0,2)之间最优解,求解命令如下:f=@(x)x.^3-2*x-
3、5;x=fminbnd(f,0,2); 2.fminsearch进行多变量函数的无约束优化。格式主要有:x=fminsearch(fun,x0);%对函数fun,从x0开始搜索最优值,返回最优变量xx=fminsearch(fun,x0,options);%可以用optimset设置一些优化选项;[x,fval]=fminsearch(...);%返回feval为最优函数值;[x,fval,exitflag]=fminsearch(...);%exitflag与fminbnd类似;[x,fval,exitflag,output]=fminsear
4、ch(...);%output与fminbnd类似;例子:要求函数f(x)=100*(x(2)-x(1)^2)^2+(1-x(1))^2的最小值,用fminsearch求解如下:fun=@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;[x,fval]=fminsearch(fun,[-1.2,1]); 3.fminunc与fminsearch一样,也是对多变量无约束函数优化。指令格式:x=fminunc(fun,x0)x=fminunc(fun,x0,options)[x,fval]=fminunc(...)[x,fval,
5、exitflag]=fminunc(...)[x,fval,exitflag,output]=fminunc(...)[x,fval,exitflag,output,grad]=fminunc(...);%grad为解x处的梯度值;[x,fval,exitflag,output,grad,hessian]=fminunc(...);%目标函数在解x处的海赛(Hessian)值。从算法上来讲,当函数的阶数大于2时,fminunc比fminsearch更有效,因为它采用了基于梯度的优化算法,而fminsearch采用的是Nelder-Mead型简单搜
6、寻法,但是,正因为这样,当函数不连续时,fminsearch的效果反而更好。 4.fmincon对有约束的多变量函数巡优。格式:x=fmincon(fun,x0,A,b)x=fmincon(fun,x0,A,b,Aeq,beq)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)[x,fval]=fmincon(...)[x,fval,exit
7、flag]=fmincon(...)[x,fval,exitflag,output]=fmincon(...)[x,fval,exitflag,output,lambda]=fmincon(...)[x,fval,exitflag,output,lambda,grad]=fmincon(...)[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(...)其中一些参数的定义见非线性有约束多变量函数的标准形式:minf(x)sub.to C(x)<=0 Ceq(x)=0
8、 A*x<=b Aeq*x=beq lb<=x<=ub其中非线性不等式C(x)和等式C