1、第10章Matlab在最优化问题中的应用第10章 Matlab在最优化问题中的应用 优化理论是一门实践性很强的学科,广泛应用于生产管理、军事指挥和科学试验等各种领域,Matlab优化工具箱提供了对各种优化问题的一个完整的解决方案。在数学上,所谓优化问题,就是求解如下形式的最优解: Min fun (x) Sub. to C.E. B.C.其中fun (x)称为目标函数,“Sub. to”为“subject to”的缩写,由其引导的部分称为约束条件。C.E.表示Condition Equations,即条件方程,可为等式方程,也可为不等式方程。B.C.表示Boundary Conditions,
2、即边界条件,用来约束自变量的求解域,以lbxub的形式给出。当C.E.为空时,此优化问题称为自由优化或无约束优化问题;当C.E.不空时,称为有约束优化或强约束优化问题。在优化问题中,根据变量、目标函数和约束函数的不同,可以将问题大致分为:线性优化 目标函数和约束函数均为线性函数。二次优化 目标函数为二次函数,而约束条件为线性方程。线性优化和二次优化统称为简单优化。非线性优化 目标函数为非二次的非线性函数,或约束条件为非线性方程。多目标优化 目标函数并非一个时,称为多目标优化问题。本章将对以上几类优化问题在Matlab中的实现作比较详细的讲解。另外还将介绍两个利用优化方法解非线性方程的函数。通过
3、本章的介绍,用户可以不必掌握艰涩的各种优化算法而轻易地解决一些常用的最优化问题了。10.1 线性规划问题线性规划问题即目标函数和约束条件均为线性函数的问题。其标准形式为:min Cxsub. To Ax = b x0其中C, b, 0Rn,ARmn,均为数值矩阵,xRn。若目标函数为:max Cx,则转换成:min Cx。标准形式的线性规划问题简称为LP(Linear Programming)问题。其它形式的线性规划问题经过适当的变换均可以化为此种标准形。线性规划问题虽然简单,但在工农业及其他生产部门中应用十分广泛。在Matlab中,线性规划问题由linprog函数求解。函数:linprog
4、%求解如下形式的线性规划问题: such that 其中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)x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)x,fval = linprog(.)x,fval,exitflag = linprog(.)x,fval,exitflag,output = linprog(.
5、)x,fval,exitflag,output,lambda = linprog(.)说明:x = linprog(f,A,b) 求解问题 min f*x,约束条件为A*x0 表示目标函数收敛于解x处;=0 表示已经达到函数评价或迭代的最大次数; f=-5;-4;-6; A=1 -1 1;3 2 4;3 2 0; b=20;42;30; lb=zeros(3,1); x,fval,exitflag,output,lambda=linprog(f,A,b,lb)Optimization terminated successfully.x = 0.0000 15.0000 3.0000fval =
6、 -78.0000exitflag = 1output = iterations: 6 cgiterations: 0 algorithm: lipsollambda = ineqlin: 3x1 double eqlin: 0x1 double upper: 3x1 double lower: 3x1 double lambda.ineqlinans = 0.0000 1.5000 0.5000 lambda.lowerans = 1.0000 0.0000 0.0000lambda向量中的非零元素表示哪些约束是主动约束。本例中,第2个和第3个不等式约束,第1个下界约束是主动约束(如这些解位
7、于约束边界上)。exitflag = 1表示过程正常收敛于解x处。例10-2 生产决策问题。某厂生产甲乙两种产品,已知制成一吨产品甲需资源A 3吨,资源B 4m3;制成一吨产品乙需资源A 2吨,资源B 6 m3;资源C 7个单位。若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200 m3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?解:令生产产品甲的数量为x1,生产产品甲的数量为x2。由题意可以建立下面的数学模型: sub. to 该模型中要求目标函数最大化,需要按照Matlab的要求进行转换,即目标函数为 在Matlab中实现: f
8、=-7;-5; A=3 2;4 6;0 7; b=90;200;210; lb=0;0; x,fval,exitflag,output,lambda=linprog(f,A,b,lb)Optimization terminated successfully.x = 14.0000 24.0000fval = -218.0000exitflag = 1output = iterations: 5 cgiterations: 0 algorithm: lipsollambda = ineqlin: 3x1 double eqlin: 0x1 double upper: 2x1 double low
9、er: 2x1 double由上可知,生产甲种产品14吨、乙种产品24吨可使创造的总经济价值最高为218万元。exitflag = 1表示过程正常收敛于解x处。例10-3 厂址选择问题。考虑A、B、C三地,每地都出产一定数量的原料也消耗一定数量的产品(见下表)。已知制成每吨产品需3吨原料,各地之间的距离为:AB:150km,AC:100km,BC:200km。假定每万吨原料运输1km的运价是5000元,每万吨产品运输1km的运价是6000元。由于地区条件的差异,在不同地点设厂的生产费用也不同。问究竟在哪些地方设厂,规模多大,才能使总费用最小?另外,由于其它条件限制,在B处建厂的规模(生产的产品
10、数量)不能超过5万吨。A、B、C三地出产原料、消耗产品情况表地点年产原料(万吨)年销产品(万吨)生产费用(万元/万吨)A207150B1613120C240100解:令为由i地运到j地的原料数量(万吨),为由i地运到j地的产品数量(万吨),i,j = 1,2,3(分别对应A、B、C三地)。根据题意,可以建立问题的数学模型(其中目标函数包括原料运输费、产品运输费和生产费用(万元):min sub.to 在Matlab中实现: f=75;75;50;50;100;100;150;240;210;120;160;220; A=1 -1 1 -1 0 0 3 3 0 0 0 0 -1 1 0 0 1
11、-1 0 0 3 3 0 0 0 0 -1 1 -1 1 0 0 0 0 3 3 0 0 0 0 0 0 0 0 1 1 0 0; b=20;16;24;5; Aeq=0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1; beq=7;13; lb=zeros(12,1); x,fval,exitflag,output,lambda=linprog(f,A,b,Aeq,beq,lb)Optimization terminated successfully.x = 0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 7.0000 0.0000 0.0000 5.0000 0.0000 8.0000fval = 3.4850e+003exitflag = 1output = iterations: 8 cgiterations: 0 algorithm: lipsollambda = ineqlin: 4x1 double eqlin: 2x1 double upper: 12x1 double lower: 12x1 doubl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1