资源描述
武警部队大规模抗洪抢险中水的输送问题
【摘要】
随着自然灾害的频繁发生,武警部队的职责使命越来越重,肩负着维护社会稳定,保障人民安居乐业和财产安全的任务。因此,灾区救援尤显重要。但是在救灾任务中如何确保救灾水的顺利输送,需要我们用科学的方式,合理的统筹安排,搞好水源输送问题。本论文就将输送水源这一问题进行研究,对抗洪抢险中水的输送这一问题进行合理的假设以及简化,建立相应模型。之后,我们使用Matlab对该典型线性规划进行了求解与结果分析。结论显示,引水管理费的差异是导致获利大小的关键因素。最后,本文对该模型还可引入的影响条件进行了改进讨论,并换用LINGO对结果进行了验证。
关键词:自来水输送问题 数学规划 线性规划 LP Matlab
一、问题重述
某市有甲、乙、丙、丁四个受灾区,由A、B、C三个分队对灾区输送水。四个灾区每天必须的基本生活用水分别为30、70、10、10千吨,但三个送水分队每天最多只能分别送50、60、50千吨水。由于地理位置的差别,往各灾区送水过程中所需要的兵力不同(如表,其中C水库与丁区间无输水管道),其它管理费均为450元/千吨。各区用户每千吨收费900元。此外,各区用户都向公司申请了额外用水量,分别为每天50、70、20、40千吨。问三个分队应如何分配兵力输送水,才能用最少的兵力在最短时间内将水送到灾区?
引水管理费(元/千吨)
甲
乙
丙
丁
A
160
130
220
170
B
140
130
190
150
C
190
230
200
/
表1.1
二、问题假设
(一)输送到各区的自来水只要在基本用水与额外用水量以内,各区即全额付费。
三、符号说明
1. x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3:各水库向各居民区的供水量(详见表1.2)
2. u1,u2,u3:公司从A、B、C的获利
3. u:公司的总获利
四、问题分析、模型的建立与求解
1.问题的分析
该问题为典型的数学规划问题,决策变量、目标函数都较为明显,求解过程较为简单。
2.模型的建立
设A、B、C各分队向甲、乙、丙、丁四个受灾区的供水量如下,
供水量(千吨)
甲
乙
丙
丁
A
x1
x2
x3
x4
B
y1
y2
y3
y4
C
z1
z2
z3
/
表1.2
则
公司从A水库的获利为:
公司从B水库的获利为:
公司从C水库的获利为:
公司的总获利为:
限定条件如下,
各区每天的供水量:
甲区:
乙区:
丙区:
丁区:
水库每天供水量的限定:
A水库:
B水库:
C水库:
3.模型的求解
合并u1,u2,u3三式,得到总的目标函数:
限定条件为:
用Matlab写出线性规划程序求解(源程序详见附录)。因A矩阵,b矩阵的对应不等式为大于关系,为化为标准形式,故在linprog函数中A,b前加入负号。
且linprog函数默认求解的是线性规划模型的标准形式,即最小量。故在取值范围允许的情况下,在f矩阵前加负号,以求得负最小值。最终结果fval取相反数后即为所得结果。
4.结果分析
求解的结果如下:
各输送管道的供水量:
供水量(千吨)
甲
乙
丙
丁
A
0
50
0
0
B
0
50
0
10
C
40
0
10
/
表1.3
最大利润为47600元。
对该供水量规划与表1.1的引水管理费数据作对比,不难发现获得供水量的规划方案都集中在引水管理费最低的运输途径上。由此可以得出初步结论,即引水管理费的差异是引起规划结果变化的关键因素,在满足供水需求的基础上合理规划各管道供水量,使管理费降到最低,即可获得最大利润。模型求解的结果亦支持了这一结论。
五、模型的评价
优点
该模型较为简单明了,易于理解,原理清晰。
缺点
程序的可重用性差。
六、模型的推广与改进
在实际的供水问题中,各居民区的基本用水量在人口一定的情况下是满足小范围浮动规律的,但在满足基本供水的基础之上,各居民区的额外用水量亦应获得一定比例的满足。额外用水量的调控可简单地以各居民区申请额外用水量的比例来加以满足,亦可引入新的额外需求量浮动数据。
另外,该模型未考虑在受不同的日期影响下,基本用水量的起伏情况(如节假日用水量的激增,与离乡务工潮等周期性的大规模人口迁移来临后用水量的变化情况),以及各区域水价差异的调控政策等因素,故还有较大的改进空间。
七、附录
matlab源程序:
clear,clc
f=[290,320,230,280,310,320,260,300,260,250,220]
A=[1 0 0 0 1 0 0 0 1 0 0;
0 1 0 0 0 1 0 0 0 1 0;
0 0 1 0 0 0 1 0 0 0 1;
0 0 0 1 0 0 0 1 0 0 0;
1 0 0 0 1 0 0 0 1 0 0;
0 1 0 0 0 1 0 0 0 1 0;
0 0 1 0 0 0 1 0 0 0 1;
0 0 0 1 0 0 0 1 0 0 0]
b=[30;70;10;10;
-80;-140;-30;-50]
Aeq=[1 1 1 1 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 1 1 1]
beq=[50;60;50]
ub=[50 50 50 50 60 60 60 60 50 50 50]
lb=zeros(11,1)
[x,fval,exitflag,output,lambda]=linprog(-f,-A,-b,Aeq,beq,lb,ub)
f =
290 320 230 280 310 320 260 300 260 250 220
A =
1 0 0 0 1 0 0 0 1 0 0
0 1 0 0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1 0 0 0
1 0 0 0 1 0 0 0 1 0 0
0 1 0 0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1 0 0 0
b =
30
70
10
10
-80
-140
-30
-50
Aeq =
1 1 1 1 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 1 1 1
beq =
50
60
50
ub =
50 50 50 50 60 60 60 60 50 50 50
lb =
0
0
0
0
0
0
0
0
0
0
0
Optimization terminated.
x =
0.0000
50.0000
0.0000
0.0000
0.0000
50.0000
0.0000
10.0000
40.0000
0.0000
10.0000
fval =
-4.7600e+004
exitflag =
1
output =
iterations: 8
algorithm: 'large-scale: interior point'
cgiterations: 0
message: 'Optimization terminated.'
lambda =
ineqlin: [8x1 double]
eqlin: [3x1 double]
upper: [11x1 double]
lower: [11x1 double]
【参考文献】
[1] 姜启源,谢金星,叶俊. 数学模型[M].北京:高等教育出版社,2003.8
[2] 曾建军 MATLAB语言与数学建模[M]
展开阅读全文