1、线性规划,数学建模实验,问题一 : 任务分配问题:某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?,两个引例,解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:,解答,问题二: 某厂每日8小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的
2、标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15小时/件,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?,解 设需要一级和二级检验员的人数分别为x1、x2人, 则应付检验员的工资为:,因检验员错检而造成的损失为:,故目标函数为:,约束条件为:,线性规划模型:,解答,返 回,1.线性规划的标准形式:,用单纯法求解时,常将标准形式化为:,2. 线性规划的基本算法单纯形法,线性规划的基本算法单纯形法,引入松弛变量x3, x4, x5, 将不等式化为等式, 即单纯形标准形:,显然A的秩r
3、an(A)=3, 任取3个线性无关的列向量,如P3 P4 P5称为 一组基, 记为B. 其余列向量称为非基, 记为N .,于是 f = cBxB + cNxN , Ax = BxB + NxN = b,则 xB = B-1b-B-1NxN , f = cBB-1b + (cN cBB-1N)xN,若可行基进一步满足: cN cBB-1N0, 即: cBB-1N - cN0 则对一切可行解x, 必有f(x) cBB-1b, 此时称基可行解x = (B-1b, 0) T 为最优解.,3. 最优解的存在性定理,将A的列向量重排次序成A = (B, N), 相应x = (xB, xN) T, c =
4、(cB, cN) 基对应的变量xB称为基变量, 非基对应的变量xN称为非基变量.,定理1 如果线性规划(1)有可行解,那么一定有基可行解.,定理2 如果线性规划(1)有最优解,那么一定存在一个基可行解是最优解.,4. 基可行解是最优解的判定准则,因为 f = cBB-1b + (cN cBB-1N)xN, 即 f - 0xB + (cBB-1N- cN )xN = cBB-1b,5.基可行解的改进,改进方法:,返 回,用MATLAB解线性规划问题,1、模型:,命令:x=linprog(C,A,b),命令:x=linprog(C,A,b,Aeq,beq),注意:若没有不等式: 存在,则令 A=
5、,b= .,2、模型:,命令 x=linprog(C,A,b,Aeq,beq, VLB,VUB),注意: 若没有等式约束: , 则令 Aeq= , beq= .,4、命令:x,fval=linprog() 最优解及处的目标函数值fval.,解 编写M文件xxgh1.m如下: c=-0.4 -0.28 -0.32 -0.72 -0.64 -0.6;A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08;b=850;700;100;900;Aeq=; beq=;vlb=0;0;0;0
6、;0;0; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub),To Matlab (xxgh1),解: 编写M文件xxgh2.m如下:c=6 3 4;A=0 1 0;b=50;Aeq=1 1 1;beq=120;vlb=30,0,20;vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub),To Matlab (xxgh2),例3 问题一的解答,问题,编写M文件xxgh3.m如下:f = 13 9 10 11 12 8; A = 0.4 1.1 1 0 0 00 0 0 0.5 1.2 1.3; b = 800; 900;
7、Aeq=1 0 0 1 0 00 1 0 0 1 00 0 1 0 0 1; beq=400 600 500; vlb = zeros(6,1); vub=; x,fval = linprog(f,A,b,Aeq,beq,vlb,vub),To Matlab (xxgh3),结果: x =0.0000600.00000.0000400.00000.0000500.0000 fval =1.3800e+004即在甲机床上加工600个工件2,在乙机床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费最小为13800。,例2 问题二的解答,问题,改写为:,编写M文件xxgh4.m如
8、下:c = 40;36; A=-5 -3; b=-45; Aeq=; beq=; vlb = zeros(2,1); vub=9;15; %调用linprog函数: x,fval = linprog(c,A,b,Aeq,beq,vlb,vub),To Matlab (xxgh4),结果为: x =9.00000.0000 fval =360即只需聘用9个一级检验员。,注:本问题应还有一个约束条件:x1、x2取整数。故它是一个整数线性规划问题。这里把它当成一个线性规划来解,求得其最优解刚好是整数:x1=9,x2=0,故它就是该整数规划的最优解。若用线性规划解法求得的最优解不是整数,将其取整后不一定是相应整数规划的最优解,这样的整数规划应用专门的方法求解。,返 回,实验作业,某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:1)若投资0.8万元可增加原料1千克,问应否作这项投资.2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.,返 回,