M精编b数学建模论文自来水输送问题的数学规划方案.docx
《M精编b数学建模论文自来水输送问题的数学规划方案.docx》由会员分享,可在线阅读,更多相关《M精编b数学建模论文自来水输送问题的数学规划方案.docx(9页珍藏版)》请在冰豆网上搜索。
![M精编b数学建模论文自来水输送问题的数学规划方案.docx](https://file1.bdocx.com/fileroot1/2023-7/17/fc97884b-a26a-457a-b139-a77beac4ca5f/fc97884b-a26a-457a-b139-a77beac4ca5f1.gif)
M精编b数学建模论文自来水输送问题的数学规划方案
ThismodelpaperwasrevisedbyLINDAonDecember15,2012.
M精编b数学建模论文自来水输送问题的数学规划方案
自来水输送问题的数学规划方案
【摘要】
本文考虑在简单情况下自来水输送的数学规划问题,模型较为简单。
之后,我们使用Matlab对该典型线性规划(LP)进行了求解与结果分析。
结论显示,引水管理费的差异是导致获利大小的关键因素。
最后,本文对该模型还可引入的影响条件进行了改进讨论,并换用LINGO对结果进行了验证。
关键词:
自来水输送问题数学规划线性规划LPMatlab
一、问题重述
某市有甲、乙、丙、丁四个居民区,自来水由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.x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3:
各水库向各居民区的供水量(详见表)
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
/
表
则
公司从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
/
表
最大利润为47600元。
对该供水量规划与表的引水管理费数据作对比,不难发现获得供水量的规划方案都集中在引水管理费最低的运输途径上。
由此可以得出初步结论,即引水管理费的差异是引起规划结果变化的关键因素,在满足供水需求的基础上合理规划各管道供水量,使管理费降到最低,即可获得最大利润。
模型求解的结果亦支持了这一结论。
五、模型的评价
优点
该模型较为简单明了,易于理解,原理清晰。
缺点
程序的可重用性差。
六、模型的推广与改进
在实际的供水问题中,各居民区的基本用水量在人口一定的情况下是满足小范围浮动规律的,但在满足基本供水的基础之上,各居民区的额外用水量亦应获得一定比例的满足。
额外用水量的调控可简单地以各居民区申请额外用水量的比例来加以满足,亦可引入新的额外需求量浮动数据。
另外,该模型未考虑在受不同的日期影响下,基本用水量的起伏情况(如节假日用水量的激增,与离乡务工潮等周期性的大规模人口迁移来临后用水量的变化情况),以及各区域水价差异的调控政策等因素,故还有较大的改进空间。
七、附录
matlab源程序:
clear,clc
f=[290,320,230,280,310,320,260,300,260,250,220]
A=[10001000100;
01000100010;
00100010001;
00010001000;
10001000100;
01000100010;
00100010001;
00010001000]
b=[30;70;10;10;
-80;-140;-30;-50]
Aeq=[11110000000;00001111000;00000000111]
beq=[50;60;50]
ub=[5050505060606060505050]
lb=zeros(11,1)
[x,fval,exitflag,output,lambda]=linprog(-f,-A,-b,Aeq,beq,lb,ub)
f=
290320230280310320260300260250220
A=
10001000100
01000100010
00100010001
00010001000
10001000100
01000100010
00100010001
00010001000
b=
30
70
10
10
-80
-140
-30
-50
Aeq=
11110000000
00001111000
00000000111
beq=
50
60
50
ub=
5050505060606060505050
lb=
0
0
0
0
0
0
0
0
0
0
0
Optimizationterminated.
x=
fval=
+004
exitflag=
1
output=
iterations:
8
algorithm:
'large-scale:
interiorpoint'
cgiterations:
0
message:
'Optimizationterminated.'
lambda=
ineqlin:
[8x1double]
eqlin:
[3x1double]
upper:
[11x1double]
lower:
[11x1double]
【参考文献】
[1]姜启源,谢金星,叶俊.数学模型[M].北京:
高等教育出版社,
[2]曾建军MATLAB语言与数学建模[M]