数学建模之输油管的布置Word下载.docx
《数学建模之输油管的布置Word下载.docx》由会员分享,可在线阅读,更多相关《数学建模之输油管的布置Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
输油管的布置
摘要
“输油管的布置”数学建模的目的是建立起数学模型寻求使铺设管道费用最低
的设计方案。
但是不同于普遍的最短路径问题,他受各种实际情况影响,例如,
城区和郊区费用的不同,采用共用管线和非公用管线价格的不同等都会对设计产
生影响。
我们基于最短路径模型,对于题目实际情况进行研究和分析,对三个问
题都设计了合适的数学模型做出了相应的解答和处理。
问题一:
此问只需考虑两个炼油厂和铁路之间的位置关系,根据位置的不同
设计相应的模型,我们根据光的传播原理和两大间线段最短的原则设计了最短路
径模型,在不考虑共用管线价格差异时,只需考虑如何设计最短路线即可得到最
低费用的设计方案;
在考虑共用管线差价的情况下,只需建立两个未知变量,当
代入已知常量,就可以解出变量的值。
问题二:
此问给出了两个加油站的具体位置,在此基础上增加了城区和郊区
铺设管线单位价格的不同,我们进一步改进了数学模型,由于铺设费用存在差异,
输油管在城区和郊区的铺设将不会是直线方式,基于该模型,我们在模型基础上
建立直角坐标系,设计2个变量就可以列出最低费用函数,利用C++编辑程序求
借出最小值。
问题三:
该问题的解答方法和问题二类似,但由于城郊管线和共用管线三者
的价格均不一样,我们利用问题二中设计的数学模型进行改进,在坐标系内增加
一个变量,建立最低费用函数,并且利用C++解出最低费用和路径坐标。
关键字:
c++程序设计光的传播原理数学模型最低费用
一、问题的重述
某油田计划在铁路线一侧建造两家炼油厂,同时在铁路线上增建一个车站,用来运送成品油。
由于这种模式具有一定的普遍性,油田设计院希望建立管线建设费用最省的一般数学模型与方法。
1.针对两炼油厂到铁路线距离和两炼油厂间距离的各种不同情形,提出你的设计方案。
在方案设计时,若有共用管线,应考虑共用管线费用与非共用管线费用相同或不同的情形。
2.设计院目前需对复杂情形进行具体的设计。
两炼油厂的具体位置由附图所示,其中A厂位于郊区(图中的I区域),B厂位于城区(图中的II区域),两个区域的分界线用图中的虚线表示。
图中各字母表示的距离(单位:
千米)分别为a=5,b=8,c=15,l=20。
若所有管线的铺设费用均为每千米7.2万元。
铺设在城区的管线还需增加拆迁和工程补偿等附加费用,为对此项附加费用进行估计,聘请三家工程咨询公司(其中公司一具有甲级资质,公司二和公司三具有乙级资质)进行了估算。
估算结果如下表所示:
工程咨询公司
公司一
公司二
公司三
附加费用(万元/千米)
21
24
20
请为设计院给出管线布置方案及相应的费用。
3.在该实际问题中,为进一步节省费用,可以根据炼油厂的生产能力,选用相适应的油管。
这时的管线铺设费用将分别降为输送A厂成品油的每千米5.6万元,输送B厂成品油的每千米6.0万元,共用管线费用为每千米7.2万元,拆迁等附加费用同上。
请给出管线最佳布置方案及相应的费用。
二、模型假设
1、管道均以直线段铺设,不考虑地形影响。
2、不考虑管道的接头处费用。
3、忽略铺设过程中的劳动力费用,只考虑管线费用。
4、将两炼油厂和车站近似看作三个点。
5、将铁路近似看作一条直线。
6、不考虑施工之中的意外情况,所有工作均可顺利进行。
7、共用管线的价格如果和非公用管线不一致,则共用管线价格大于任意一条非公用管
线价格,小于两条非公用管线价格之和。
8、根据查询资料我们可以为所给出的三个工程咨询公司进行分权,甲级资质分权0.4,
乙级资质分权为0.3。
9、假设共用管线与非共用管线存在价格差时,共用管线价格大于非共用管线价格低于
两倍的非共用管线价格。
10、默认A炼油厂距离铁路比B炼油厂近。
三、符号说明
W:
方案的经费
a:
A厂到铁路的距离
b:
B厂到铁路的距离
c:
A厂到城郊分界线的距离
l:
A、B两厂之间的铁路长度
m:
共用管道的费用(万元/千米)
n:
非共用管道费用(万元/千米)
L:
为管线总长度
h:
共用管线的长度
x1:
车站的横坐标(问题二)
y1:
城郊分界处拐点的纵坐标(问题二)
x2:
共用管线和非共用管线交点的横坐标(问题三)
y2:
城郊分界处拐点的纵坐标(问题三)
p:
附加费用的估计值。
四、问题分析
首先要考虑两个工厂是否在铁路的同一侧,如果两个工厂在铁路的同
一侧那么一定要考虑共用管线的问题。
如果不在铁路的同一侧那么就没有必要考
虑共用管线这个问题。
当两个工厂在铁路两边时,根据两点之间线段最短的原理
只要求出两厂之间的距离,就可以得到最低费用设计;
当两个工厂在铁路的同一
侧时,且当没有共用管线时,只需利用光的传播原理可得到最短路径;
在考虑到
有共用管线时,需建立方程求解最低消费设计方案。
这个问题从市区和郊区分两个部分分析,火车站建立在郊区费用要少;
因为郊区非共用管线与共用管线的费用相同,所以可以用最短路径的方法来考虑,同时又要求费用最小,可以通过方程解出最低费用及对应的铺设线路。
通过建立坐标系设两个点的坐标,同时也是表示出管线的长度,然
后再与各自的费用之积确定总的费用,从而算出两点的坐标值。
即确定了管线的
路线。
五、模型的建立与求解
5.1关于问题1的模型建立与求解
对于管线布置的分析,分为两种情况:
1、两个炼油厂在铁路两侧,如图所示:
两炼油厂A,B直接的连线与铁路的交点E为车站位置此时L=
此时为最低费用设计方案。
2、两个炼油厂位于铁路的同一侧,则需考虑有无共用管线两种情况:
a.当没有公用管线时,此时找出两厂与铁路交点连线的最近路线即可,如图:
过铁路CD作A点的对称点A’,连接A’B,与铁路相交于点E即为车站所在位置,此时L=此时为最低费用设计方案。
b.当存在共用管线时:
A、当共用管线与非共用管线价格相同,均为m时:
设计方案如图所示
假设公共管线长度为h;
(0<h<b)
x=a-h
(1)
L=+h
(2)
L=+h(3)
W=Lm=m*+m*h(4)
当实际情况下已知a,b,l的情况下,上式只存在一个未知数h,再结合h的范围即可得出最低费用的设计方案。
B、当共用管线价格为m,非共用管线价格为n;
(n<m<2n)
设计方案如图所示:
W=h*m+n*+n*
其中:
0<x<l;
0<h<b;
实际情况下的费用可以根据已知道的常量a、b、l再结合x、h的取值范围可以得出最小费用。
5.2关于问题2的模型建立与求解
因为在城区和郊区铁路管线的费用相同,而在城区有拆迁和工程补偿等费用,所以城区和郊区要分为两部分来考虑。
我们从三家咨询公司给出的三个方案来看,我们考虑到甲级资质和乙级资质的评估准确性,所以我们对三家公司进行分权,甲级资质的权重为40%,乙级资质的权重为30%
所需要的附加费预估值为p=0.4*21+0.3*24+0.3*20=21.6(万元/千米)
由于城区管线铺设所花费的费用比较大,所以车站站点建设在郊区才是相
对节约经费的。
我们根据共用管线与非共用价格相同设计出如下图所示模型:
如上图所示建立坐标系,在城区部分我们可以得到每千米铺设管线费用为21.6+7.2=28.8万元。
W=7.2*(h+)+28.8*
(1)
x=5-h
(2)
W=7.2*(h+)+28.8*(3)
其中0<h<8
0<y1<8
利用C++程序编辑器编辑程序求解:
最小费用W=283.201万。
5.3关于问题3的模型建立与求解
根据城郊管线之间以及共用管线之间存在价格差异,我们建立出如下图的模型:
G为B管线与分界线之间的交点;
F为A,B管线间的交点;
A厂到F点距离:
AF=;
GF之间距离:
FG=;
B厂到G点距离:
BG=;
共用管道FE距离为h;
0<h<8;
5<x2<20;
0<y2<8;
总费用:
W=5.6*AF+6*GF+7.2*EF+(21.6+6)*BG
(1)
W=5.6*+6*+7.2*h+27.6*
得到最低的费用为W=252.474万元。
六、模型的评价与应用
从实际的生活出发输油管道是石油生产过程中的重要环节,石油工业始终离不
开输油管线的铺设问题。
它是炼油厂、车站、用户、产地之间的重要环节。
优点:
利用数学模型的建立,是复杂的实际问题简单化,同时又与实际情况相
联系。
建立合适的数学模型可以使设计达到最优的目的,使解决复杂的时间问题
更加简单化,更加得节约和快捷。
缺点:
该模型进行了很多假设,比如忽略接头问题,和施工费用问题,以及忽
略了地形对施工的影响。
在计算过程中由于C++程序编程循环过于庞大,即采用
由粗至细的运算方法,存在一定误差。
应用:
模型在实际运用中,不仅仅可以用在成品油运输管布置,还可运用到原
油输送和污水处理,电线电缆的布置还有公路铁路的修建等一些列的线路布置问
题。
附录
问题二的C++程序片段
#include<
iostream.h>
math.h>
voidmain()
{
doubleh,y1,w;
doublea,b;
h=0;
inti,j;
doublemin=10000;
for(j=0;
j<
=80000;
j++)
{h=h+0.0001;
y1=0;
for(i=0;
i<
i++)
{y1=y1+0.0001;
w=28.8*sqrt((8-y1)*(8-y1)+25)+(sqrt((y1+5-2*h)*(y1+5-2*h)+225)+h)*7.2;
if(min>
w)
min=w;
a=h;
b=y1;
}
}
}
cout<
<
"
w="
min<
'
\n'
;
h="
a<
\n