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

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

一、背景

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

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

二 、问题建模

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

(一)限制条件 

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

  1. 预算限制

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

                                                            \sum_{e_i\in E'}e'\cdot c\leq B                                                               (1)

      2.连通限制

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

C(E')\leq K                                                                 (2)

(二)优化目标

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

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

                                            (3)

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

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

                                         (4)

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

{\color{Blue} Max: }E'\cdot g; {\color{Blue} s.t.:} \sum_{e_i\in E'} e_i\cdot c\leq B; C(E')\leq K                             (5)

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

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

        证明:

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

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

三、问题求解

   (一)问题描述 

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

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

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

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

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

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

四、实验

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

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

 五 后记

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

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

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于uniapp的共享单车微信小程序是一款方便用户租用共享单车的应用程序。该小程序旨在为用户提供便捷、快速的共享单车租用体验。 该小程序采用uniapp平台开发,兼容多个平台,包括微信平台。这意味着用户可以在微信中轻松访问和使用该小程序,无需下载额外的应用程序。 用户可以在小程序中注册和登录账户,也可以选择使用微信账号登录。一旦登录成功,用户可以查看附近的共享单车站点,并查看每个站点可用的单车数量。 通过小程序地图功能,用户可以快速找到离自己最近的共享单车站点。用户可以选择一辆可用的单车进行租用,并使用小程序生成的二维码进行解锁。在骑行结束后,用户只需将单车停放在任意共享单车站点,并使用小程序生成的二维码进行锁定。 该小程序还提供了用户个人信息管理功能。用户可以在个人中心查看自己的历史骑行记录、账户余额以及个人信息设置。 另外,该小程序还提供了一些附加功能,例如骑行路径规划、扫码支付等。用户可以通过小程序内的导航功能找到最佳路线进行骑行,还可以通过绑定支付宝或微信支付账号实现快速、便捷的支付。 总之,基于uniapp的共享单车微信小程序为用户提供了一种方便、高效的共享单车租赁服务。用户可以通过微信轻松访问和使用该小程序,享受便捷的骑行体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值