library(HVS) library(lubridate) library(magrittr)
今天的实验主要是利用昨天下午建好的10个点的小路网,模拟出收费数据,计算交通流。即在小路网上打通1,2,3三步。
得到路网邻接权重矩阵
load("D:/R/packages/HVS/data-raw/road_net.RData") road_net
根据权重矩阵计算里程矩阵和路径矩阵
result <- dijkstra_matrix(road_net) mileage <- result[[1]] path <- result[[2]]
核心的有两列:O列和D列,O和D在1~10中随机抽样10万次。
set.seed(1234) demosf <- data.frame(O=sample(1:10,100000,replace = T),D=sample(1:10,100000,replace = T)) dim(demosf)
去掉O和D相同的行
demosf[demosf$O == demosf$D,] %>% nrow()
demosf <- demosf[demosf$O != demosf$D,] dim(demosf)
demosf$path <- mapply(function(O,D) path[[O]][[D]],demosf$O,demosf$D) head(demosf)
x <- Map(function(O,D,roadpath=path) roadpath[[O]][[D]],demosf$O,demosf$D) head(x)
demosf$link <- lapply(demosf$path,extract_link) head(demosf)
(all_link <- all_link(road_net))
caculate_natureflow("1-2",demosf$link)
sapply(all_link, caculate_natureflow,demosf$link)
system.time(sapply(all_link, caculate_natureflow,demosf$link))
用了近1分钟时间来计算每段link的交通量
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.