利用Matlab编程计算最短路径及中位点选址_第1页
利用Matlab编程计算最短路径及中位点选址_第2页
利用Matlab编程计算最短路径及中位点选址_第3页
利用Matlab编程计算最短路径及中位点选址_第4页
利用Matlab编程计算最短路径及中位点选址_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计量地理学(徐建华,高等教育出版社,2005)配套实习指导19. 利用Matlab编程计算最短路径及中位点选址1、最短路问题两个指定顶点之间的最短路径。例如,给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间,找一条最短铁路线。以各城镇为图的顶点,两城镇间的直通铁路为图相应两顶点间的边,得图。对的每一边,赋以一个实数直通铁路的长度,称为的权,得到赋权图。的子图的权是指子图的各边的权和。问题就是求赋权图中指定的两个顶点间的具最小权的轨。这条轨叫做间的最短路,它的权叫做间的距离,亦记作。求最短路已有成熟的算法:迪克斯特拉(Dijkstra)算法,其基本思想是按距从近到远为顺序,依次求得到的各顶点的最短路和距离,直至(或直至的所有顶点),算法结束。为避免重复并保留每一步的计算信息,采用了标号算法。下面是该算法。(i) 令,对,令,。(ii) 对每个(),用代替。计算,把达到这个最小值的一个顶点记为,令。(iii). 若,停止;若,用代替,转(ii)。算法结束时,从到各顶点的距离由的最后一次的标号给出。在进入之前的标号叫T标号,进入时的标号叫P标号。算法就是不断修改各项点的T标号,直至获得P标号。若在算法运行过程中,将每一顶点获得P标号所由来的边在图上标明,则算法结束时,至各项点的最短路也在图上标示出来了。例1: 某公司在六个城市中有分公司,从到的直接航程票价记在下述矩阵的位置上。(表示无直接航路),请帮助该公司设计一张城市到其它城市间的票价最便宜的路线图。用矩阵(为顶点个数)存放各边权的邻接矩阵,行向量、分别用来存放标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量; 存放始点到第点最短通路中第顶点前一顶点的序号; 存放由始点到第点最短通路的值。求第一个城市到其它城市的最短路径的Matlab程序如下:clear;clc;M=10000;a(1,:)=0,50,M,40,25,10;a(2,:)=zeros(1,2),15,20,M,25;a(3,:)=zeros(1,3),10,20,M;a(4,:)=zeros(1,4),10,25;a(5,:)=zeros(1,5),55;a(6,:)=zeros(1,6);a=a+a;pb(1:length(a)=0;pb(1)=1;d(1:length(a)=M;d(1)=0;temp=1;while sum(pb)length(a) tb=find(pb=0); d(tb)=min(d(tb),d(temp)+a(temp,tb); tmpb=find(d(tb)=min(d(tb); temp=tb(tmpb(1); pb(temp)=1; endd 运行输出,第一个城市到其它城市的最短路径长度,即:d = 0 35 45 35 25 102、选址问题以中位点选址为例中位点选址问题的质量判据为:使最佳选址为止所在的定点到网络图中其他顶点的最短路径距离的总和(或者以各个顶点的载荷加权求和)达到最小。例2:某县下属七个乡镇,各乡镇所拥有的人口数a(vi)(i=1,2,7),以及各乡镇之间的距离wij(i,j=1,2,7)如图所示。现在需要设立一个中心邮局,为全县所辖的七个乡镇共同服务。试问该中心邮局应该设在哪一个乡镇(图中的哪一个顶点)?图9.2.3第一步,用标号法求出每一个顶点vi至其它各个顶点vj的最短路径长度dij(i,j 1,2,7),并将其写成如下距离矩阵:第二步,以各顶点的载荷(人口数)加权,求每一个顶点至其它各个顶点的最短路径长度的加权和,可在Matlab环境下用矩阵运算求得:定义各顶点的载荷矩阵:输出结果:第三步,判断计算如下:第一步:clear;clc;M=10000;for i=1:length(a)pb(1:length(a)=0;pb(i)=1; d(1:length(a)=M;d(i)=0;temp=i;while sum(pb)length(a) tb=find(pb=0); d(tb)=min(d(tb),d(temp)+a(temp,tb); tmpb=find(d(tb)=min(d(tb); temp=tb(tmpb(1); pb(temp)=1; end;ShortPath(i,:)=d;end;ShortPath; 运行后输出最短距离矩阵,即ShortPathShortPath = 0 3.0000 5.0000 6.3000 9.3000 4.5000 6.0000 3.0000 0 2.0000 3.3000 6.3000 1.5000 3.0000 5.0000 2.0000 0 2.0000 5.0000 3.5000 5.0000 6.3000 3.3000 2.0000 0 3.0000 1.8000 3.3000 9.3000 6.3000 5.0000 3.0000 0 4.8000 6.3000 4.5000 1.5000 3.5000 1.8000 4.8000 0 1.5000 6.0000 3.0000 5.0000 3.3000 6.3000 1.5000 0第二步:A=3 2 7 1 5 1 4;S= ShortPath * A;运行后输出S,即每一个顶点至其它各个顶点的最短路径长度的加权和:S = 122.3000 71.3000 69.5000 6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论