MATLAB解决数学模型中规划问题 下载本文

数学模型数学规划

1. 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:

1)若投资0.8万元可增加原料1千克,问应否作这项投资. 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.

解:

基本模型

决策变量:设生产x1百箱甲饮料,x2百箱乙饮料 目标函数:设获利为z=10x+9y万元

约束条件:原料和工人的数量均有限,6x1+5x2≤60,10x1+20x2≤150,又有其他条件所限

x1≤8

非负约束:x1,x2均不能为负值,即x1≥0,x2≥0 综上可得:Max z=10x1+9x2 s.t. 6x1+5x2≤60 10x1+20x2≤150 0≤x1≤8 0≤x2 编写Matlab程序如下: C=[-10 -9];

A=[6 5;10 20;1 0]; B=[60 150 8]; Aeq=[]; beq=[]; vlb=[0;0]; vub=[];

[x,fval]=linprog(C,A,B,Aeq,beq,vlb,vub) 运行结果如下: x =

6.4286 4.2857 fval = -102.8571

结果分析:若取整数箱饮料,则应该生产6百箱甲饮料,4百箱乙饮料,可最大获利96

万元。

进一步讨论:

1)若投资0.8万元可增加原料1千克,设增加原料x3千克,则 目标函数变为:z=10x1+9x2-0.8x3

约束条件变为:

s.t 6x1+5x2-x3≤60 10x1+20x2≤150 0≤x1≤8 0≤x2 0≤x3

Matlab程序如下:

C=[-10 -9 0.8];

A=[6 5 -1;10 20 0;1 0 0]; B=[60 150 8]; Aeq=[]; beq=[];

vlb=[0;0;0]; vub=[];

[x,fval]=linprog(C,A,B,Aeq,beq,vlb,vub) 运行结果如下: x =

8.0000 3.5000 5.5000 fval = -107.1000

结果分析:因为107.1000 >102.8571,所以投资增加原料可以使得最大获利增加,商家应

该考虑进行这项投资。

2)若每百箱甲饮料获利可增加1万元,则 目标函数变为:z=11x1+9x2

考虑解除甲饮料产量不超过8百箱的约束,则约束条件变为:

s.t 6x1+5x2≤60

10x1+20x2≤150 0≤x1 0≤x2

Matlab程序如下:

C=[-11 -9];

A=[6 5;10 20;1 0]; B=[60 150 8]; Aeq=[]; beq=[]; vlb=[0;0]; vub=[];

[x,fval]=linprog(C,A,B,Aeq,beq,vlb,vub) 运行结果如下: x =

8.0000

2.4000 fval = -109.6000

结果分析:因为109.6000 >107.1000 >102.8571,所以甲饮料的生产可以使得获利增加,

商家应该考虑改变生产计划。

2.某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台.每季度的生产费用为f(x)=ax+bx(元),其中x是该季生产的台数.若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元.已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低.讨论a、b、c变化对计划的影响,并作出合理的解释.

2

解:

基本模型

决策变量:设第1,2,3季度分别生产x1,x2,x3台发动机,第1,2季度末分别有存货

40-x1,x1+x2-100台,第3季度末无存货

目标函数:设总费用为z=a(x1+x2+x3)+b(x1^2+ x2^2 +x3^2)+c[(x1-40)+(x1+x2-100)] 约束条件:生产的发动机应该在第3季度末全部卖出,则有x1+x2+x3=180;同时要保证第1,

2季度能供货且有能力生产,要求x1≥40,x1+x2≥100,100≥x1,100≥x2,100≥x3

非负约束:x1,x2,x3≥0

综上可得:Max z= a(x1+x2+x3)+b(x1^2+ x2^2 +x3^2)+c[(x1-40)+(x1+x2-100)] s.t.x1+x2+x3=180 x1+x2≥100 x1≥40

0≤x1,x2,x3≤100

Matlab程序如下:

a=50; b=0.2; c=4;

H=diag(2*b*ones(1,3)); C=[a+2*c,a+c,a]; A=[-1,0,0;-1,-1,0]; B=[-40,-100]; Aeq=[1 1 1]; beq=[180]; vlb=[0 0 0];

vub=[100 100 100];

[x,z]=quadprog(H,C,A,B,Aeq,beq,vlb,vub) 运行结果如下: x =

50.0000

60.0000 70.0000 z =

11840

得到最优整数解,工厂应安排第1,2,3季度分别生产50,60,70台发动机以既满足合同又使总费用最低。

进一步讨论参数a,b,c对生产计划的影响:

1)、固定b,c不变,a变化(分别取a=20,60),仍运行上述程序,结果为: a 20 60 x1 50 50 x2 60 60 x3 70 70 z 5880 13080

2)、固定a,c不变,b变化(分别取b=0.15,0.5),结果为: b 0.15 0.5 c 2 6

x1 46.7 56 x1 55 45 x2 60 60 x2 60 60 x3 73.3 64 x3 65 75 z 10727 14544 z 11230 11310 3)、固定a,b不变,c变化(分别取c=2,6),结果为:

结果分析: 由于生产总量是恒定的,即x1+x2+x3=180,而z=a(x1+x2+x3)+b(x1^2+ x2^2

+x3^2)+c[(x1-40)+(x1+x2-100)],故a的变化不会影响生产计划;b是x的二次项的系数,它反映了生产费用。当b比较大时,生产费用占主导地位,x1,x2,x3应趋于相等;而当b较小时,贮存费占主导地位,此时应使每季度的贮存量较少。c反映了贮存费。当c较大时,贮存费占主导地位,此时应使贮存量尽量少;而当c较小时,生产费用占主导地位,x1,x2,x3应趋于相等。

3.一基金管理人的工作是,每天将现有的美元、英镑、马克、日元四种货币按当天汇率相互兑换,使在满足需要的条件下,按美元计算的价值最高.设某天的汇率、现有货币和当天需求如下:

美元 英镑 马克 日元 现有量需求量(?108) 美元 英镑 马克 日元 1 1.697 .57372 .007233 .58928 1 .33808 .00426 1.743 2.9579 1 .0126 138.3 234.7 79.346 1 8 1 8 0 (?108) 6 3 1 10