数学建模作业9
作者:18数51 孙山峰 18074004 发布时间:2020-05-08 10:24:10 浏览次数:88
例2(河流污染与进化问题)
(1)设x1表示化工厂1每天处理的污水量(万m³/d),x2表示化工厂2每天每天处理的污水量(万m³/d)
(2)在化工厂1和化工厂2之间,河水中污水含量不得超过0.2%,则有
(2-x1)/500 <= 2/1000, 即x1>=1
河水流经第二个化工厂后,河水中的污水含量仍不得超过0.2%,则有
[0.8(2-x1)+(1.4-x2)]/700 <= 2/1000,即0.8x1+x2 >= 1.6
由于每个化工厂每天处理的污水量不会大于每天的排放量,故应有
x1 <= 2, x2 <= 1.4
(3)记f表示两个化工厂处理污水的总费用,则有
f=1000x1+800x2
因此,该问题数学模型为
min f=1000x1+800x2
x1>=1
0.8x1+x2 >= 1.6
x1 <= 2
x2 <= 1.4
x1,x2>=0
化为一般形式得:
min f=1000x1+800x2
-x1 <= -1
-0.8x1 - x2 <= -1.6
x1 <= 2
x2<= 1.4
x1,x2>=0
MATLAB代码如下:
c=[1000;800]
A=[-1 0;-0.8 -1;1 0;0 1]
b=[-1;-1.6;2;1.4]
lb=zeros(2,1)
[x,z,exitflag,output,lambda] = linprog(c,A,b,[],[],lb)
运行结果为:
c =
1000
800
A =
-1.0000 0
-0.8000 -1.0000
1.0000 0
0 1.0000
b =
-1.0000
-1.6000
2.0000
1.4000
lb =
0
0
Optimization terminated.
x =
1.0000
0.8000
z =
1.6400e+03
exitflag =
1
output =
iterations: 8
algorithm: 'interior-point-legacy'
cgiterations: 0
message: 'Optimization terminated.'
constrviolation: 0
firstorderopt: 3.1337e-12
lambda =
ineqlin: [4x1 double]
eqlin: [0x1 double]
upper: [2x1 double]
lower: [2x1 double]
故最优解为x1=1,x2=0.8,最少费用为1000*1+800*0.8=1640元
例4(运输问题)
设某公司有三个生产地点A1,A2,A3生产某种物资,将运到三个销售地B1,B2,B3,进行销售。已知公司的初始运输方案如表1所示,三个厂到各销售点每吨物资的运价如表2所示,是确定运输费用最省的运输方案
|
B1 |
B2 |
B3 |
产量ai |
A1 |
8 |
3 |
3 |
15 |
A2 |
5 |
6 |
5 |
18 |
A3 |
5 |
3 |
8 |
17 |
销量bj |
18 |
12 |
16 |
|
(表1:初始运输方案 单位:t)
|
B1 |
B2 |
B3 |
A1 |
50 |
90 |
20 |
A2 |
30 |
10 |
70 |
A3 |
60 |
20 |
80 |
(表2:单位运价 单位:元/t)
由表1和表2的数据可知:
总产量为:15+18+17=50
总销量为:18+12+16=46
本题为产>销问题
初始运送方案总运费为:S=8*50+3*20+5*30+6*10+5*10+5*60+3*20+8*80=1990元
对这个问题,虚设一个销地,令其销量为产销量之差
B4=(15+18+17)-(18+12+16)=4
该列单价运价为0,即可化为产销平衡问题,如下表:
|
B1 |
B2 |
B3 |
B4 |
产量ai |
A1 |
50 |
90 |
20 |
0 |
15 |
A2 |
30 |
10 |
70 |
0 |
18 |
A3 |
60 |
20 |
80 |
0 |
17 |
销量bj |
18 |
12 |
16 |
4 |
|
构建数学模型,假设产地A1,A2,A3向B1,B2,B3,B4配送的运输量为X1,……X12
|
B1 |
B2 |
B3 |
B4 |
产量ai |
A1 |
X1 |
X2 |
X3 |
X4 |
15 |
A2 |
X5 |
X6 |
X7 |
X8 |
18 |
A3 |
X9 |
X10 |
X11 |
X12 |
17 |
销量bj |
18 |
12 |
16 |
4 |
|
设运费为S,构建线性方程组如下:
minS=50*X1+90*X2+20*X3+0*X4+30*X5+10*X6+70*X7+0*X8+60*X9+20*X10+80*X11+0*X12
X1+X2+X3+X4=15
X5+X6+X7+X8=18
X9+X10+X11+X12=17
X1+X5+X9=18
X2+X6+X8=12
X3+X7+X11=16
X4+X8+X12=4
Xi>=0(i=1,2……,12)
MATLAB代码如下:
F=[50 90 20 0 30 10 70 0 60 20 80 0]
m=[1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1]
n=[15 18 17 18 12 16 4]
M=[0 0 0 0 0 0 0 0 0 0 0 0]
[v,e]=linprog(F,[],[],m,n,M)
x=reshape(v,4,3)
x=x'
结果为:
F =
1 至 10 列
50 90 20 0 30 10 70 0 60 20
11 至 12 列
80 0
m =
1 至 10 列
1 1 1 1 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 1 1
1 0 0 0 1 0 0 0 1 0
0 1 0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 0
11 至 12 列
0 0
0 0
1 1
0 0
0 0
1 0
0 1
n =
15 18 17 18 12 16 4
M =
1 至 10 列
0 0 0 0 0 0 0 0 0 0
11 至 12 列
0 0
Optimization terminated.
v =
0.0000
0.0000
15.0000
0.0000
18.0000
0.0000
0.0000
0.0000
0.0000
12.0000
1.0000
4.0000
e =
1.1600e+03
x =
0.0000 18.0000 0.0000
0.0000 0.0000 12.0000
15.0000 0.0000 1.0000
0.0000 0.0000 4.0000
x =
0.0000 0.0000 15.0000 0.0000
18.0000 0.0000 0.0000 0.0000
0.0000 12.0000 1.0000 4.0000
由此我们可以得出最优运输方案如下:
|
B1 |
B2 |
B3 |
B4 |
产量ai |
A1 |
0 |
0 |
15 |
0 |
15 |
A2 |
18 |
0 |
0 |
0 |
18 |
A3 |
0 |
12 |
1 |
4 |
17 |
销量bj |
18 |
12 |
16 |
4 |
|
总运费为:1160元
例7(分配问题)
某车间有甲、乙两台机床加工A,B,C三种工件,在一个生产周期内甲、乙机床的工作机时分别为800、900,需要三种工件的数量分别为400、600、500,且已知用两种不同车床加工不同工件所需的机时数成本如下表,问怎样安排加工任务,才能使得既完成加工任务,又能使总的加工成本最少?
加工机时 |
甲 |
乙 |
所需件数 |
A |
0.4 |
0.5 |
400 |
B |
1.1 |
1.2 |
600 |
C |
1 |
1.3 |
500 |
可用机时 |
800 |
900 |
|
(加工机时表)
加工成本 |
甲 |
乙 |
A |
13 |
11 |
B |
9 |
12 |
C |
10 |
8 |
(加工成本表)
解:设三种工件在甲机床加工件数分别为x1,x2,x3,在乙机床加工件数分别为x4,x5,x6,设总成本为S
可建立线性规划模型:
minS=13x1+9x2+10x3+11x4+12x5+8x6
x1+x4=400
x2+x5=600
x3+x6=500
0.4x1+1.1x2+x3 <= 800
0.5x3+1.2x5+1.3x6 <= 900
xi >= 0(i=1,2,3,4,5,6)
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]
lb=zeros(6,1)
[x,fval]=linprog(f,A,b,Aeq,beq,lb)
运行结果为:
f =
13 9 10 11 12 8
A =
0.4000 1.1000 1.0000 0 0 0
0 0 0 0.5000 1.2000 1.3000
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
lb =
0
0
0
0
0
0
Optimization terminated.
x =
0.0000
600.0000
0.0000
400.0000
0.0000
500.0000
fval =
1.3800e+04
故最优解为在甲机床上生产600件工件B,在乙机床上生产400个工件A,500个工件C,总加工费用为13800