《Matlab在目标规划问题中的应用(共6页).doc》由会员分享,可在线阅读,更多相关《Matlab在目标规划问题中的应用(共6页).doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 Matlab在目标规划问题中的应用问题提出:在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。优化问题无所不在,最优化方法的应用和研究也已经深入到了生产和科研的各个领域,如军事指挥、机械工程、运输调度、生产控制、经济规划与管理等,并取得了显著的经济效益和社会效益。这学期我们系统科学专业指挥类学员开设运筹学这门课,初步见识最优化方法的魅力。如今最优化方法的发展迅速,已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。利用Matla
2、b的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。在学习运筹学的过程中,我们了解所谓优化问题,就是求解如下形式的最优解: Min fun (x) Sub. to C.E. B.C.其中fun (x)称为目标函数,“Sub. to”为“subject to”的缩写,由其引导的部分称为约束条件。C.E.表示Condition Equations,即条件方程,可为等式方程,也可为不等式方程。B.C.表示Boundary Conditions,即边界条件,用来约束自变量的求解域,以lbxub的形式给出。当C.E.为空时,此优化问题称为自由优化或无约束优化问题;当C.E.不空时,称为有约束优
3、化或强约束优化问题。在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为:线性优化 目标函数和约束函数均为线性函数。二次优化 目标函数为二次函数,而约束条件为线性方程。线性优化和二次优化统称为简单优化。非线性优化 目标函数为非二次的非线性函数,或约束条件为非线性方程。多目标优化 目标函数并非一个时,称为多目标优化问题。线性规划等最优化方法只有一个目标函数,是单目标最优化方法。但是,在许多实际工程问题中,往往希望多个指标都达到最优值,所以它有多个目标函数。这种问题称为多目标最优化问题。在运筹学中,这类问题分析较难,而计算最为繁琐。多目标最优化问题的数学模型为 其中为目标函数向量。
4、此优化问题在Matlab中主要由函数fgoalattain来实现。数学模型: 其中,weight,goal,b,beq,lb和ub为向量,A和Aeq为矩阵,c (x),ceq (x)和F (x)为函数,返回向量。F (x),c (x) 和ceq (x)可以是非线性函数。Matlab方法: fgoalattain 求解多目标达到问题x = fgoalattain(fun,x0,goal,weight) 试图通过变化x来使目标函数fun达到goal指定的目标。初值为x0,weight参数指定权重。x = fgoalattain(fun,x0,goal,weight,A,b) 求解目标达到问题,约束
5、条件为线性不等式A*x = b。x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) 求解目标达到问题,除提供上面的线性不等式外,还提供线性等式Aeq*x = beq。当没有不等式存在时,设置A= 和b= 。x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub) 为设计变量x定义下界lb和上界ub集合,这样始终有lb = x = ub。x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) 将目标达到问题归结为nonlcon参数定义的
6、非线性不等式c (x)或非线性等式ceq (x)。fgoalattain优化的约束条件为c(x) goal=20 12; weight=20 12; x0=2 5; A=1 0;0 1; -1 -1; b=5 6 7; b=5 6 -7; lb=zeros(2,1); x,fval,attainfactor,exitflag=fgoalattain(Ex1,x0,goal,weight,A,b, , ,lb, )Optimization terminated successfully: Search direction less than 2*options.TolX and maximum
7、constraint violation is less than options.TolConActive Constraints: 5 6 7x = 2.9167 4.0833fval = 26.2500 15.7500attainfactor = 0.3125exitflag = 1实例2 某工厂因生产需要欲采购一种原材料,市场上的这种原料有两个等级,甲级单价2元/kg,乙级单价1元/kg。要求所花总费用不超过200元,购得原料总量不少于100kg,其中甲级原料不少于50kg,问如何确定最好的采购方案。解:设x1和x2分别为采购甲级和乙级原料的数量(kg),要求采购总费用尽量少,采购总量
8、尽量多,采购甲级原料尽量多。由题意建立下面的数学模型: min z1 = 2x1+x2 max z2 = x1+x2 max z3 = x1 2x1+x2200 x1+x2100 x150 x1,x20需要编写目标函数的M文件Ex2.m,返回目标计算值:function f=Ex2(x)f(1)=2*x(1)+x(2);f(2)=-x(1)-x(2);f(3)=-x(1);给定目标,权重按目标比例确定,给出初值,在Matlab中实现: goal=200 -100 -50; weight=200 -100 -50; x0=50 50; A=2 1;-1 -1;-1 0; b=200 -100 -
9、50; lb=zeros(2,1); x,fval,attainfactor,exitflag=fgoalattain(Ex2,x0,goal,weight,A,b, , ,lb, )Optimization terminated successfully: Search direction less than 2*options.TolX and maximum constraint violation is less than options.TolConActive Constraints: 4 7x = 50 50fval = 150 -100 -50attainfactor = 0exitflag = 1所以,最好的采购方案是采购甲级原料和乙级原料各50kg。此时采购总费用为150元,总重量为100kg,甲级原料总重量为50kg。后记:Matlab具有强大的数值计算、数值处理和图形处理能力。高效便捷,大大提高了数学建模的效率,丰富了数学建模的方法和手段。在运筹学线性规划问题的计算中,得到了很好的应用,通过运用Matlab很方便地解决在课堂上需要手工复杂计算的问题,提高了我学习专业课和计算机的兴趣和信心。专心-专注-专业
限制150内