公共交通应用中的路线规划

时间:2013-07-09 02:24:00

标签: graph-theory graph-algorithm path-finding transport jgrapht

我正在为我国的所有公共交通工具(公共汽车/火车/空中)制定旅行计划(或一般时间表申请)。

项目的状态处于中点,现在我在完成应用程序中更困难的部分时遇到了一些困难。

描述当前状态:

  • 数据存储在MySQL数据库中,建模为GTFS(通用(Google)转运Feed规范)

  • 我只是通过查询数据库来获取直接路由(连接两个临时表,我发现它足够有效)

  • 目前用PHP完成,但如果需要,我可以用Java重新编写它

所以,当两点之间有直接联系时,一切都很好。当没有直线时,困难的部分就是完整的旅程。

假设用户想要从city A前往city D,但由于这些城市之间没有直线,他需要通过city Bcity C

如何在这种情况下获得优化路线和转移

我的想法到目前为止都倾向于使用图表,但在这种情况下我需要一个时间相关的定向加权多图,而我现在真的不知道如何实现时间依赖部分。

使用DijkstraA*Floyd–Warshall算法可以完成路线,但由于在不同时间有离场,我不确定如何实施,以获得最佳解决方案。我需要考虑段的持续时间(A到B,B到C),等待传输的时间,也可能是距离。

为了澄清,我不需要一个结果。我想获取city A所有可以让用户转到city D的离开的每日列表,并在需要时进行转移。

基本上,我想要获得的是这样的(取自保加利亚铁路,或者就此而言,无论哪个铁路网站),所选择的一天从Sofia到{的所有出发的列表{1}}如果需要,可以Kystendil进行转移:

Sample Result

关于图解决部分,我可以使用jGraphT在Java中创建应用程序,缓存结果(它们可能每隔几个月更改一次),并在PHP中使用它们(或通过PHP调用应用程序)

如果我不够清楚,请询问。

我知道这已经完成了很多次(几乎所有火车网站都有解决方案),但我不知道哪些条款甚至可以搜索。

所以,我的问题是:有人可以指导我如何解决这类问题吗?

或者至少应该通过哪些术语搜索想法以及应该如何完成。

可能对StackExchange网络中的其他网站提出了一些建议。

谢谢。

0 个答案:

没有答案