您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 第五讲Matlab优化工具箱简介
第五讲Matlab优化工具箱简介---optimizationtoobox1.线性优化2.非线性优化3.极小化极大(Minmax)问题4.曲线拟合与插值线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB7.0解决的线性规划问题的标准形式为minsub.to:其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵.其它形式的线性规划问题都可经过适当变换化为此标准形式.在MATLAB5.x以上版中,线性规划问题LinearProgramming已用函数linprog取代了MATLAB5.x版中的lp函数.当然,由于版本的向下兼容性,一般说来,低版本中的函数在7.0版中仍可使用.nRxxfbxAbeqxAequbxlb5.1线性优化函数linprog格式x=linprog(f,A,b)%求minf'*xsub.to线性规划的最优解.x=linprog(f,A,b,Aeq,beq)%等式约束,若没有不等式约束,则A=[],b=[].x=linprog(f,A,b,Aeq,beq,lb,ub).%指定x的范围,若没有等式约束,则Aeq=[],beq=[].x=linprog(f,A,b,Aeq,beq,lb,ub,x0)%设置初值x0.x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数.bxA[x,fval]=linprog(…)%返回目标函数最优值,即fval=f'*x.[x,lambda,exitflag]=linprog(…)%lambda为解x的Lagrange乘子.[x,lambda,fval,exitflag]=linprog(…)%exitflag为终止迭代的错误条件.[x,fval,lambda,exitflag,output]=linprog(…)%output为关于优化的一些信息.说明:若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大次数,exitflag0表示函数不收敛于解x;若lambda=lower表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数.例5-1求下面的优化问题321x6x4x520xxx32142x4x2x332130x2x321321x0,x0,x0minsub.to.解:f=[-5;-4;-6];%写成行向量亦可!A=[1-11;324;320];b=[20;42;30];lb=zeros(3,1);[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)结果为:x=%最优解0.000015.00003.0000fval=%最优值-78.0000exitflag=%收敛1output=iterations:6%迭代次数cgiterations:0algorithm:'lipsol'%所使用规则lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[3x1double]lower:[3x1double]lambda.ineqlinans=0.00001.50000.5000lambda.lowerans=1.00000.00000.0000表明:不等约束条件2和3以及第1个下界是有效的.请写出下面线性规划的Matlab程序.c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];b=[850;700;100;900];Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)MATLAB求解优化问题的主要函数类型模型基本函数名一元函数极小MinF(x)s.t.x1xx2x=fminbnd(‘F’,x1,x2)无约束极小MinF(X)X=fminunc(‘F’,X0)X=fminsearch(‘F’,X0)线性规划MinXcTs.t.AX=bX=linprog(c,A,b)二次规划Min21xTHx+cTxs.t.Ax=bX=quadprog(H,c,A,b)约束极小(非线性规划)MinF(X)s.t.G(X)=0X=fmincon(‘FG’,X0)达到目标问题Minrs.t.F(x)-wr=goalX=fgoalattain(‘F’,x,goal,w)极小极大问题Minmax{Fi(x)}X{Fi(x)}s.t.G(x)=0X=fminimax(‘FG’,x0)优化函数的输入变量变量描述调用函数f线性规划的目标函数f*X或二次规划的目标函数X’*H*X+f*X中线性项的系数向量linprog,quadprogfun非线性优化的目标函数.fun必须为行命令对象或M文件、嵌入函数、或MEX文件的名称fminbnd,fminsearch,fminunc,fmincon,lsqcurvefit,lsqnonlin,fgoalattain,fminimaxH二次规划的目标函数X’*H*X+f*X中二次项的系数矩阵quadprogA,bA矩阵和b向量分别为线性不等式约束:bAX中的系数矩阵和右端向量linprog,quadprog,fgoalattain,fmincon,fminimaxAeq,beqAeq矩阵和beq向量分别为线性等式约束:beqXAeq中的系数矩阵和右端向量linprog,quadprog,fgoalattain,fmincon,fminimaxvlb,vubX的下限和上限向量:vlb≤X≤vublinprog,quadprog,fgoalattain,fmincon,fminimax,lsqcurvefit,lsqnonlinX0迭代初始点坐标除fminbnd外所有优化函数x1,x2函数最小化的区间fminbndoptions优化选项参数结构,定义用于优化函数的参数所有优化函数优化函数的输出变量变量描述调用函数x由优化函数求得的值.若exitflag0,则x为解;否则,x不是最终解,它只是迭代制止时优化过程的值所有优化函数fval解x处的目标函数值linprog,quadprog,fgoalattain,fmincon,fminimax,lsqcurvefit,lsqnonlin,fminbndexitflag描述退出条件:exitflag0,表目标函数收敛于解x处exitflag=0,表已达到函数评价或迭代的最大次数exitflag0,表目标函数不收敛output包含优化结果信息的输出结构.Iterations:迭代次数Algorithm:所采用的算法FuncCount:函数评价次数所有优化函数5.2非线性优化5.2.1有约束的一元函数的最小值单变量函数求最小值的标准形式为sub.to函数fminbnd格式x=fminbnd(fun,x1,x2)%返回自变量x在区间上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x=fminbnd(fun,x1,x2,options)[x,fval]=fminbnd(…)[x,fval,exitflag]=fminbnd(…)[x,fval,exitflag,output]=fminbnd(…))x(fminx21xxx例5-2计算下面函数在区间(0,1)内的最小值.x3exlogxxcosx)x(f解:[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)x=0.5223fval=0.3974exitflag=1output=iterations:9funcCount:9algorithm:'goldensectionsearch,parabolicinterpolation'1)3x()x(f3例5-3在[0,5]上求下面函数的最小值解:先自定义函数:在MATLAB编辑器中建立M文件为:functionf=myfun(x)f=(x-3).^2-1;保存为myfun.m,然后在命令窗口键入命令:x=fminbnd(@myfun,0,5)则结果显示为:x=35.2.2无约束多元函数最小值多元函数最小值的标准形式为其中:x为向量.命令利用函数fminsearch求无约束多元函数最小值.函数fminsearch格式x=fminsearch(fun,x0)%x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x=fminsearch(fun,x0,options)%options查optimset.[x,fval]=fminsearch(…)%最优点的函数值.[x,fval,exitflag]=fminsearch(…)%exitflag与单变量情形一致.[x,fval,exitflag,output]=fminsearch(…)%output与单变量情形一致.)x(fminx]x,,x,x[xn21222132131xxx10xx4x2y例5-4求的最小值点.解:X=fminsearch('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2',[0,0])结果为X=1.00160.8335或在MATLAB编辑器中建立函数文件.functionf=myfun(x)f=2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2;保存为myfun.m,在命令窗口键入X=fminsearch('myfun',[0,0])或X=fminsearch(@myfun,[0,0])结果为:X=1.00160.83355.2.3有约束的多元函数最小值非线性有约束的多元函数的标准形式为:sub.to其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数.在MATLAB5.x中,它的求解由函数constr实现.)x(fminx0)x(C0)x(CeqbxAbeqxAequbxlb函数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,exitflag]=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(…)参数说明:fun为目标函数,它可用前面的方法定义;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的
本文标题:第五讲Matlab优化工具箱简介
链接地址:https://www.777doc.com/doc-2085414 .html