Skip to content

sysunature/gzmetro

Repository files navigation

#广州地铁换乘方案设计

项目背景
生活在广州,外出首选广州地铁,但苦于广州地铁纵横交错,换乘复杂,而且微信个人订阅号又简化了申请流程,因此基于RedHat OpenShift免费云平台开发了一个微信个人订阅号,支持广州地铁最优换乘方案查询。个人订阅号(themetro).
微信个人订阅号二维码图案

项目架构
微信服务器接收用户消息,并将用户消息转发给OpenShift应用,后者处理该消息内容,并将处理结果由微信服务器发送给用户。

涉及技术

  • PHP
  • 中文分词(利用PhpAnalysis实现)

工具

  • rhc

输入

  • metro文件夹存储了广州地铁所有线路,存储格式是xml。每个xml文档中包含了该条线路的名字以及该条线路所有构成站点,各个站点之间按实际顺序依次存储。其中sites.xml存储的是所有地铁站点的标准名称以及拼音首字母。

算法

  • 判断用户输入
  • 按照metro文件夹中的内容构造广州地铁线路图及所有地铁站拼音首字母
  • 按照扩展的Dijkstra算法存储所有最短(从出发站到目的站的cost最小,目前相邻两个站点之间的权重定义为1,所以目前的最短等价于经过站点最小)线路
  • 从所有最短换乘线路中找到换乘次数最少的线路
  • 针对每条最优线路,规划该线路的乘坐方案,包括何处换乘等基本信息和运行方向等
  • 结果返回给微信服务器,由微信服务器发送给用户

改进

  • 目前相邻两站之间的权重为1,没有考虑两站之间的运行时间、用户换乘等待时间、换乘复杂度、列车正常运营时间、上下班高峰期站点拥堵程度、地铁故障概率等因素。如果考虑到诸多因素,模型如何建立以及各个参数如何获取、算法如何设计等尚不清楚,期待你的建议。
  • 目前不支持用户模糊输入,例如站点输入错误(名字错误、名字不全等)

感谢
项目实施过程中参考了诸多互联网内容,如

联系

  • 邮件(sysunature#outlook.com,把#换成@)
  • 这是基于兴趣开发的一个小项目,限于个人技术和经验,一定有许多不足之处,非常感谢您的意见和指点

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages