您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > MATLAB在最优化问题中的应用
《MATLAB语言》课程论文MATLAB在最优化问题中的应用;姓名:黎飞飞学号:12010245380专业:通信工程班级:(1)班指导老师:汤全武学院:物理电气信息学院完成日期:2011-12-241Matlab在最优化问题中的应用(黎飞飞120102453802010级通信1班)【摘要】实际生活中我们有许多地方需要用到数学中的一些最值运算,而有些问题我们无法进行计算,因此就有了优化理论这门学科,优化理论是一门实践性很强的学科,广泛应用于生产管理、军事指挥和科学试验等各种领域。为了更好的学习这门课程,为我们所用,Matlab优化工具箱提供了对各种优化问题的一个完整的解决方案,可用于解决工程中的最优化问题,包括非线性方程求解、极小值问题,最小二乘问题等。[关键字]非线性优化线形优化二次优化多目标优化MATLAB语言一、问题的提出在企业生产和日常生活中,人们总是希望用最少的人力、物力、财力和时间去办更多的事,这就是所谓的最优化问题。在企业生产过程中,生产计划安排直接影响到企业的经济效益,而生产计划本质就是在目标一定时,对于人力、时间和物质资源的优化配置问题。在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为:·线性优化目标函数和约束函数均为线性函数。·二次优化目标函数为二次函数,而约束条件为线性方程。线性优化和二次优化统称为简单优化。·非线性优化目标函数为非二次的非线性函数,或约束条件为非线性方程。·多目标优化目标函数并非一个时,称为多目标优化问题。二、单目标问题2.1线性优化问题线性规划问题即目标函数和约束条件均为线性函数的问题。其标准形式为:minC’xsub.To0xbAx其中C,b,0∈Rn,A∈Rmn,均为数值矩阵,x∈Rn。若目标函数为:maxC’x,则转换成:min–C’x。在Matlab中,线性规划问题由linprog函数求解。函数:linprog功能:求解如下形式的线性规划问题:xfTxminsuchthatubxIbbeqxAeqbxA其中f,x,b,beq,lb,ub为向量,A,Aeq为矩阵。格式:x=linprog(f,A,b)x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb,ub,x0)2x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)[x,fval]=linprog(...)[x,fval,exitflag]=linprog(...)[x,fval,exitflag,output]=linprog(...)[x,fval,exitflag,output,lambda]=linprog(...)1求解下列优化问题:目标函数321645)(xxxxf约束条件3,2,12132132100030234242320xxxxxxxxxxx解:在Matlab命令窗口键入:f=[-5;-4;-6];%建立目标函数矩阵A=[1-11;324;320];%建立系数矩阵b=[20;42;30];%建立条件矩阵lb=zeros(3,1);%建立空矩阵[x,fval,exitflag,]=linprog(f,A,b)%调用函数Exiting:Oneormoreoftheresiduals,dualitygap,ortotalrelativeerrorhasstalled:thedualappearstobeinfeasible(andtheprimalunbounded).(TheprimalresidualTolFun=1.00e-008.)运行结果:x=1.0e+012*-1.66822.50240.0000fval=-1.6682e+012exitflag=-3由上可知,函数f(x)的最小值在x1=1.0e+012*(-1.6682),x2=1.0e+012*2.5024,x3=0时达到,结果是-1.6682e+012.exitflag=-3表示目标函数不收敛。2生产决策问题某厂生产甲乙两种产品,已知制成一吨产品甲需资源A3吨,资源B4m3;制成一吨产品乙需资源A2吨,资源B6m3;资源C7个单位。若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200m3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?解:令生产产品甲的数量为x1,生产产品甲的数量为x2。由题意可以建立下面的数学模型:2157maxxxz3约束条件0,021072006490232122121xxxxxxx该模型中要求目标函数最大化,需要按照Matlab的要求进行转换,即目标函数为2157minxxz在Matlab中实现:f=[-7;-5];%建立目标函数的系数矩阵A=[32;46;07];%建立系数矩阵b=[90;200;210];%建立条件矩阵lb=[0;0];%建立空矩阵[x,fval,exitflag]=linprog(f,A,b)%调用函数Optimizationterminated.运行结果:x=14.000024.0000fval=-218.0000exitflag=1由上可知,生产甲种产品14吨、乙种产品24吨可使创造的总经济价值最高为218万元。exitflag=1表示过程正常收敛于解x处。2.2二次优化问题数学模型:如果某非线性规划的目标函数为自变量的二次函数,约束条件全是线性函数,就称这种规划为二次规划。其数学模型为xfHxxTTx21minSuchthatubxIbbeqxAeqbxA其中,H,A和Aeq为矩阵,f,b,beq,lb,ub和x为向量。函数:quadprog功能:求解二次规划问题。格式: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=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options,p1,p2,...)[x,fval]=quadprog(...)[x,fval,exitflag]=quadprog(...)[x,fval,exitflag,output]=quadprog(...)4[x,fval,exitflag,output,lambda]=quadprog(...)3.求解下面的最优化问题:目标函数212122216221)(xxxxxxxf约束条件2,12121210032222xxxxxxxx解:首先,目标函数写成下面的矩阵形式:2111H,62f,21xxx在Matlab中实现:H=[1-1;-12];%建立H矩阵f=[-2;-6];%建立f矩阵A=[11;-12;21];%建立系数矩阵b=[2;2;3];%建立条件矩阵lb=zeros(2,1);%建立空矩阵[x,fval,exitflag]=quadprog(H,f,A,b)%调用函数Warning:Large-scalemethoddoesnotcurrentlysolvethisproblemformulation,usingmedium-scalemethodinstead.Inquadprogat267Optimizationterminated.运行结果:x=0.66671.3333fval=-8.2222exitflag=1由上可知,x1=0.6667,x2=1.3333时,函数f(x)达到最小值,结果是-8.2222,exitflag=1表示过程正常收敛于解x处。2.3非线性优化问题函数:fmincon功能:求多变量有约束非线性函数的最小值。数学模型:)(minxfxSuchthatubxIbbeqxAeqbxAxceqxc0)(0)(5其中,x,b,beq,lb和ub为向量,A和Aeq为矩阵,)(xc和)(xceq为函数,返回标量。)(xf,)(xc和)(xceq可以是非线性函数。格式: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=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)[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(...)4求表面积为常数150m2的体积最大的长方体体积解:设长方体的长、宽、高分别为x1、x2和x3,根据题意得到下面的数学模型:目标函数minz=-x1x2x3约束条件2(x2x3+x3x1+x1x2)=150由于约束条件是非线性等式约束,所以需要编写一个约束条件M文件Ex1012c.m:function[c,ceq]=Ex1012c(x)%建立文件ceq=x(2)*x(3)+x(3)*x(1)+x(1)*x(2)-75;%非线性条件在Matlab中实现:x0=[4;5;6];%假定初值lb=zeros(3,1);%建立空矩阵[x,fval,exitflag,output,lambda]=fmincon('-x(1)*x(2)*x(3)',x0,[],[],[],[],lb,[],@Ex1012c)%调用函数运行结果:x=5.00005.00005.0000fval=-125.0000exitflag=1output=iterations:7funcCount:38stepsize:1algorithm:'medium-scale:SQP,Quasi-Newton,line-search'firstorderopt:[]cgiterations:[]lambda=lower:[3x1double]upper:[3x1double]eqlin:[0x1double]eqnonlin:2.5000ineqlin:[0x1double]ineqnonlin:[0x1double]优化结果显示过程成功收敛,搜索方向小于两倍options.TolX,最大违约值小于options.TolCon,主动约束为1个。6问题的解为x(1)=x(2)=x(3)=5.0000m,最大体积为125.0000m3。exitflag=1,表示过程成功收敛于解x处。output输出变量显示了收敛过程中的迭代次数、目标函数计算次数、步长、算法等信息。lambda则包含模型信息。5求解下列优化问题:目标函数min2121222164222xxxxxx约束条件2,121221000255xxxxxx初始点x0=[0;0.75]。解:由于约束条件中有非线性不等式,所以需要编写一个约束条件M文件Ex1013c.m:func
本文标题:MATLAB在最优化问题中的应用
链接地址:https://www.777doc.com/doc-5204150 .html