收藏 分享(赏)

数模07B最短路径的算法.doc

上传人:jinchen 文档编号:6771856 上传时间:2019-04-22 格式:DOC 页数:8 大小:92KB
下载 相关 举报
数模07B最短路径的算法.doc_第1页
第1页 / 共8页
数模07B最短路径的算法.doc_第2页
第2页 / 共8页
数模07B最短路径的算法.doc_第3页
第3页 / 共8页
数模07B最短路径的算法.doc_第4页
第4页 / 共8页
数模07B最短路径的算法.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、“有困难找警察”,是家喻户晓的一句流行语。警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。每个交巡警服务平台的职能和警力配备基本相同。由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:练习一:Chongqing University of Arts and SciencesQ:5172652Imagination is more importa

2、nt than knowledge. 暑 期 培 训作 业作 业 1: 求 出 从: 求 出 从 a到到 z的 最 短 路 的 长 度 是 ?的 最 短 路 的 长 度 是 ?ba c ed z542 101 8 263用 LINGO 求解:model:sets:dingdians/a,b,c,d,e,z/;roads(dingdians,dingdians)/a b,a c,b c,b d,c b,c d,c e,d z,d e,e d,e z/:w,x;endsetsdata:w=4 2 1 5 1 8 10 6 2 2 3;enddatan=size(dingdians); !顶点的个数

3、;min=sum(roads:w*x);for(dingdians(i)|i #ne#1 #and# i #ne#n:sum(roads(i,j):x(i,j)=sum(roads(j,i):x(j,i);sum(roads(i,j)|i #eq#1:x(i,j)=1;sum(roads(i,j)|j #eq#n:x(i,j)=1;end 运行结果:Global optimal solution found.Objective value: 13.00000Infeasibilities: 0.000000Total solver iterations: 0Variable Value Red

4、uced CostN 6.000000 0.000000W( A, B) 4.000000 0.000000W( A, C) 2.000000 0.000000W( B, C) 1.000000 0.000000W( B, D) 5.000000 0.000000W( C, B) 1.000000 0.000000W( C, D) 8.000000 0.000000W( C, E) 10.00000 0.000000W( D, Z) 6.000000 0.000000W( D, E) 2.000000 0.000000W( E, D) 2.000000 0.000000W( E, Z) 3.0

5、00000 0.000000X( A, B) 0.000000 1.000000X( A, C) 1.000000 0.000000X( B, C) 0.000000 2.000000X( B, D) 1.000000 0.000000X( C, B) 1.000000 0.000000X( C, D) 0.000000 2.000000X( C, E) 0.000000 2.000000X( D, Z) 0.000000 1.000000X( D, E) 1.000000 0.000000X( E, D) 0.000000 4.000000X( E, Z) 1.000000 0.000000

6、Row Slack or Surplus Dual Price1 0.000000 0.0000002 13.00000 -1.0000003 0.000000 -8.0000004 0.000000 -5.0000005 0.000000 -6.0000006 0.000000 0.0000007 0.000000 2.0000008 0.000000 -5.000000用MATLAB 求解:先建立 M 文件: function l,z=dijkstra(w) n=size(w,1);w1=w(1,:);%赋初值for i=1:nl(i)=w1(i);z(i)=1;ends=;s(1)=1;

7、u=s(1);k=1;l;z;while kl(u)+w(u,i)l(i)=l(u)+w(u,i);z(i)=u;endendendendl;z;%求 v*ll=l;for i=1:nfor j=1:kif i=s(j)ll(i)=ll(i);else ll(i)=inf;endendendlv=inf;for i=1:nif ll(i) l,z=dijkstra(w)可的结果:l =0 3 2 8 10 13z =1 3 1 2 4 5练习二:Chongqing University of Arts and SciencesQ:5172652Imagination is more impor

8、tant than knowledge. 暑 期 培 训选 址 问 题 -重 心 问 题作 业 2 某 矿 区 有 七 个 矿 点 , 如 图 所 示 已 知 各 矿 点 每 天 的 产 矿量 )(jv( 标 在 图 的 各 顶 点 上 ) 现 要 从 这 七 个 矿 点 选 一 个 来 建 造 矿厂 问 应 选 在 哪 个 矿 点 , 才 能 使 各 矿 点 所 产 的 矿 运 到 选 矿 厂 所 在 地 的总 运 力 ( 千 吨 公 里 ) 最 小 ( 1) 求 距 离 阵 D= )(ijd( 2) 计 算 各 顶 点 作 为 选 矿 厂 的 总 运 力 )(ivm ijjjivqm)()

9、(1 ,21i ( 3) 求 k使 )(n1iikv, 则 k就 是 选 矿 厂 应 设 之 矿点 此 点 称 为 图 G的 重 心 或 中 位 点 用 Floyd 算法求出距离矩阵:在 matlab 中先建立 M 文件:function D=floyd(A)n=size(A,1);%顶点D=A; %赋初值for i=1:nfor j=1:nR(i,j)=j; %赋路径初值endendfor k=1:nfor i=1:nfor j=1:nif (D(i,k)+D(k,j) A=0 3 inf inf inf inf inf ; 3 0 2 inf inf 4 inf ; inf 2 0 6 2

10、 inf inf ; inf inf 6 0 1 inf inf ; inf inf 2 1 0 4 inf ; inf 4 inf inf 4 0 1.5; inf inf inf inf inf 1.5 0; D=floyd(A)D =0 3.0000 5.0000 8.0000 7.0000 7.0000 8.50003.0000 0 2.0000 5.0000 4.0000 4.0000 5.50005.0000 2.0000 0 3.0000 2.0000 6.0000 7.50008.0000 5.0000 3.0000 0 1.0000 5.0000 6.50007.0000 4

11、.0000 2.0000 1.0000 0 4.0000 5.50007.0000 4.0000 6.0000 5.0000 4.0000 0 1.50008.5000 5.5000 7.5000 6.5000 5.5000 1.5000 0 B=3 2 7 1 6 1 4B =3 2 7 1 6 1 4 B*Dans =132 78 70 92 70 106 130则各顶点作为选矿厂的总运力 :)(ivmm(v1)=132, m(v2)=78, m(v3)=70, m(v4)=92, m(v5)=70, m(v6)=106,m(v7)=130则最小的总运力为:m(v3)或者 m(v5)=70

12、所以矿厂应该建在点 v3 或者 v5 处。练习三:Chongqing University of Arts and SciencesQ:5172652Imagination is more important than knowledge. 暑 期 培 训作 业作 业 3: 选 址 问 题: 选 址 问 题 : 已 知 某 地 区 的 交 通 网 络 如 下 图 所 示 , 其: 已 知 某 地 区 的 交 通 网 络 如 下 图 所 示 , 其中 点 代 表 居 民 区 , 边 表 示 公 路 ,中 点 代 表 居 民 区 , 边 表 示 公 路 , 边 上 的 数 字 为 小 区 间 公

13、路边 上 的 数 字 为 小 区 间 公 路距 离 , 问 区 中 心 医 院 建 在 哪 个 小 区 , 可 使 距 离 医 院 最 远 的 小距 离 , 问 区 中 心 医 院 建 在 哪 个 小 区 , 可 使 距 离 医 院 最 远 的 小区 居 民 就 诊 时 所 走 的 路 程 最 近区 居 民 就 诊 时 所 走 的 路 程 最 近 ?用 Floyd 算法求出距离矩阵:在 matlab 中先建立 M 文件:function D=floyd(A)n=size(A,1);%顶点D=A; %赋初值for i=1:nfor j=1:nR(i,j)=j; %赋路径初值endendfor k

14、=1:nfor i=1:nfor j=1:nif (D(i,k)+D(k,j) A=0 30 inf inf inf inf inf ;30 0 20 inf inf 15 inf ;inf 20 0 20 60 25 inf ;inf inf 20 0 30 18 inf ;inf inf 60 30 0 inf inf ;inf 15 25 18 inf 0 15;inf inf inf inf inf 15 0; D=floyd(A)D =0 30 50 63 93 45 6030 0 20 33 63 15 3050 20 0 20 50 25 4063 33 20 0 30 18 3393 63 50 30 0 48 6345 15 25 18 48 0 1560 30 40 33 63 15 0S(v1)=93, S(v2)=63, S(v3)=50, S(v4)=63, S(v5)=48, S(v6)=45, S(v7)=63S(v6)=45,故应将消防站设在 v6 处。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报