​​​​​      近来重新学习了一下 Planning Bike Lanes based on Sharing-Bikes’ Trajectories这篇文章,觉得写得蛮好的,对于学习轨迹数据挖掘具有一定的启发。这篇文章是国际上对于无桩共享单车比较早期的一个研究,第一作者Jie Bao(抱歉,不知道中文名怎么写。。)发表了多篇单车轨迹数据挖掘的相关文章,论文的另一个合作者郑宇博士相信做数据挖掘和城市计算的朋友应该不会陌生。本文主要是论文的一个学习笔记,另外附带了一点点个人理解,仅供参考,欢迎拍砖。下面开始正文:

一、背景

自行车路网规划是城市慢行交通规划的重要任务之一。理想情况下,城市内部每条道路上都划定有专用的自行车路网是一种满足骑行需求、促进骑行的上策。但实际中由于受到经费预算、道路宽度等因素影响,只能选取部分地区优先构建单车路网。传统自行车路网规划大多数由专家根据用户调查推荐确定,主要依据是根据预估的单车通行或者调研得到实际骑行需求确定优先构建自行车路网的地区和道路。

由此可知,如何提取用户的实际骑行需求是自行车道规划的关键问题。海量共享单车轨迹数据为提取用户实际骑行需求和骑行路线提供了便利条件。原始的GPS轨迹数据是一系列的定位点,首先需要将GPS轨迹通过地图匹配(map-matching)将轨迹数据对应的骑行路线还原为路段序列。即

二 、问题建模

自行车道规划问题可以描述为:在给定预算的条件下,在研究区域中选取一个路网子集用于自行车道规划,以期构建的自行车道能够最大限度满足用户的骑行需求。下面我们对问题进行细化,用数学语言对其限制条件和目标函数进行描述。假定原始的路网表示为,其中 分别表示路段和节点的集合。那么需要从中选定一个路段子集 来构建自行车道,其中

(一)限制条件 

对于 E'的选定 需要满足以下两个限制条件。

  1. 预算限制

假设路段 对应的建设费用为,总的预算为 ,则需要满足以下条件

                                                               (1)

2.连通限制

假设以每一个连通路段作为一个施工点,为了便于施工和管理(这里的管理我理解的是应该后期的管理和维护),需要对连通路段子集的数量做一个限制。设中所的连通路段子集数量表示为 ,总的施工点数不超过,则有以下限制条件:

                                                                 (2)

(二)优化目标

为了使规划的自行车道效益最大,需要考虑两个目标。第一,对于一个自行车路段而言,其所服务的骑行数量越多越好,所服务的骑行距离越长越好。第二,构建的自行车道覆盖骑行路线中的连续路段越高越好。第一点很好理解,一条路上自行的数量越高那么修建自行车道所带来的收益越高。第二点可以从用户的骑行体验上来考虑,假设规划两个路段,那么这两个路段如果是在一条骑行路线的两个连续路段上肯定比分散在该路线的两个不同位置所带来的骑行体验更好。如下图(图片来源)所示,对于一条骑行路线而言,方案2所带来的骑行体验优于方案1(两者修建的路段长度均为2km)。

在实际情况中,这两个目标可能相互之间可能存在矛盾,所以可以通过设定权重的方式来对二者的重要性进行权衡。对于一条轨迹 而言,其对应收益 可以表示如下:

                                            (3)

其中表示是所有和轨迹相交的连续路段的集合,表示的是路网中最短路段的长度,添加这个参数的目的是为了保证是用于平衡两个目标的参数,当 时表示我们并不在乎这条轨迹的是否被连续路段覆盖;当时表明,如果轨迹被连续路网覆盖越高越好。(注:这里收益计算有两处巧妙的构思:1)每一条轨迹作为收益计算的基本单位,而非采用拟构建的路段作为计算的基本单位。如果我们只考虑第一个目标的话,实际上以拟规划路段作为基本单位也是可以,但是如果同时考虑第二个目标的话,那么这里以单个轨迹作为收益计算的基本单位可以使用更加的数学描述。2) 的参数构建,这个参数的构建一方面保证了在相同覆盖长度条件下,连通路段与越长越好,另一方面当一个连通路段被拆分为两个连通路段时,长的那个连通路段对应的权重更高。)

基于以上,对于一个规划自行车道集合 ,总的收益计算方法如下:

                                       (4)

因此,最终的问题可以表示为:

                             (5)

那么这个问题该如何求解呢,文章中采用的是一种贪心算法,在使用贪心算法之前,作者首先证明了这个最优化问题是一个NP问题。

引理1:给定预算条件下,选定K个连通路段,以期得到路段收益最大是一个NP问题。

证明:

我们可以将这个问题作为一个0-1背包问题(Knapsack problem)的简化问题。首先我们可以将路网中每一个路段 作为一个物品,其对应费用为0-1背包问题中的物品大小,物品收益对应的是该路段对总收益的贡献。则集合就相当于是一个背包,其大小总容量为总预算。如果设定 ,则我们的问题就可以转换为一个0-1背包问题。

因此通过设定,则对于0-1背包问题的任意一个决策实例,我们可以找到在给定预算条件,选定个连接路段使得收益最大问题的一个决策实例。这样,0-1背包问题可以还原/简化(reducible to)到我们当前的问题,因此可以证明当前的问题是NP问题(这里描述的不太好,自己都感觉怪怪的)。

三、问题求解

   (一)问题描述 

因为原始的问题是一个NP问题,所以作者采用贪心算法来对问题进行求解,包括以下三步:

  1. 初始化:选定个路段作为初始的路段,这样可以保证后面最终的连通路段数量不超过个(因为路段扩张是基于连通路网的进行扩展),将个路段的相连的路段作为备选集合。
  2. 路网扩张:在一个次迭代中,从备选集合中选取最佳的路段(也就是单位开销带来收益最大的路段,相当于传统 0-1背包问题中的物件收益与物件大小之比)将其添加到中,并将其关联的路段添加到备选集合当中。
  3. 终止:当预算到达之后,则终止程序。

对应的算法伪代码如下(图片来源):

(二)两种不同的初始化策略

可以发现,对于上述算法,关键的步骤就是选取K个初始路段。文中提出了两种方法,分别如下:

  1. 最大的k个路段:这里的最大是指单位花费所带来收益(即 ),文中分析了方案的缺点在于所得到的连通部分(connected components, 可以将其看作是一个子图)的数量会比较少,无法兼顾多个区域的路网构建需求,因为top k 个路段通常聚集在一起。
  2. 基于空间聚类的初值选取:选取前单位花费收益最高的前百分之一路段 (目的是为了加快聚类速度),然后基于agglomeration hierarchical clustering对其进行聚类,之后选取每一个类中单位花费收益最大的路段(:应该还是top k)。

四、实验

        实验部分主要开展了两组实验:1)比较两种初始化方法在设定不同K值和不同总预算条件下对应的收益;2)比较在clustering-based 初始化条件下,不同值得到的结果。

总体来讲,基于聚类方法的初始化得到的结果一方面能够兼顾空间上的公平性,另一方面取得的收益在大多数情况下比top k的方法更好(如下图12)。另外,在大的时候所得到的结果中个连通子图中更可能存在相互连通的情况(如下图13)。最后放两张原文的图直观的说明下两组实验得到的结果。

五 后记

上面所讲的主要是我个人所关注的部分,这里忽略了对原文中的一部分内容的描述,比如说case study,希望了解详细的可以参见原文(估计对这篇文章感兴趣的人肯定是看过原文的

~><~)。关于文章的复现,对于没有接触过map-matching 的人而言可能这一部分会有点难度,另外algorithm 1中可能还涉及到一些具体数据结构设计(以便加快检索与一条轨迹相交的连通路段的计算)。这部分工作后面如果实现了再来分享。

第一次发论文读书报告相关的博客,主要为了加深下对文章的理解。仔细想想,文章在方法以及应用层面上应该都还有一些改进的空间, 这里暂不做探讨了。

基于共享单车轨迹的自行车道规划(读书笔记)相关推荐

  1. 基于深度学习和多源大数据的浮动共享单车流量预测(附共享单车轨迹数据集下载方式)...

    这篇文章相对比较简单,比较容易复现模型,有相关数据集的可以尝试做一下~ 1.文章信息 <Short-term FFBS demand prediction with multi-source d ...

  2. 基于Qiskit——《量子计算编程实战》读书笔记(五)

    目录 前言 第7章 OpenQASM 关于 OpenQASM 将OpenQASM程序转换为量子电路 例1:取反量子比特 例2:用门操作两个量子比特并测量第一个量子比特 例3:创建一个有两个参数和两个参 ...

  3. 基于Qiskit——《量子计算编程实战》读书笔记(二)

    目录 第3章 量子态.量子寄存器和测量 量子态和寄存器 何为直积? 思考:尝试计算​ 可分离状态.量子纠缠与测量 退相干,T1和T2 关于T1和T2 练习和问题 欢迎加入Qiskit交流群:10643 ...

  4. 基于Qiskit——《量子计算编程实战》读书笔记(七)

    第11章 量子傅里叶变换 经典傅里叶变换 在开始傅里叶变换之前,我希望读者能回忆一下线性空间这一概念: -UP主汉语配音-[线性代数的本质]合集-转载于3Blue1Brown官方双语] 上面分享的视频 ...

  5. 基于Qiskit——《量子计算编程实战》读书笔记(三)

    目录 第4章 使用量子门演化量子态 门 IBM QX通用门集 哈达玛门 泡利门(X, Y, Z) 相门(S)和π/8门(T) 多量子比特门 练习和问题 欢迎加入Qiskit交流群: 106437133 ...

  6. (15) 基于图卷积神经网络的共享单车流量预测

    交通预见未来(3) 基于图卷积神经网络的共享单车流量预测 1.文章信息 <Bike Flow Prediction with Multi-Graph Convolutional Networks ...

  7. 共享单车,真是一面国民照妖镜

    本文转载于ithome http://www.ithome.com/html/it/293877.htm,侵删 ! 话说,共享单车已经在不少城市普及开来,"随骑随走"的模式大大方便 ...

  8. 【task02】共享单车数据挖掘赛

    目录 赛题要点 早高峰共享单车潮汐点优化 数据读取与理解 共享单车轨迹数据 共享单车停车点位(电子围栏)数据 共享单车订单数据 共享单车Top40定位 经纬度匹配 停车点处理 Geohash经纬度匹配 ...

  9. 早高峰共享单车潮汐点的群智优化Baseline

    参考自:coogle数据科学 https://coggle.club/learn/dcic2021/ 一.赛题说明 2021数字中国创新大赛大数据赛道-城市管理大数据专题 二.数据读取与理解 共享单车 ...

最新文章

  1. 程序员的自我修养--链接、装载与库笔记:Linux共享库的组织
  2. 每天一个JavaScript实例-apply和call的使用方法
  3. 【收藏】Docker安装微信
  4. 《Hadoop实战》的笔记-2、Hadoop输入与输出
  5. 《时代周刊》四份NFT杂志封面拍卖结束,总售价为276 ETH
  6. 翻译: Flex Collection 事件和手动通知变化
  7. mappedby 详解
  8. Vue图片、视频预览组件(vue-gallery)
  9. C# BitConverterExt 对BitConverter的GetBytes 方法扩展
  10. 港中文深圳校区计算机研究生怎么样,港中文(深圳)就业报告:应届生年薪40万!这所学校值得读吗?...
  11. 致远互联蜂巢计划3.0:三维进化的协同创新生态
  12. 令人深思的文章:也许你这辈子都只是个小人物
  13. 洛谷—— P1419 寻找段落
  14. 【Vue基础知识总结 6,我的支付宝3面+美团4面+拼多多四面
  15. 关于移相网络的深入分析
  16. 支持麦克风精准定位发言人聚焦并跟踪的会议摄像机特征
  17. 三、项目分工(华为项目管理法-孙科炎读书摘要)
  18. 汉语编程的未来(上帝启示录)
  19. 定制一个Android的Launcher(Home)
  20. 欺骗的艺术:为何Tor大陆被禁止,为何俄罗斯美国成漏洞榜一二,网络安全带你揭秘...

热门文章

  1. error:‘%include‘ expects a file name
  2. hive_hbase一个综合练习题目总共包括以下部分
  3. Linux IPTABLES 防火墙专题讲座 - 上篇-龙小威-专题视频课程
  4. 【SVAC1】SVAC1与H.264支持特性比较
  5. Redis数据库的使用
  6. Python常见实体提取库Duckling,多语言,实体如日期、金额、距离
  7. Idea 使用YapiUpload上传接口到Yapi
  8. 动不动就感冒,用玉屏风来治愈
  9. 聚焦质控 | 如何进行单病种过程质量管理
  10. 高数 | 洛必达法则的隐藏细节、广义洛必达法则(分母无穷直接洛必达)使用条件