0
点赞
收藏
分享

微信扫一扫

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题

R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题


 

今天早上,我们使用一些论文中提到的示例,使用最大流最小割定理​​将流量拥塞降至最低,​​​ 并​​应用了最短路径分析了交通瓶颈​​。

我们可以在下面看到

  1.   
  2.  map=openp(map)
  3.  plot(map)
  4.  points(t(m[3:2,]),col="black", pch=19, cex=3

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_交通安全事故地图

 

要提取有关边缘容量的信息,在该网络上使用以下代码,该代码将从论文中提取三个表

  1.   
  2.  extract_tab(location)

在Windows中,要先下载另一个软件包

  1.  library(devtools)
  2.   
  3.  extract_tab(locatio

现在我们可以得出具有容量的数据框

  1.  B1=as.data.frame(out[[2]])
  2.  B2=as.data.frame(out[[3
  3.   
  4.  capacity=as.character(B2$V3[-1])
  5.  capacity[6]="843"
  6.  ic(capacity)

我们可以在地图上添加这些边

  1.  plot(map)
  2.  points(t(m[3:2,]),col="black", pch=1
  3.   
  4.  for(i in 1:nrow(E)){
  5.  i1=which(B$i==as.character(E$from
  6.  ]))
  7.  segments(B[i1,"x"],B[i1,"y"],B[i2,
  8.   
  9.  text(t(m[3:2,]),c("s",1:10,"t"),col="white")

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_最大流最小割定理_02

 

 

要获得具有容量的图形,可以使用另一种方法

  1.  g=graph_from_data_frame(E)
  2.  E(g)$label=E$capacity
  3.  plot(g)

 

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_最短路径算法_03

但是它不考虑节点的地理位置。可以使用

  1.  plot(g, layout=as.matrix(B[,c("x","y")]))
  2.   

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_最短路径算法_04

 

为了更好地了解道路通行能力,使用

  1.  plot(g, layout=as.matrix(B[,c("x","y")]),
  2.  edge.width=E$capacity/200)

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_交通安全事故地图_05

通过具有容量的网络,目标是确定该网络上从源到宿的最大流量。可以使用R

  1.  $value
  2.  [1] 2571
  3.   
  4.  $flow
  5.  [1] 10 142 130 23 0 2

我们的最大流量为2571,这与两篇论文中的​​最大流量最小割定理​​​以及 ​​最短路径的应用中​​都实际要求的不同   ,因为表格和图表上的值不同。

  1.  E$flux1=m$flow
  2.  plot(g, layout=as.matrix(B[,c("x","y")]),

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_交通安全事故地图_06

 

考虑采用更简单的流程,但是相同的全局值

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_交通安全事故地图_07

 

  1.   
  2.   
  3.  E(g)$label=E$flux2
  4.  plot(g, layout=as.matrix(B[,c("x","y")]),
  5.  edge.width=E$flux2/200)

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_神经网络_08

 

实际上,有可能在同一城市的另一篇论文中做同样的事情,这是​​道路网络的交通拥堵问题​​。

  1.   
  2.   
  3.  dim(out[[3]])
  4.  B1=a
  5.  ame(from=B1[2:61,"V2"],
  6.  to=B1[2:6
  7.  as.numeric(
  8.  as.characte
  9.  data_frame(E)
  10.  m=max_flow(graph=g,
  11.  source="S",
  12.   
  13.  E$flux1=m$flow
  14.  E(g)$label=E
  15.   
  16.  edge.width=E$flux1/200,
  17.  edge.arrow.size=0.15)

此处的最大流量值为4017,就像原始论文中发现的那样

 

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_最短路径算法_09

拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题_交通安全事故地图_10


举报

相关推荐

0 条评论