1、 Matlab 在目标规划问题中的应用问题提出:在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。优化问题无所不在,最优化方法的应用和研究也已经深入到了生产和科研的各个领域,如军事指挥、机械工程、运输调度、生产控制、经济规划与管理等,并取得了显著的经济效益和社会效益。这学期我们系统科学专业指挥类学员开设运筹学这门课,初步见识最优化方法的魅力。如今最优化方法的发展迅速,已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 利用 Matlab 的优化工具箱,可
2、以求解线性规划、非线性规划和多目标规划问题。在学习运筹学的过程中,我们了解所谓优化问题,就是求解如下形式的最优解: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、优化问题。在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为:线性优化 目标函数和约束函数均为线性函数。二次优化 目标函数为二次函数,而约束条件为线性方程。线性优化和二次优化统称为简单优化。非线性优化 目标函数为非二次的非线性函数,或约束条件为非线性方程。多目标优化 目标函数并非一个时,称为多目标优化问题。线性规划等最优化方法只有一个目标函数,是单目标最优化方法。但是,在许多实际工程问题中,往往希望多个指标都达到最优值,所以它有多个目标函数。这种问题称为多目标最优化问题。在运筹学中,这类问题分析较难,而计算最为繁琐。多目标最优化问题的数学模型为)(minxFR1,20miGi
4、 xi ,)( ui其中 为目标函数向量。)(xF此优化问题在 Matlab 中主要由函数 fgoalattain 来实现。数学模型:,minzexgoalwiht)(F0c)(xeqbAuxl其中 ,weight ,goal,b,beq,lb 和 ub 为向量, A 和 Aeq 为矩阵,c (x),xceq (x)和 F (x)为函数,返回向量。F (x),c (x) 和 ceq (x)可以是非线性函数。Matlab 方法: fgoalattain 求解多目标达到问题x = fgoalattain(fun,x0,goal,weight) 试图通过变化 x 来使目标函数 fun 达到goal
5、指定的目标。初值为 x0,weight 参数指定权重。x = fgoalattain(fun,x0,goal,weight,A,b) 求解目标达到问题,约束条件为线性不等式 A*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 direct
6、ion less than 2*options.TolX andmaximum constraint violation is less than options.TolConActive Constraints:567x =2.9167 4.0833fval =26.2500 15.7500attainfactor =0.3125exitflag =1实例 2 某工厂因生产需要欲采购一种原材料,市场上的这种原料有两个等级,甲级单价 2 元/kg,乙级单价 1 元/kg。要求所花总费用不超过 200 元,购得原料总量不少于 100kg,其中甲级原料不少于 50kg,问如何确定最好的采购方案。解
7、:设 x1 和 x2 分别为采购甲级和乙级原料的数量(kg) ,要求采购总费用尽量少,采购总量尽量多,采购甲级原料尽量多。由题意建立下面的数学模型:min z1 = 2x1+x2max z2 = x1+x2max z3 = x12x1+x2200x1+x2100x150x1,x 20需要编写目标函数的 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
8、 -50; x0=50 50; A=2 1;-1 -1;-1 0; b=200 -100 -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 andmaximum constraint violation is less than options.TolConActive Constraints:47x =50 50fval =150 -100 -50attainfactor =0exitflag =1所以,最好的采购方案是采购甲级原料和乙级原料各 50kg。此时采购总费用为 150 元,总重量为 100kg,甲级原料总重量为 50kg。后记:Matlab 具有强大的数值计算、数值处理和图形处理能力。高效便捷,大大提高了数学建模的效率,丰富了数学建模的方法和手段。在运筹学线性规划问题的计算中,得到了很好的应用,通过运用 Matlab 很方便地解决在课堂上需要手工复杂计算的问题,提高了我学习专业课和计算机的兴趣和信心。