地铁站规划.docx
- 文档编号:10932256
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:20
- 大小:127.42KB
地铁站规划.docx
《地铁站规划.docx》由会员分享,可在线阅读,更多相关《地铁站规划.docx(20页珍藏版)》请在冰豆网上搜索。
地铁站规划
地铁线路设计规划
摘要
随着中国城市化进程飞速发展,人们的通勤方式日新月异。
人们从以前的步行的交通方式开始发展,出现了自行车,公交车,私家车等。
到现在,城市规模越来越大,交通情况越来严峻。
道路上的严重阻塞,导致原来方便快捷的交通方式失去了原有的优点。
人们不得不又要去寻找更为方便快捷的交通方式。
这时候地铁出现了。
地铁是交通方式上的变革。
和以往的交通方式不一样,它并不需要占用陆上其他交通方式的线路,它拥有只属于它自己的交通线路,交通站点。
它不影响城市地上事物,它是一条穿梭于地下的一条巨龙。
但是,正由于它的方便快捷,它穿梭于地底下,产生了高昂的建造费用,我们因此不得不考虑到各站点的分布问题,以修建最少的地铁站点减少费用,满足最多人们的使用需求。
本文正是讨论城市区域中的地铁站点、线路建造问题。
给出的问题是关于在一个不规则的城市范围内选地铁站,然后用最短的路线把各站间地铁站连通。
因此我们得出了以下的思路:
1.每一个地铁站可以当作一个原点,它的覆盖范围为一个圆,然后以某种规律的排布方式使城市被完全覆盖后每个圆排布后的有效覆盖面积最大。
2.分析城市的图形,以1中找到的排布方式,以最少的图形填满该城市图形。
图中排布的点即为所求的地铁站。
3.根据所找到的地铁站,按最少生成树的办法(prim)寻找最短的路线。
关键字:
prim算法完全覆盖有效覆盖面积覆盖方式
问题重述:
某城市中心城区(如图1所示)规划修建地铁,要求从该中心城区任意一点出发,到最近的地铁站的直线距离不超过800米,试通过建立模型解决下列问题:
(1)最少要建多少个地铁站?
(2)按最少数量的地铁站分布,设计出最佳的地铁线路(要求不同的地铁线路换乘能互相到达)。
图1:
某城市中心城区的简化图,其中AGCB为梯形,DEFG为矩形,坐标A(0.5,4.8), B(0,2),BC=7.5,AG=3.5, DE=2.8,EF=7.3。
图中每单位长度表示实际距离3km。
问题分析:
本题中规划的中心城区是一个不规则图形,所以地铁分布时不能简单的按规律建立。
我们设想先建立一种拥有最佳有效面积的地铁点。
首先,我们以地铁站为圆心,800m为半斤画圆再在圆内画内接多边形,希望最后能将两个圆内内接多边形重叠之后重叠面积尽量少。
同时,为了使内接多边形能尽量的无缝地接在一起,
内接多边形角度必须能整除360,n边形内角和(n-2)*180,内接多边形必须能整除360,只有n=3,4,6。
要使地铁站尽可能地少,则内接多边形的面积要达到最大。
n=3时,
n=4时,S=2r2
n=6时,
因此选择内接六边形进行连接。
接下来就是不断地在以原来六边形的基础上生成新的六边形直到完全覆盖城市为止。
如下图可以把六边形覆盖过程看成是由第一个六边形A先沿30度方向平移生成新的六边形直到生成的新六边形完全离开城区。
然后将A沿y轴向上平移得到新的六边形B,再将B沿30度方向平移得到新的六边形直到新的六边形完全离开城区………以此类推就可以将整个城区用六边形覆盖。
我们组用C++模拟这个覆盖过程。
至于设计出最佳地铁线路,可以转换为求最小生成树问题。
模型假设:
1.每个地铁站近似地看成一个质点
2.城区的任何地方都可以建造地铁
模型建立与求解:
首先用matlab求各点坐标,进而求出各个直线的解析式。
用C++编程求得最少需要221个六边形覆盖城区,我们组将每个六边形的中点作为作为建立地铁站的位置。
以下为221个地铁站的坐标:
060
866.9282
880.7846
873.8564
866.9282
894.641
887.7128
880.7846
873.8564
866.9282
16101.569
1694.641
1687.7128
1680.7846
1673.8564
1666.9282
16115.426
16108.497
16101.569
1694.641
1687.7128
1680.7846
1673.8564
1666.9282
16129.282
16122.354
16115.426
16108.497
16101.569
1694.641
1687.7128
1680.7846
1673.8564
1666.9282
16143.138
16136.21
16129.282
16122.354
16115.426
16108.497
16101.569
1694.641
1687.7128
1680.7846
1673.8564
1666.9282
1660
32143.138
32136.21
32129.282
32122.354
32115.426
32108.497
32101.569
3294.641
3287.7128
3280.7846
3273.8564
3266.9282
3260
48143.138
48136.21
48129.282
48122.354
48115.426
48108.497
48101.569
4894.641
4887.7128
4880.7846
4873.8564
4866.9282
4860
64143.138
64136.21
64129.282
64122.354
64115.426
64108.497
64101.569
6494.641
6487.7128
6480.7846
6473.8564
6466.9282
6460
80143.138
80136.21
80129.282
80122.354
80115.426
80108.497
80101.569
8094.641
8087.7128
8080.7846
8073.8564
8066.9282
8060
96143.138
96136.21
96129.282
96122.354
96115.426
96108.497
96101.569
9694.641
9687.7128
9680.7846
9673.8564
9666.9282
9660
112143.138
112136.21
112129.282
112122.354
112115.426
112108.497
112101.569
11294.641
11287.7128
11280.7846
11273.8564
11266.9282
11260
128143.138
128136.21
128129.282
128122.354
128115.426
128108.497
128101.569
12894.641
12887.7128
12880.7846
12873.8564
12866.9282
12860
136150.067
136143.138
136136.21
136129.282
136122.354
136115.426
136108.497
136101.569
13694.641
13687.7128
13680.7846
13673.8564
13666.9282
13660
136163.923
136156.995
136150.067
136143.138
136136.21
136129.282
136122.354
136115.426
136108.497
136101.569
13694.641
13687.7128
13680.7846
13673.8564
144170.851
144163.923
144156.995
144150.067
144143.138
144136.21
144129.282
144122.354
144115.426
144108.497
144101.569
14494.641
14487.7128
152177.779
152170.851
152163.923
152156.995
152150.067
152143.138
152136.21
152129.282
152122.354
152115.426
152108.497
152101.569
160184.708
160177.779
160170.851
160163.923
160156.995
160150.067
160143.138
160136.21
160129.282
160122.354
160115.426
168191.636
168184.708
168177.779
168170.851
168163.923
168156.995
168150.067
168143.138
168136.21
168129.282
176198.564
176191.636
176184.708
176177.779
176170.851
176163.923
176156.995
176150.067
176143.138
利用C++编写程序计算221个点之间的距离,随后即可用matlab求出最小生成树的邻接矩阵,由于运行结果是一个221*221的矩阵,太过巨大,因此只选择结果的某一个部分,该结果表示第一个地铁站与第二个地铁站相连,距离为10.583,第二个地铁站与第四个地铁站相连,距离为6.9282……..以此类推,就可以画出地铁线路得到地铁如何换乘。
附录:
1.C++编程模拟六边形覆盖城区的过程
#include
#include
#include
usingnamespacestd;
intnum=0;
boolflag(doublex,doubley)
{boolt=true;
if((144-y>=0&&y-60>=0&&5.6*x-y+60>=0&&-0.8*x-y+240>=0)||(0.8*x+y-240>=0&&-0.8*x-y+347.5725>=0&&1.25*x-y-6>=0&&-1.25*x+y+356.5711>=0))t=true;
else
t=false;
returnt;
}
booloutside(doublex0,doubley0)
{
doublex1,x2,x3,x4,x5,x6,y1,y2,y3,y4,y5,y6;
intjishu=0;
if(flag(x0,y0))jishu++;
x1=x0+8;
y1=y0;
x2=x0+4;
y2=y0+4*sqrt(3);
x3=x0-4;
y3=y2;
x4=x0-8;
y4=y0;
x5=x0-4;
y5=y0-4*sqrt(3);
x6=x2;
y6=y5;
if(flag(x1,y1))jishu++;
if(flag(x2,y2))jishu++;
if(flag(x3,y3))jishu++;
if(flag(x4,y4))jishu++;
if(flag(x5,y5))jishu++;
if(flag(x6,y6))jishu++;
if(jishu==0)returnfalse;
else
returntrue;
}
doublebornx(doublex0)
{
returnx0+8;
}
doubleborny(doubley0)
{
returny0-4*sqrt(3);
}
intmain()
{
ofstreamoutfile("subway.txt",ios:
:
in);
if(!
outfile)cout<<"openfileerror"< doublex0=0; doubley0=60; doublefix0=x0; doublefiy0=y0; inti=0; intj=0; while(j<=30) { i=0; while(i<=30) { if(flag(x0,y0)){outfile< else x0=bornx(x0); y0=borny(y0); i++; } x0=fix0; y0=fiy0+8*sqrt(3); fix0=x0; fiy0=y0; j++; } fix0=0; fiy0=60; x0=fix0; y0=fiy0-8*sqrt(3); fix0=x0; fiy0=y0; j=0; while(j<=10) { i=0; while(i<=30) { if(flag(x0,y0)){outfile< x0=bornx(x0); y0=borny(y0); i++; } x0=fix0; y0=fiy0-8*sqrt(3); fix0=x0; fiy0=y0; j++; } cout< return0; } 2.计算各点的距离 #include #include #include usingnamespacestd; main() { ifstreaminfile("subway.txt",ios: : in); ofstreamoutfile("distance.txt",ios: : out); doublea[221][2]; inti=0; while(i<=220) { infile>>a[i][0]>>a[i][1]; i++; } i=0; intj=0; doubleb; while(i<=220) { j=0; while(j<=220) { b=sqrt((a[i][0]-a[j][0])*(a[i][0]-a[j][0])+(a[i][1]-a[j][1])*(a[i][1]-a[j][1])); outfile< j++; } outfile< i++; } return0; } 3最小生成树的matlab代码 function [b,u,w]=mintrees(a,k)%最小生成树 ,a 邻接矩阵,k 起点 if nargout==1 k=1; end [m,n]=size(a); for i=1: m for j=1: n if a(i,j)==0 a(i,j)=inf; end end end b=zeros(n); u (1)=k; j=1; v=zeros(1,n); v(k)=1; for o=1: n-1 sn=ones(3,n)*inf; for xk=1: j k=u(xk); p=max(a(k,: )); for i=1: n if v(i)<1&a(k,i) p=a(k,i); end end for i=1: n if v(i)<1&a(k,i)==p break; end end sn([1 2 3],k)=[i,p,u(xk)]; end [w(j),k]=min(sn(2,: )); j=j+1; u(j)=sn(1,k); b(sn(1,k),sn(3,k))=sn(2,k); v(u(j))=1; end 在命令窗口输入 A=load(‘distance.txt’); B=mintrees(A)%B为最小生成树的领阶矩阵
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 地铁 规划