全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1653 3
2021-04-09
这个问题是前几天论坛wushibuzhi同学提出来的( https://bbs.pinggu.org/thread-10540615-1-1.html )本来可以直接回复他,后来考虑内容比较多,而且为更方便其他同学利用,因此这里新开一贴。

问题:计算从A到Z之间的最优时效路径

为此做了一个示例数据,如下:

本帖隐藏的内容

netE.rar
大小:(190 Bytes)

 马上下载

本附件包括:

  • netE.csv




复制代码



不考虑时间约束的网络图
n1.png

使问题复杂化的是,从一个节点到下一个节点的行程时间如果超过下一个节点的出发时间,需要等一天,也就是相应的形成时间增加24小时,导致上面这个网络里的每条边的耗时是不确定的。

思路是这样的,针对有向网络,如果A出发可以去n个节点,比如可以去B,也可以去C,则将A拆成n个,A1去节点B,A2去节点C;其他节点同样处理,比如B1可以去C,B2可以去D。节点拆分后,edge也增加了,比如A1-B1, A1-B2 。这样处理后,我们就可以根据约束条件计算每一条edge的耗时,或者是标准时间,或者是标准时间+24 。然后即可以用igraph生成网络,并计算节点之间的最短路径。

复制代码


调整后的网络图如下:


n2.png
经过上述调整,我们可以计算最短路径
复制代码


提醒:
1、上述网络是有向的;
2、上述代码只计算了从A到E的路径,计算其他区间点,需要对代码略作调整;

3、这种方式的缺点是,如果节点太多,可能会极大地增加计算量。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-4-9 10:38:57
上述代码使用的包
library(dplyr)
library(lubridate)
library(igraph)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-4-9 13:06:07
支持一下,周末可以学习。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-4-9 14:01:52
owenqi 发表于 2021-4-9 13:06
支持一下,周末可以学习。
特殊问题,不具普遍性
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群