您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > Matlab优化工具箱函数简介
Matlab优化工具箱函数简介一维搜索问题fminbnd无约束极小值fminunc,fminsearch约束极小值fmincon线性规划linprog二次规划quadprog1.一维搜索问题优化工具箱函数fminbnd对应问题:minf(x)x1xx2调用格式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:先形成一个函数文件functionf=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则为此时的目标函数值。exitflag0表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag0表示计算不收敛,返回值output有3个分量,其中iterations是优化过程中迭代次数,funcCount是代入函数值的次数,algorithm是优化所采用的算法。例:clearfun='(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.2176fval=-1.1312exitflag=1output=iterations:13funcCount:13algorithm:'goldensectionsearch,parabolicinterpolation'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:求221122min()32fXxxxxX0=[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:clearfun='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对应数学模型:minF(X)subjectto:A*X=B,Aeq*X=Beq(linearconstraints)C(X)=0,Ceq(X)=0(nonlinearconstraints)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(….)例:某问题的目标函数为约束条件为:设计变量初始值为目标函数functionf=myfun(x)f=0.192457*1e-4*(x(2)+2)*x(1)^2*x(3);非线性约束function[c,ceq]=mycon(x)c(1)=350-163*x(1)^(-2.86)*x(3)^0.86;c(2)=10-0.4e-2*x(1)^(-4)*x(2)*x(3)^3;c(3)=(x(2)+1.5)*x(1)+0.44e-2*x(1)^(-4)*x(2)*x(3)^3-3.7*x(3);c(4)=375-0.356*1e6*x(1)*x(2)^(-1)*x(3)^(-2);c(5)=4-x(3)/x(1);ceq=0;主程序A=[-1001000-1001000-1001];b=[-1;4;-4.5;50;-10;30];x0=[2;5;25];lb=[0;0;0];[x,fval]=fmincon('myfun',x0,A,b,[],[],lb,[],'mycon')%或用下式:%[x,fval]=fmincon(@myfun,x0,A,b,[],[],lb,[],@mycon)总结:X=fmincon(fun,x0,A,b)X=fmincon(fun,x0,A,b,Aeq,Beq,Lb,Ub)X=fmincon(fun,x0,A,b,Aeq,Beq,Lb,Ub,nonlcon,options)[X,fval,exitflag,output]=fmincon(fun,x0,…)[X,fval,exitflag,output,lambda,grad,Hessian]=fmincon(fun,x0,…)参数中fun为目标函数,x0为变量的初始值,x为返回的满足要求的变量的值。A和b表示线性不等式约束,Aeq,Beq表示线性等式约束,Lb和Ub分别为变量的下界和上界约束,nonlcon表示非线性约束条件,options为控制优化过程的优化参数向量。返回值fval为目标函数。exitflag0表示优化结果收敛于解,exitflag=0表示优化超过了函数值的计算次数,exitflag0表示优化不收敛。lambda是拉格朗日乘子,显示那个约束条件有效。grad表示梯度,hessian表示汉森矩阵。4.线性规划优化函数linprogX=linprog(f,A,b)对应数学规划:minf'*xsubjectto:A*x=bX=linprog(f,A,b,Aeq,beq)增加等式约束Aeq*x=beq.X=linprog(f,A,b,Aeq,beq,LB,UB)设计变量有上下限X=linprog(f,A,b,Aeq,beq,LB,UB,X0)X0为初始迭代点[X,F]=linprog(….)5.二次规划x=quadprog(H,f,A,b)x=quadprog(H,f,A,b,Aeq,beq)x=quadprog(H,f,A,b,Aeq,beq,lb,ub)x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval]=quadprog(...)[x,fval,exitflag]=quadprog(...)[x,fval,exitflag,output]=quadprog(...)[x,fval,exitflag,output,lambda]=quadprog(...)其中:X=quadprog(H,f,A,b)对应问题为:min0.5*x'*H*x+f'*xsubjectto:A*x=bX=quadprog(H,f,A,b,Aeq,beq)增加等式约束Aeq*x=beq.X=quadprog(H,f,A,b,Aeq,beq,LB,UB)设计变量有上下限X=quadprog(H,f,A,b,Aeq,beq,LB,UB,X0)----X0为初始迭代点[X,FVAL]=quadprog(。。。)以上优化工具箱函数只供参考,不供考试中使用。
本文标题:Matlab优化工具箱函数简介
链接地址:https://www.777doc.com/doc-256192 .html