180 likes | 379 Views
教学内容. 1 、用 Matlab 软件求线性规划;. 引例 — 生产计划问题. 生产炊事用具需要两种资源 --- 劳动力和原材料 , 某 公司制定生产计划 , 生产三种不同产品 , 生产管理部 门提供的数据如下 :. 每天供应原材料 200kg, 每天可供使用的劳动力为 150h, 求各种产品的日产量为多少时 , 总收益最大 ?. 问题的求解 :. 1 、确定决策变量 . 设生产 A 产品 x A ,B 产品 x B , C 产品 x C 2 、确定目标函数 . max Z= 4x A +2x B +3x C
E N D
教学内容 1、用Matlab软件求线性规划;
引例—生产计划问题 • 生产炊事用具需要两种资源---劳动力和原材料,某 • 公司制定生产计划,生产三种不同产品,生产管理部 • 门提供的数据如下: 每天供应原材料200kg,每天可供使用的劳动力为150h, 求各种产品的日产量为多少时,总收益最大?
问题的求解: • 1、确定决策变量.设生产A产品xA,B产品xB, C产品xC • 2、确定目标函数. max Z= 4xA+2xB +3xC • 3、确定约束条件.劳动力: 7xA+3xB +6xC≤150 • 原材料: 4xA+4xB +5xC≤200 • 非负性约束: xA≥0,xB≥0,xC≥0
线性规划的一般形式: 目标函数:max(min)z=c1x1+c2x2+c3x3+…+cnxn 约束条件:a11x1+a12x2+a13x3+…+a1nxn ≤(= ≥)b1 a21x1+a22x2+a23x3+…+a2nxn≤(=≥)b2 … … … … am1x1+am2x2+am3x3+…+amnxn≤(= ≥)bn 非负性约束:x1≥0,x2 ≥0,…,xn ≥0
二、线性规划模型的Matlab命令如下: 注意:[1] 若没有等式约束: Aeq·X=beq, 则令Aeq=[ ], beq=[ ] [2]其中x0表示初始点 命令:[x,f]=linprog(…)返回最优解x及x处的目标函数值
max Z= 4xA+2xB +3xC s.t. 7xA+3xB +6xC≤150 4xA+4xB +5xC≤200 xA≥0,xB≥0,xC≥0 解引例: Matlab命令如下: c=[4 2 3]; A=[7 3 6;4 4 5]; b=[150;200]; VUB=[ ];Aeq=[ ];beq=[ ]; VLB=[0;0;0]; [x,f]=linprog(c,A,b,Aeq,beq, VLB,VUB)
结果输出如下: Optimization terminated successfully. x = 0.0000 50.0000 0.0000 f = -100.0000 当A、B、C产品的日产量分别为0件,50件,0件时, 总收益为100元/件
例1 max 解 用Matlab求解过程如下: >>clear >> 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;0;0]; vub=[ ]; >> [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
Optimization terminated successfully. x = 1.0e+004 * 3.5000 0.5000 3.0000 0.0000 0.0000 0.0000 fval = -2.5000e+004 即:最优解为x=104(3.5,0.5,3,0,0,0),最优值为z=2.5×104
例2 解 用Matlab求解过程如下: >> clear >> 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)
Optimization terminated successfully. x = 30.0000 50.0000 40.0000 fval = 490.0000 即最优解为x=(30,50,40),最优值为z=490.
例3【任务分配问题】 某机加小组有甲、乙两台机床,可用于加工三种工件. 假定这两台车床的可用台时数分别为800和900,三种 工件的数量分别为400、600和500,且已知用三种不 同车床加工单位数量不同工件所需的台时数和加工费 用如下表.问怎样分配车床的加工任务,才能既满足 加工工件的要求,又使加工费用最低?
解 设在甲车床上加工工件1、2、3的数量分别为 在乙车床上加工工件1、2、3的数量分别为 可建立以下线性规划模型:
用Matlab求解如下 >>f = [13 9 10 11 12 8]; >>A = [0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3]; >>b = [800; 900]; >>Aeq=[1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1]; >>beq=[400; 600 ;500]; >>vlb = zeros(6,1); >>vub=[ ]; >>[x,fval] = linprog(f,A,b,Aeq,beq,vlb,vub)
结果为: x = 0.0000 600.0000 0.0000 400.0000 0.0000 500.0000 fval =1.3800e+004 即在甲机床上加工600个工件2,在乙机床上加工400个 工件1、500个工件3,可在满足条件的情况下使总加 工费最小为13800.
例4【人员聘任问题】 某皮鞋公司每日8小时的皮鞋产量不低于1800双.为了进 行质量控制,计划聘请两种不同水平的检验员.一级 检验员的标准为速度25双/小时,正确率98%,计时工 资4元/小时;二级检验员的标准为速度15双/小时,正确 率95%,计时工资3元/小时.检验员每错检一次,企业要 损失2元.为使总检验费用最省,该公司应聘一级、二级 检验员各几名?
解 设需要一级和二级检验员的人数分别为 人,则应付检验员的工资为 因检验员错检而造成的损失为 故目标函数为 约束条件为
线性规划模型 用Matlab求解如下: >>c = [40;36]; >>A=[-5 -3]; >>b=[-45]; >>Aeq=[ ]; >>beq=[ ]; >>vlb = zeros(2,1); >>vub=[9;15]; >> [x,fval] = linprog(c,A,b,Aeq,beq,vlb,vub) 结果为 x = 9.0000 0.0000 fval =360 即只需聘用9个一级检验员.