数学建模自来水运输与货物装运.docx
《数学建模自来水运输与货物装运.docx》由会员分享,可在线阅读,更多相关《数学建模自来水运输与货物装运.docx(19页珍藏版)》请在冰豆网上搜索。
数学建模自来水运输与货物装运
数学建模课堂作业
第一题:
自来水运输问题
【问题分析】
分配供水量是安排从三个水库向四个区送水的方案,目标是获利最多。
而从题目给出的数据看,A,B,C三个水库的供水量160千吨,不超过四个区的基本生活用水量与额外用水量之和300千吨,因而总能全部卖出并获利,于是自来水公司每天的总收入是900*(50+60+50)=144000元,与送水方案无关。
所以,要使利润最大,只需要使引水管理费最小即可。
另外,送水方案自然要受三个水库的供应量和四个区的需求量的限制。
【模型建立】
很明显,决策变量为A,B,C三个水库(i=1,2,3),分别向甲、乙、丙、丁四个区(j=1,2,3,4),的供水量。
设水库i向j区的日供水量为Xij。
由于C水库与丁区之间没有输水管道,即Xij=0,设水库i向j区的引水管理费为Cij因此只有11个决策变量。
由上分析,问题的目标可以从获利最多转化为引水管理费最少。
于是有:
Min
;
约束条件有两类:
一类是水库的供水量限制,另一类是各区的需求量限制。
由于供水量总能卖出并获利,水库的供应量限制可以表示为
;
;
;
考虑到各区的基本生活用水量与额外用水量,需求量限制可以表示为:
;
;
;
;
【模型求解】
利用LINGO软件求解,程序为:
model:
!
3供应点4居民区运输问题;
sets:
waters/w1..w3/:
capacity;
vendors/v1..v4/:
demand1,demand2;
links(waters,vendors):
cost,volume;
endsets
!
目标函数;
min=@sum(links:
cost*volume);
!
需求约束;
@for(vendors(J):
@sum(waters(I):
volume(I,J))>=demand1(J));
@for(vendors(J):
@sum(waters(I):
volume(I,J))<=demand2(J));
!
供应约束;
@for(waters(I):
@sum(vendors(J):
volume(I,J))=capacity(I));
!
这里是数据;
data:
capacity=506050;
demand1=30701010;
demand2=801403050;
cost=160130220170
140130190150
19020023010000;
enddata
end
得到结果为:
Globaloptimalsolutionfound.
Objectivevalue:
24400.00
Totalsolveriterations:
13
VariableValueReducedCost
CAPACITY(W1)50.000000.000000
CAPACITY(W2)60.000000.000000
CAPACITY(W3)50.000000.000000
DEMAND1(V1)30.000000.000000
DEMAND1(V2)70.000000.000000
DEMAND1(V3)10.000000.000000
DEMAND1(V4)10.000000.000000
DEMAND2(V1)80.000000.000000
DEMAND2(V2)140.00000.000000
DEMAND2(V3)30.000000.000000
DEMAND2(V4)50.000000.000000
COST(W1,V1)160.00000.000000
COST(W1,V2)130.00000.000000
COST(W1,V3)220.00000.000000
COST(W1,V4)170.00000.000000
COST(W2,V1)140.00000.000000
COST(W2,V2)130.00000.000000
COST(W2,V3)190.00000.000000
COST(W2,V4)150.00000.000000
COST(W3,V1)190.00000.000000
COST(W3,V2)200.00000.000000
COST(W3,V3)230.00000.000000
COST(W3,V4)10000.000.000000
VOLUME(W1,V1)0.00000030.00000
VOLUME(W1,V2)50.000000.000000
VOLUME(W1,V3)0.00000050.00000
VOLUME(W1,V4)0.00000020.00000
VOLUME(W2,V1)0.00000010.00000
VOLUME(W2,V2)50.000000.000000
VOLUME(W2,V3)0.00000020.00000
VOLUME(W2,V4)10.000000.000000
VOLUME(W3,V1)40.000000.000000
VOLUME(W3,V2)0.00000010.00000
VOLUME(W3,V3)10.000000.000000
VOLUME(W3,V4)0.0000009790.000
RowSlackorSurplusDualPrice
124400.00-1.000000
210.000000.000000
330.000000.000000
40.000000-40.00000
50.000000-20.00000
640.000000.000000
740.000000.000000
820.000000.000000
940.000000.000000
100.000000-130.0000
110.000000-130.0000
120.000000-190.0000
送水方案是:
A水库向一区供水50千吨,B水库向乙、丁区分别供水50,10千吨,C水库向甲、丙分别供水40,10千吨。
引水管理费为24400元,利润为144000-72000-24400=47600元。
讨论:
如果A,B,C三个水库每天的最大供水量都提高一倍,则公司总供水能力为320千吨,大于总需求量300千吨,水库供水量不能全部卖出,因而不能像前面那样,将获利最多转为引水管理费最少。
此时我们首先需要计算A,B,C三个水库分别向甲、乙、丙、丁四个区供应每千吨水的净利润,即从收入900元中减去其他管理费450元,再减去引水管理费,得到表二。
净利润(元/千吨)
甲
乙
丙
丁
A
290
320
230
280
B
310
320
260
300
C
260
250
2200
/
于是决策目标是:
Max
其中Cij表示第i个水库向第j个区供水的净利润.
由于水库供水量不能全部卖出,所以上面约束应改为:
;
;
;
将上式构成的线性规划模型输入LINGO求解得到:
model:
!
3供应点4居民区运输问题;
sets:
waters/w1..w3/:
capacity;
vendors/v1..v4/:
demand;
links(waters,vendors):
cost,volume;
endsets
!
目标函数;
max=@sum(links:
cost*volume);
!
需求约束;
@for(vendors(J):
@sum(waters(I):
volume(I,J))=demand(J));
!
供应约束;
@for(waters(I):
@sum(vendors(J):
volume(I,J))<=capacity(I));
!
这里是数据;
data:
capacity=100120100;
demand=801403050;
cost=290320230280
310320260300
2602502200;
enddata
end
得到结果为:
Globaloptimalsolutionfound.
Objectivevalue:
88700.00
Totalsolveriterations:
6
VariableValueReducedCost
CAPACITY(W1)100.00000.000000
CAPACITY(W2)120.00000.000000
CAPACITY(W3)100.00000.000000
DEMAND(V1)80.000000.000000
DEMAND(V2)140.00000.000000
DEMAND(V3)30.000000.000000
DEMAND(V4)50.000000.000000
COST(W1,V1)290.00000.000000
COST(W1,V2)320.00000.000000
COST(W1,V3)230.00000.000000
COST(W1,V4)280.00000.000000
COST(W2,V1)310.00000.000000
COST(W2,V2)320.00000.000000
COST(W2,V3)260.00000.000000
COST(W2,V4)300.00000.000000
COST(W3,V1)260.00000.000000
COST(W3,V2)250.00000.000000
COST(W3,V3)220.00000.000000
COST(W3,V4)0.0000000.000000
VOLUME(W1,V1)0.00000020.00000
VOLUME(W1,V2)100.00000.000000
VOLUME(W1,V3)0.00000040.00000
VOLUME(W1,V4)0.00000020.00000
VOLUME(W2,V1)30.000000.000000
VOLUME(W2,V2)40.000000.000000
VOLUME(W2,V3)0.00000010.00000
VOLUME(W2,V4)50.000000.000000
VOLUME(W3,V1)50.000000.000000
VOLUME(W3,V2)0.00000020.00000
VOLUME(W3,V3)30.000000.000000
VOLUME(W3,V4)0.000000250.0000
RowSlackorSurplusDualPrice
188700.001.000000
20.000000260.0000
30.000000270.0000
40.000000220.0000
50.000000250.0000
60.00000050.00000
70.00000050.00000
820.000000.000000
送水方案为:
A水库向乙区供水100千吨,B水库向甲、乙、丁区分别供水30,40,50千吨,C水库向甲、丙、区分别供水50,30千吨。
总利润为88700元。
评注:
本题考虑的是将某种物资从若干供应点运往一些需求点,在供需量约束条件下使总费用最小,或总利润最大,这类问题一般称为运输问题,是线性规划应用最广泛的领域之一。
在标准的运输问题中,供需量通常是平衡的,即供应点的总供应量等于需求点的总需求量。
本题中供需量不平衡,但这并不会引起本质的区别,一样可以方便地建立线性规划模型求解。
第二题货机装运
【问题分析】
本题中,目标是使得在本次飞行中获利最大。
货仓的重量限制、体积限制表中已给出。
同时也已知了各货物的种类、重量、所占空间以及所获利润,由此可以表示出决策变量、目标函数以及约束条件,通过LINGO软件即可求出结果。
【模型假设】
问题中没有对货物装运提出其它要求,我们可做如下假设:
1)每种货物可以分割到任意小;
2)每种货物可以在一个或多个货舱中任意分布;
3)多种货物可以混装,并保证不留空隙。
【模型建立】
决策变量:
用Xij表示第i种货物装入第j个货舱重量(吨),货舱j=1,2,3分别表示前仓、中仓、后仓.Ci表示第i种货物所得的利润(元/吨),Di表示第i种货物所占的空间。
决策目标是最大利润,即
Max
;
约束条件包括以下四个方面:
1)供装载的四种货物的总重量的约束,即
;
;
;
;
2)三个货舱的重量限制,即
;
;
;
3)三个货舱的空间限制,即
;
;
;
4)三个货舱装入重量的平衡约束,即
【模型求解】
将以上模型输入LINGO中求解,程序为:
model:
sets:
huowu/w1..w4/:
product1,product2,profit;
huocang/c1..c3/:
limit1,limit2;
links(huowu,huocang):
c,x;
endsets
data:
product1=18152312;
product2=480650580390;
profit=3100380035002850;
limit1=680087005300;
limit2=10168;
enddata
max=@sum(links(i,j):
profit(i)*x(i,j));
@for(huowu(i):
@sum(huocang(j):
c(i,j))<=1);
@for(huocang(j):
@sum(huowu(i):
c(i,j))<=4);
@for(huocang(j):
@sum(huowu(i):
x(i,j))@for(huocang(j):
@sum(huowu(i):
product2(i)*x(i,j))<=limit1(j));
@for(huowu(i):
@sum(huocang(j):
x(i,j))<=product1(i));
@for(huocang(j)|j#lt#3:
@sum(huowu(i):
x(i,j))/limit2(j)=@sum(huowu(i):
x(i,j+1))/limit2(j+1));
运行结果为:
Globaloptimalsolutionfound.
Objectivevalue:
121515.8
Totalsolveriterations:
10
VariableValueReducedCost
PRODUCT1(W1)18.000000.000000
PRODUCT1(W2)15.000000.000000
PRODUCT1(W3)23.000000.000000
PRODUCT1(W4)12.000000.000000
PRODUCT2(W1)480.00000.000000
PRODUCT2(W2)650.00000.000000
PRODUCT2(W3)580.00000.000000
PRODUCT2(W4)390.00000.000000
PROFIT(W1)3100.0000.000000
PROFIT(W2)3800.0000.000000
PROFIT(W3)3500.0000.000000
PROFIT(W4)2850.0000.000000
LIMIT1(C1)6800.0000.000000
LIMIT1(C2)8700.0000.000000
LIMIT1(C3)5300.0000.000000
LIMIT2(C1)10.000000.000000
LIMIT2(C2)16.000000.000000
LIMIT2(C3)8.0000000.000000
C(W1,C1)0.0000000.000000
C(W1,C2)0.0000000.000000
C(W1,C3)0.0000000.000000
C(W2,C1)0.0000000.000000
C(W2,C2)0.0000000.000000
C(W2,C3)0.0000000.000000
C(W3,C1)0.0000000.000000
C(W3,C2)0.0000000.000000
C(W3,C3)0.0000000.000000
C(W4,C1)0.0000000.000000
C(W4,C2)0.0000000.000000
C(W4,C3)0.0000000.000000
X(W1,C1)0.000000400.0000
X(W1,C2)0.00000057.89474
X(W1,C3)0.000000400.0000
X(W2,C1)10.000000.000000
X(W2,C2)0.000000239.4737
X(W2,C3)5.0000000.000000
X(W3,C1)0.0000000.000000
X(W3,C2)12.947370.000000
X(W3,C3)3.0000000.000000
X(W4,C1)0.000000650.0000
X(W4,C2)3.0526320.000000
X(W4,C3)0.000000650.0000
RowSlackorSurplusDualPrice
1121515.81.000000
21.0000000.000000
31.0000000.000000
41.0000000.000000
51.0000000.000000
64.0000000.000000
74.0000000.000000
84.0000000.000000
90.0000000.000000
100.0000005453.289
110.0000000.000000
12300.00000.000000
130.0000003.421053
14310.00000.000000
1518.000000.000000
160.000000300.0000
177.0526320.000000
188.9473680.000000
190.00000035000.00
200.000000-28000.00
实际上不妨将所得到的最优解做四舍五入,结果为货物2装入前仓10吨,装入后仓5吨,货物3装入中仓13吨,装入后仓3吨,货物4装入中仓3吨。
最大利润约121516元。
若限制条件,每种货物只能放在一个货仓,该如何求解问题。
【模型建立】
决策变量:
用Xij表示第i种货物装入第j个货舱重量(吨),货舱j=1,2,3分别表示前仓、中仓、后仓.Ci表示第i种货物所得的利润(元/吨),Di表示第i种货物所占的空间。
决策目标是最大利润,即
Max
;
约束条件包括以下四个方面:
2)供装载的四种货物的总重量的约束,即
;
;
;
;
2)三个货舱的重量限制,即
;
;
;
3)三个货舱的空间限制,即
;
;
;
4)三个货舱装入重量的平衡约束,即
5)为了表示每种货物只能放在一个货仓,故引入0-1变量
,
=1表示第i种货物装入第j个货舱。
=0则表示第i种货物未装入第j个货舱,则有:
=0,1
【模型求解】
将以上模型输入LINGO中求解,程序为:
model:
sets:
huowu/w1..w4/:
product1,product2,profit;
huocang/c1..c3/:
limit1,limit2;
links(huowu,huocang):
c,x;
endsets
data:
product1=18152312;
product2=480650580390;
profit=3100380035002850;
limit1=680087005300;
limit2=10168;
enddata
max=@sum(links(i,j):
profit(i)*x(i,j));
@for(links:
@bin(c));
@for(huowu(i):
@sum(huocang(j):
c(i,j))<=1);
@for(huocang(j):
@sum(huowu(i):
c(i,j))<=4);
@for(huocang(j):
@sum(huowu(i):
x(i,j))@for(huocang(j):
@sum(huowu(i):
product2(i)*x(i,j))<=limit1(j));
@for(huowu(i):
@sum(huocang(j):
x(i,j))<=product1(i));
@for(links:
x=c*x);
@for(huocang(j)|j#lt#3:
@sum(huowu(i):
x(i,j))/limit2(j)=@sum(huowu(i):
x(i,j+1))/limit2(j+1));
end
运行结果为:
Localoptimalsolutionfound.
Objectivevalue:
110300.0
Extendedsolversteps:
0
Totalsolveriterations:
48
VariableValueReducedCost
PRODUCT1(W1)18.000000.000000
PRODUCT1(W2)15.000000.000000
PRODUCT1(W3)23.000000.000000
PRODUCT