《城市公交IC卡·数据分析方法及应用》 陈学武、李海波、候贤耀著

《城市公交IC卡·数据分析方法及应用》——上车点识别·笔记

一般情况下,IC卡是没有记录上车点的信息,需要结合其他数据对IC卡处理

通常情况下,使用时间特征对数据匹配

公交运营时间和乘客刷卡时间特征

公交车辆运营一趟的的总时间:
T=tan−tal=∑i=1k−1(Tsk−Trk)T = t_{an}-t_{al} = \sum_{i=1}^{k-1}(T_{sk}-T_{rk}) T=tan​−tal​=i=1∑k−1​(Tsk​−Trk​)
总时间 = 运行时间+停靠时间

公交车辆到达第k个站点的时间:
tak=ta1+∑i=1k−1(Tsi−Tri)t_{ak} = t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri}) tak​=ta1​+i=1∑k−1​(Tsi​−Tri​)
到达第k个站点的时间 = 起始时间 +此站前的总时间

车辆离开第K个站点的时间:
tsk=ta1+∑i=1k−1(Tsi−Tri)+Tskt_{sk} = t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri})+T_{sk} tsk​=ta1​+i=1∑k−1​(Tsi​−Tri​)+Tsk​
离开第K个站点的时间 = 到达时间+停靠时间

综上,车辆在第K歌站点停留时间区间为:
[tak,tlk]=[ta1+∑i=1k−1(Tsi−Tri),ta1+∑i=1k−1(Tsi−Tri)+Tsk][t_{ak},t_{lk}] = [t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri}) , t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri})+T_{sk}] [tak​,tlk​]=[ta1​+i=1∑k−1​(Tsi​−Tri​),ta1​+i=1∑k−1​(Tsi​−Tri​)+Tsk​]

其中:

k ——站点号

ta1t_{a1}ta1​ —— 起点发车时间

tl1t_{l1}tl1​ —— 起点离开时间

takt_{ak}tak​ —— 到达第k个站点的时间

tlkt_{lk}tlk​ —— 离开第k个站点的时间

Ts1T_{s1}Ts1​—— 起点站发车时间与离开时间间隔

Tr1T_{r1}Tr1​ —— 起点发车时间(第一站)到下一站的运行时间

TskT_{sk}Tsk​ —— 车辆在第k个站点的停留时间

TrkT_{rk}Trk​ —— 车辆离开第k个站到达下一个站的运行时间

仅仅依赖公交调度表结合线路平均运营速度对算到站时间的可靠性不高,还需要结合上乘客的刷卡数据

乘客刷卡时间特征

在乘客较多或者存在行动不方便的乘客时,会出现公交启动离站后才刷卡的情况,也就意味着刷卡存在一个刷卡时间区间。

乘客的刷卡行为呈现一种明显的集中性和有序性,可以使用聚类方法将同意站点乘坐同一车次的刷卡记录聚合成一组,以达到聚类数据的刷卡时间与公交车辆到达时间的良好匹配关系

考虑到公交线路的周期性以及一个车次中不会每站都有人上车,所以可以将一周的时间集中在一起聚类分析

上车点识别

聚类分析

聚类分析方法主要依据数据客体之间的相似性和相异性,将这种关系看成一种距离上的远近的一种度量。将距离近的归类为同一种类,距离远的归结为另一类

主要方法分为 层次聚类非层次聚类,如:k-means、BIRCH、DBSCAN等方法

由于不是每一个站点都会有人上车,所以聚类只能聚合出有刷卡数据的站点数据

对于这类问题有以下解决办法:

  • 在公交IC卡数据聚类的基础上,利用公交调度数据推算公交车辆到站时间,利用公交IC卡时间与公交车辆到站时间匹配识别上车点。
  • 依据换乘行为,将识别出来的换成站点作为控制站点来推断其他上车站点

基于公交调度数据的算法

公交IC卡数据聚类

对于一辆公交车,乘客上车客流具有很强的时间群集特性,即刷卡时间也具有时间群集特征。可以通过对刷卡数据的聚类分析,以时间长短作为相似性依据

对刷卡时间进行聚类的分类数量不确定,只有采用层次聚类方法:

  1. 提取所有记录,将每个记录看成一类,初始数量设为K
  2. 计算相邻类的刷卡时间最短间隔设为距离DpqD_{pq}Dpq​,将距离最小的几类合并
  3. 重复步骤2,知道min(DijD_{ij}Dij​)>TuT_uTu​,即相邻两类的最小距离中的最小值大于该线路相邻两站点之间最短的刷卡间隔 (两个最小值比较)

聚类之后,将各组分类号建字段存储到刷卡数据表中

计算 各组刷卡数据的 中间值最大刷卡间隔 并存储 以备和车辆停靠时间匹配,确定上车点

中间值:组内各组刷卡时间的算数平均数(个人看法:取中位数研究)

最大时间间隔:组中最后一次和第一次之间的时间间隔

车辆停靠时刻推算

这里定义公交停靠时刻 为车辆停靠在停靠站 停靠的中间时刻 即:
tk=tak+(tlk+tak)2=tl(k−1)+Tr(k−1)+Tsk2,k>=2.t_k = t_{ak} + \frac{(t_{lk}+t_{ak})}{2} \\= t_{l(k-1)} + T_{r(k-1)}+\frac{T_{sk}}{2},k>=2. tk​=tak​+2(tlk​+tak​)​=tl(k−1)​+Tr(k−1)​+2Tsk​​,k>=2.
可以从公交调度信息表中提取出车辆起点发车时刻t_l1终点站到站时刻t_an

推算公交车辆离开各站点的时刻:

tlk=tl(k−1)+Tr(k−1)+Tsk离开时刻=上一站离开时刻+上一段路上运行时间+此站的停靠时间=[tl(k−2)+Tr(k−2)+Ts(k−1)]+Tr(k−1)+Tsk通过递归,递推到tl1=tl1+∑i=1k−1Tri+∑i=2kTsi整理后得到上面的公式t_{lk} = t_{l(k-1)}+T_{r(k-1)}+T_{sk}\\ 离开时刻 = 上一站离开时刻+上一段路上运行时间+此站的停靠时间\\ \qquad\\\qquad\\ =[t_{l(k-2)}+T_{r(k-2)}+T_{s(k-1)}]+T_{r(k-1)}+T_{sk}\\ 通过递归,递推到t_{l1}\\ \qquad\\\qquad\\ = t_{l1}+\sum_{i = 1}^{k-1}T_{ri}+\sum_{i=2}^{k}T_{si}\\ 整理后得到上面的公式 tlk​=tl(k−1)​+Tr(k−1)​+Tsk​离开时刻=上一站离开时刻+上一段路上运行时间+此站的停靠时间=[tl(k−2)​+Tr(k−2)​+Ts(k−1)​]+Tr(k−1)​+Tsk​通过递归,递推到tl1​=tl1​+i=1∑k−1​Tri​+i=2∑k​Tsi​整理后得到上面的公式

对于首末站,近似的认为到站时间和出站时间相等

停靠时间TskT_{sk}Tsk​:注意到的刷卡数据聚类后计算得到的各组的刷卡时间间隔(Δk表示)数据可以近似表示为 站点停靠时间,其他没有刷卡数据的站点其停靠时间可以根据 调查近似值

站点间运行时间TskT_{sk}Tsk​:站间距离/平均运行速度的值,单位s,计算公式:
Trk=lk(k+1)V‾V‾=ltan−tln−∑i=2n−1Tsi即:Trk=lk(k+1)∗(tan−tln−∑i=2n−1Tsi)lT_{rk} = \frac{l_{k(k+1)}}{\overline{V}}\\ \qquad\\\qquad\\ \overline{V} = \frac{l}{t_{an}-t_{ln}-\sum_{i = 2}^{n-1}T_{si}}\\ \qquad\\\qquad\\ 即:T_{rk} = \frac{l_{k(k+1)}*(t_{an}-t_{ln}-\sum_{i = 2}^{n-1}T_{si})}{l}\\ Trk​=Vlk(k+1)​​V=tan​−tln​−∑i=2n−1​Tsi​l​即:Trk​=llk(k+1)​∗(tan​−tln​−∑i=2n−1​Tsi​)​

刷卡时间与停靠时间匹配

通过聚类分析和停靠时刻推算得到个各类中公交刷卡时间的“中间值tmt_mtm​”公交车辆在各站点的“停靠时刻tkt_ktk​”

通过t_m和t_k之间的距离 Δmk ,当Δmk = min( | tm−tkt_m - t_ktm​−tk​ | ) 时,所取 tkt_ktk​ 对应的停靠站点认为时 tmt_mtm​ 所对应的刷卡记录的刷卡站点,即上车站点

【OD矩阵】《城市公交IC卡·数据分析方法及应用》利用公交运营时间和乘客刷卡时间特征识别上车点相关推荐

  1. 【OD矩阵】《城市公交IC卡·数据分析方法及应用》基于换乘点的上车点识别

    <城市公交IC卡·数据分析方法及应用> 陈学武.李海波.候贤耀著 <城市公交IC卡·数据分析方法及应用>--基于换乘点的上车点识别·笔记 换乘点 通常情况下,公交乘客总是选择步 ...

  2. 【OD矩阵】《城市公交IC卡·数据分析方法及应用》基于ICAVL数据的上车站点识别

    <城市公交IC卡·数据分析方法及应用> 陈学武.李海波.候贤耀著 <城市公交IC卡·数据分析方法及应用>基于IC&AVL数据的上车站点识别·笔记 算法基本思路: 此处算 ...

  3. time_expire时间过短,刷卡至少1分钟,其他5分钟

    今天做并发测试发现,很多都报了这个错. 查交易记录发现,数据库存的交易开始和过期时间间隔有半小时,但是请求日志中时间是一致的. 问题原因: 在 发起交易请求时,使用了SimpleDateFormat类 ...

  4. 几种常见的数据分析方法拆解

    数据分析一直是我们互联网人辨别方向的不二法门,我们通过对数据的观测来判断事物的发展趋势,也常常利用数据的思维来辩证的为决策做参考. 掌握技能和工具只是第一步,做好数据分析还必须要有数据分析思维.数据思 ...

  5. 七种常见的数据分析方法拆解

    数据分析一直是互联网人辨别方向的不二法门,我们通过对数据的观测来判断事物的发展趋势,也常常利用数据的思维来辩证的为决策做参考. 下面就给大家详细拆解七种常见的数据分析法,让我们的数据分析少走弯路. 0 ...

  6. 王者荣耀服务器未响应WIFI,王者荣耀WIFI不稳定原因介绍 无线网很卡解决方法

    王者荣耀是全球首款5V5英雄公平对战手游,腾讯最新MOBA手游大作.王者荣耀很受各大年龄段的人们喜爱,王者荣耀WIFI不稳定怎么办?WIFI很卡怎么办?下面小编为大家带来王者荣耀无线网很卡解决方法, ...

  7. 首席新媒体黎想教程:产品运营必会的3种数据分析方法!

    "产品运营到底是何方品种?" "产品运营是负责做产品的吗?" "如果产品运营也负责产品工作的话,那么产品经理岗位又是干什么的?" " ...

  8. 微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息

    NFC相信大家都很熟悉,现实中经常使用的门禁卡,公交卡,地铁卡,饭卡等都是采用NFC功能,那么你知道吗,NFC也可以用微信小程序来实现.使用微信小程序可以读取/写入让手机成为一个刷卡器,也可以使用微信 ...

  9. 银联pos小票word模板_商家pos机刷卡必须知道的知识

    相信很多卡友伙伴或者商铺店家都装有pos机,然后一般pos机都没有使用说明书,更没有结合刷卡方法在内的秘籍.今天我就分享下刷卡必须知道的一些知识. 刚刚办理pos机的当天一定要注意:使用之前呢,务必核 ...

  10. 2 华为云闪付_教你区分信用卡刷卡、挥卡、插卡、云闪付等支付方式!

    信用卡交易的N种方式总有很多小伙伴分不清 刷卡?挥卡?插卡?闪付?云闪付等等......啥啥啥?这都是啥?? 在区别这几种刷卡方式之前,首先我们区分"持卡"交易和"无卡& ...

最新文章

  1. 使用Ubuntu挂载NTFS格式分区
  2. Android基础(八) – Service AIDL
  3. java string 字符个数字_java从字符串中提取数字
  4. 《当程序员的那些狗日日子》(六十一)美丽的天际
  5. MiningZhiDaoQACorpus,580万百度知道问题,980万问答对数据挖掘项目
  6. Bootstrap3 表单帮助文本
  7. 程序员如何应对双十一购物的大流量冲击?
  8. web前端效率提升之浏览器与本地文件的映射-遁地龙卷风
  9. 动易自定义标签HTML输出,动易标签【ArticleList】
  10. PotPlayer+SVP4视频补帧简易教程
  11. 【ppt课件制作】Focusky教程 | 如何设置内容全屏显示?
  12. 栅格数据中的 Zone 与 Region
  13. 微信平台注册APP签名获取方法
  14. SpringBoot学习历程(十一):SpringBoot2.X集成mail发送邮件
  15. R学习之统计算法与R优化包(矩估计法也即Newton) --(R语言编程)-----数模
  16. 南开大学推出中国首家元宇宙新闻与传播学院
  17. ubuntu和windows之间实现复制粘贴
  18. 2022-03-25 Python作业3
  19. 正式宣布,小米10在高端市场碾压华为,夺下电商平台销量第一名
  20. Python实现jpg/png/jpeg图片转base64编码文件

热门文章

  1. java中的变量是什么
  2. LATEX参考文献添加文章doi号并嵌入超链接+IEEE期刊缩写查询
  3. 终于找到可转载的摄影基础知识贴了
  4. 《Redis系列第五篇、hset与hget的使用|CSDN创作打卡》
  5. qpython3 l_qpython3安装requirements_Python3安装配置【转】
  6. 简单图形的输入输出练习
  7. 杰理之ANC降噪【篇】
  8. math四舍五入 java_使用Math.cei将Java四舍五入到int
  9. 怎样写商业计划书 【转载】
  10. Microsoft Edge导出浏览历史记录