4

我正在为我国家的所有公共交通工具(公共汽车/火车/航空)制作旅程计划器(或一般时间表应用程序)。

该项目的状态处于中点,现在我很难完成应用程序中更困难的部分。

描述当前状态:

  • 数据存储在 MySQL 数据库中,建模为 GTFS(通用 (Google) Transit Feed Specification)

  • 我通过简单地查询数据库来获得直接路由(两个临时表的连接,我发现它足够高效)

  • 目前它是用 PHP 完成的,但如果需要,我可以用 Java 重新处理它

因此,当两点之间存在直接连接时,一切都很好。困难的部分是在没有直达线路的情况下完成完整的旅程。

假设用户想要从 to 出行city Acity D但由于这些城市之间没有直达线路,他需要经过city Band city C

如何获得针对这种情况的优化路线和换乘方式?

到目前为止,我的想法倾向于使用图表,但在这种情况下,我需要一个Time-Dependant Directed Weighted Multigraph,我目前真的不知道如何实现Time-Dependant部分。

可以通过使用或算法来获得路线Dijkstra,但是由于在不同的时间有出发,我不确定如何实现,以获得最佳解决方案。我需要考虑一段的持续时间(A 到 B,B 到 C),等待转移的时间,也许还有距离。A*Floyd–Warshall

只是为了澄清,我不需要一个结果。city A我想获取所有可以让用户到达的出发点的每日列表,city D如果需要,可以进行转移。

基本上,我想要得到的是这样的东西(取自保加利亚铁路,或就此而言,任何一个铁路站点),一个选定日期的所有班次列表,如果需要的话,从转机SofiaKystendil转机:Radomir

样本结果

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

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

我知道这样做了很多次(几乎所有火车网站都有解决方案),但我什至不知道要搜索哪些术语。

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

或者至少我应该通过哪些术语来寻找想法以及应该如何去做。

也许对 StackExchange 网络中的其他站点有一些建议。

谢谢你。

4

0 回答 0